try_lock_extent() returns 1 on success or 0 for failure and not an error
code. If try_lock_extent() fails, read_extent_buffer_subpage() returns
zero indicating subpage extent read success.

Return EAGAIN/EWOULDBLOCK if try_lock_extent() fails in locking the
extent.

Signed-off-by: Goldwyn Rodrigues <rgold...@suse.com>
---
 fs/btrfs/extent_io.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 7ad2169e7487..3536feedd6c5 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -5914,10 +5914,8 @@ static int read_extent_buffer_subpage(struct 
extent_buffer *eb, int wait,
        io_tree = &BTRFS_I(fs_info->btree_inode)->io_tree;
 
        if (wait == WAIT_NONE) {
-               ret = try_lock_extent(io_tree, eb->start,
-                                     eb->start + eb->len - 1);
-               if (ret <= 0)
-                       return ret;
+               if (!try_lock_extent(io_tree, eb->start, eb->start + eb->len - 
1))
+                       return -EAGAIN;
        } else {
                ret = lock_extent(io_tree, eb->start, eb->start + eb->len - 1);
                if (ret < 0)
-- 
2.30.2

Reply via email to