]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: split waiting from read_extent_buffer_pages(), drop parameter wait
authorDavid Sterba <dsterba@suse.com>
Thu, 9 Jan 2025 10:24:43 +0000 (11:24 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 13 Jan 2025 13:53:23 +0000 (14:53 +0100)
There are only 2 WAIT_* values left for wait parameter, we can encode
this to the function name if the waiting functionality is split.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h

index ef3121b55c50b02686aad378f3223deff6a1a045..f09db62e61a1b0e2b8b319f9605883fe0c86cf9d 100644 (file)
@@ -226,7 +226,7 @@ int btrfs_read_extent_buffer(struct extent_buffer *eb,
 
        while (1) {
                clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags);
-               ret = read_extent_buffer_pages(eb, WAIT_COMPLETE, mirror_num, check);
+               ret = read_extent_buffer_pages(eb, mirror_num, check);
                if (!ret)
                        break;
 
index 4ccf629d212739255c24d1adebb329bcc490af3e..d7a63b2e33b07c47531229eed28bcbd5f888dda9 100644 (file)
@@ -3479,8 +3479,8 @@ static void end_bbio_meta_read(struct btrfs_bio *bbio)
        bio_put(&bbio->bio);
 }
 
-int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
-                            const struct btrfs_tree_parent_check *check)
+int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num,
+                                   const struct btrfs_tree_parent_check *check)
 {
        struct btrfs_bio *bbio;
        bool ret;
@@ -3498,7 +3498,7 @@ int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
 
        /* Someone else is already reading the buffer, just wait for it. */
        if (test_and_set_bit(EXTENT_BUFFER_READING, &eb->bflags))
-               goto done;
+               return 0;
 
        /*
         * Between the initial test_bit(EXTENT_BUFFER_UPTODATE) and the above
@@ -3538,14 +3538,21 @@ int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
                }
        }
        btrfs_submit_bbio(bbio, mirror_num);
+       return 0;
+}
 
-done:
-       if (wait == WAIT_COMPLETE) {
-               wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_READING, TASK_UNINTERRUPTIBLE);
-               if (!test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
-                       return -EIO;
-       }
+int read_extent_buffer_pages(struct extent_buffer *eb, int mirror_num,
+                            const struct btrfs_tree_parent_check *check)
+{
+       int ret;
 
+       ret = read_extent_buffer_pages_nowait(eb, mirror_num, check);
+       if (ret < 0)
+               return ret;
+
+       wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_READING, TASK_UNINTERRUPTIBLE);
+       if (!test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
+               return -EIO;
        return 0;
 }
 
@@ -4276,7 +4283,7 @@ void btrfs_readahead_tree_block(struct btrfs_fs_info *fs_info,
                return;
        }
 
-       ret = read_extent_buffer_pages(eb, WAIT_NONE, 0, &check);
+       ret = read_extent_buffer_pages_nowait(eb, 0, &check);
        if (ret < 0)
                free_extent_buffer_stale(eb);
        else
index ca09fc31e2de9915a00ea08cfdf9d291d2cb80a5..6c5328bfabc22a40f47e40c66cd178ce56710020 100644 (file)
@@ -261,10 +261,11 @@ struct extent_buffer *find_extent_buffer(struct btrfs_fs_info *fs_info,
                                         u64 start);
 void free_extent_buffer(struct extent_buffer *eb);
 void free_extent_buffer_stale(struct extent_buffer *eb);
-#define WAIT_NONE      0
-#define WAIT_COMPLETE  1
-int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
+int read_extent_buffer_pages(struct extent_buffer *eb, int mirror_num,
                             const struct btrfs_tree_parent_check *parent_check);
+int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num,
+                                   const struct btrfs_tree_parent_check *parent_check);
+
 static inline void wait_on_extent_buffer_writeback(struct extent_buffer *eb)
 {
        wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK,