On Tue, Feb 11, 2020 at 03:32:21AM +0900, Johannes Thumshirn wrote:
> @@ -7327,16 +7324,20 @@ void btrfs_scratch_superblocks(struct block_device *bdev, const char *device_pat
>
> for (copy_num = 0; copy_num < BTRFS_SUPER_MIRROR_MAX;
> copy_num++) {
> + struct page *page;
>
> - if (btrfs_read_dev_one_super(bdev, copy_num, &bh))
> + disk_super = btrfs_read_dev_one_super(bdev, copy_num);
> + if (IS_ERR(disk_super))
> continue;
>
> - disk_super = (struct btrfs_super_block *)bh->b_data;
> -
> memset(&disk_super->magic, 0, sizeof(disk_super->magic));
> - set_buffer_dirty(bh);
> - sync_dirty_buffer(bh);
> - brelse(bh);
> +
> + page = virt_to_page(disk_super);
> + set_page_dirty(page);
> + lock_page(page); /* write_on_page() unlocks the page */
> + write_one_page(page);
fs/btrfs/volumes.c: In function ‘btrfs_scratch_superblocks’:
fs/btrfs/volumes.c:7338:3: warning: ignoring return value of ‘write_one_page’, declared with attribute warn_unused_result [-Wunused-result]
7338 | write_one_page(page);
> + btrfs_release_disk_super(disk_super);
> +
> }
>
> /* Notify udev that device has changed */