mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
btrfs: split waiting from read_extent_buffer_pages(), drop parameter wait
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>
This commit is contained in:
parent
db9eef2ea8
commit
248c4ff393
|
@ -226,7 +226,7 @@ int btrfs_read_extent_buffer(struct extent_buffer *eb,
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags);
|
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)
|
if (!ret)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -3479,8 +3479,8 @@ static void end_bbio_meta_read(struct btrfs_bio *bbio)
|
||||||
bio_put(&bbio->bio);
|
bio_put(&bbio->bio);
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
|
int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num,
|
||||||
const struct btrfs_tree_parent_check *check)
|
const struct btrfs_tree_parent_check *check)
|
||||||
{
|
{
|
||||||
struct btrfs_bio *bbio;
|
struct btrfs_bio *bbio;
|
||||||
bool ret;
|
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. */
|
/* Someone else is already reading the buffer, just wait for it. */
|
||||||
if (test_and_set_bit(EXTENT_BUFFER_READING, &eb->bflags))
|
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
|
* 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);
|
btrfs_submit_bbio(bbio, mirror_num);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
done:
|
int read_extent_buffer_pages(struct extent_buffer *eb, int mirror_num,
|
||||||
if (wait == WAIT_COMPLETE) {
|
const struct btrfs_tree_parent_check *check)
|
||||||
wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_READING, TASK_UNINTERRUPTIBLE);
|
{
|
||||||
if (!test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
|
int ret;
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4276,7 +4283,7 @@ void btrfs_readahead_tree_block(struct btrfs_fs_info *fs_info,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = read_extent_buffer_pages(eb, WAIT_NONE, 0, &check);
|
ret = read_extent_buffer_pages_nowait(eb, 0, &check);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
free_extent_buffer_stale(eb);
|
free_extent_buffer_stale(eb);
|
||||||
else
|
else
|
||||||
|
|
|
@ -261,10 +261,11 @@ struct extent_buffer *find_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||||
u64 start);
|
u64 start);
|
||||||
void free_extent_buffer(struct extent_buffer *eb);
|
void free_extent_buffer(struct extent_buffer *eb);
|
||||||
void free_extent_buffer_stale(struct extent_buffer *eb);
|
void free_extent_buffer_stale(struct extent_buffer *eb);
|
||||||
#define WAIT_NONE 0
|
int read_extent_buffer_pages(struct extent_buffer *eb, int mirror_num,
|
||||||
#define WAIT_COMPLETE 1
|
|
||||||
int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
|
|
||||||
const struct btrfs_tree_parent_check *parent_check);
|
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)
|
static inline void wait_on_extent_buffer_writeback(struct extent_buffer *eb)
|
||||||
{
|
{
|
||||||
wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK,
|
wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user