fuse_fiemap() must honor return value of fuse_request_fiemap(). Otherwise: > FIEMAP does not return errors in case of errors returned by fused. > It is a very bad bug, in case of error the file looks as empty!
Signed-off-by: Alexey Kuznetsov <[email protected]> Signed-off-by: Maxim Patlasov <[email protected]> --- fs/fuse/file.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index f362d10..a24d89b 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -3821,7 +3821,6 @@ int fuse_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, } for (;;) { - int res; int last = 0; unsigned int npages; u32 cur_max = fieinfo->fi_extents_max - fieinfo->fi_extents_mapped; @@ -3835,8 +3834,8 @@ int fuse_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, cur_max = (npages * PAGE_SIZE) / sizeof(struct fiemap_extent); } - res = fuse_request_fiemap(inode, cur_max, &start, &len, &last, fieinfo); - if (res < 0) + err = fuse_request_fiemap(inode, cur_max, &start, &len, &last, fieinfo); + if (err < 0) goto out; if (len == 0 || last) _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
