diff options
author | Goldwyn Rodrigues <rgoldwyn@suse.de> | 2021-04-08 07:40:25 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2021-06-21 15:19:04 +0200 |
commit | dc56219fe22e9d2f395f5c58ba3277f8df4cff84 (patch) | |
tree | 8e74d80f25cb3f87a0214de0fae7c728fed6a4fa /fs/btrfs/extent_io.c | |
parent | 13311e74253fe64329390df80bed3f07314ddd61 (diff) | |
download | lwn-dc56219fe22e9d2f395f5c58ba3277f8df4cff84.tar.gz lwn-dc56219fe22e9d2f395f5c58ba3277f8df4cff84.zip |
btrfs: correct try_lock_extent() usage in read_extent_buffer_subpage()
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.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index dee2dafbc872..74ba2e1a3927 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -6184,10 +6184,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) |