Re: [PATCH v6 3/7] btrfs: use the page-cache for super block reading

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 */



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux