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

Reply via email to