Merge tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
Pull btrfs fixes from David Sterba:
"Several xes and one old ioctl deprecation. Namely there's fix for
crashes/warnings with lzo compression that was suspected to be caused
by first pull merge resolution, but it was a different bug.
Summary:
- regression fix for a crash in lzo due to missing boundary checks of
the page array
- fix crashes on ARM64 due to missing barriers when synchronizing
status bits between work queues
- silence lockdep when reading chunk tree during mount
- fix false positive warning in integrity checker on devices with
disabled write caching
- fix signedness of bitfields in scrub
- start deprecation of balance v1 ioctl"
* tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
btrfs: deprecate BTRFS_IOC_BALANCE ioctl
btrfs: make 1-bit bit-fields of scrub_page unsigned int
btrfs: check-integrity: fix a warning on write caching disabled disk
btrfs: silence lockdep when reading chunk tree during mount
btrfs: fix memory ordering between normal and ordered work functions
btrfs: fix a out-of-bound access in copy_compressed_data_to_page()
This commit is contained in:
@@ -3978,11 +3978,23 @@ static void btrfs_end_empty_barrier(struct bio *bio)
|
||||
*/
|
||||
static void write_dev_flush(struct btrfs_device *device)
|
||||
{
|
||||
struct request_queue *q = bdev_get_queue(device->bdev);
|
||||
struct bio *bio = device->flush_bio;
|
||||
|
||||
#ifndef CONFIG_BTRFS_FS_CHECK_INTEGRITY
|
||||
/*
|
||||
* When a disk has write caching disabled, we skip submission of a bio
|
||||
* with flush and sync requests before writing the superblock, since
|
||||
* it's not needed. However when the integrity checker is enabled, this
|
||||
* results in reports that there are metadata blocks referred by a
|
||||
* superblock that were not properly flushed. So don't skip the bio
|
||||
* submission only when the integrity checker is enabled for the sake
|
||||
* of simplicity, since this is a debug tool and not meant for use in
|
||||
* non-debug builds.
|
||||
*/
|
||||
struct request_queue *q = bdev_get_queue(device->bdev);
|
||||
if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags))
|
||||
return;
|
||||
#endif
|
||||
|
||||
bio_reset(bio);
|
||||
bio->bi_end_io = btrfs_end_empty_barrier;
|
||||
|
||||
Reference in New Issue
Block a user