mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
btrfs: add helper to clear EXTENT_BUFFER_READING
We are clearing the bit and waking up any waiters in two different places. Factor that code out into a static helper function. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Tavian Barnes <tavianator@tavianator.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c79f57eafc
commit
1e2d183709
@ -4260,6 +4260,13 @@ void set_extent_buffer_uptodate(struct extent_buffer *eb)
|
||||
}
|
||||
}
|
||||
|
||||
static void clear_extent_buffer_reading(struct extent_buffer *eb)
|
||||
{
|
||||
clear_bit(EXTENT_BUFFER_READING, &eb->bflags);
|
||||
smp_mb__after_atomic();
|
||||
wake_up_bit(&eb->bflags, EXTENT_BUFFER_READING);
|
||||
}
|
||||
|
||||
static void end_bbio_meta_read(struct btrfs_bio *bbio)
|
||||
{
|
||||
struct extent_buffer *eb = bbio->private;
|
||||
@ -4294,9 +4301,7 @@ static void end_bbio_meta_read(struct btrfs_bio *bbio)
|
||||
bio_offset += len;
|
||||
}
|
||||
|
||||
clear_bit(EXTENT_BUFFER_READING, &eb->bflags);
|
||||
smp_mb__after_atomic();
|
||||
wake_up_bit(&eb->bflags, EXTENT_BUFFER_READING);
|
||||
clear_extent_buffer_reading(eb);
|
||||
free_extent_buffer(eb);
|
||||
|
||||
bio_put(&bbio->bio);
|
||||
@ -4330,9 +4335,7 @@ int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num,
|
||||
* will now be set, and we shouldn't read it in again.
|
||||
*/
|
||||
if (unlikely(test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))) {
|
||||
clear_bit(EXTENT_BUFFER_READING, &eb->bflags);
|
||||
smp_mb__after_atomic();
|
||||
wake_up_bit(&eb->bflags, EXTENT_BUFFER_READING);
|
||||
clear_extent_buffer_reading(eb);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user