From: Qu Wenruo <wqu@suse.com>
To: Wang Yugui <wangyugui@e16-tech.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH PoC 1/9] btrfs: introduce BTRFS_IOC_SCRUB_FS family of ioctls
Date: Fri, 9 Sep 2022 14:57:20 +0800 [thread overview]
Message-ID: <43314bc4-a231-cb42-c4b4-e59682b55428@suse.com> (raw)
In-Reply-To: <20220909121701.B343.409509F4@e16-tech.com>
On 2022/9/9 12:17, Wang Yugui wrote:
> Hi,
>
>> The new ioctls are to address the disadvantages of the existing
>> btrfs_scrub_dev():
>>
>> a One thread per-device
>> This can cause multiple block groups to be marked read-only for scrub,
>> reducing available space temporarily.
>>
>> This also causes higher CPU/IO usage.
>> For scrub, we should use the minimal amount of CPU and cause less
>> IO when possible.
>>
>> b Extra IO for RAID56
>> For data stripes, we will cause at least 2x IO if we run "btrfs scrub
>> start <mnt>".
>> 1x from scrubbing the device of data stripe.
>> The other 1x from scrubbing the parity stripe.
>>
>> This duplicated IO should definitely be avoided
>>
>> c Bad progress report for RAID56
>> We can not report any repaired P/Q bytes at all.
>>
>> The a and b will be addressed by the new one thread per-fs
>> btrfs_scrub_fs ioctl.
>>
>> While c will be addressed by the new btrfs_scrub_fs_progress structure,
>> which has better comments and classification for all errors.
>>
>> This patch is only a skeleton for the new family of ioctls, will return
>> -EOPNOTSUPP for now.
>>
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>> ---
>> fs/btrfs/ioctl.c | 6 ++
>> include/uapi/linux/btrfs.h | 173 +++++++++++++++++++++++++++++++++++++
>> 2 files changed, 179 insertions(+)
>>
>> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
>> index fe0cc816b4eb..3df3bcdf06eb 100644
>> --- a/fs/btrfs/ioctl.c
>> +++ b/fs/btrfs/ioctl.c
>> @@ -5508,6 +5508,12 @@ long btrfs_ioctl(struct file *file, unsigned int
>> return btrfs_ioctl_scrub_cancel(fs_info);
>> case BTRFS_IOC_SCRUB_PROGRESS:
>> return btrfs_ioctl_scrub_progress(fs_info, argp);
>> + case BTRFS_IOC_SCRUB_FS:
>> + return -EOPNOTSUPP;
>> + case BTRFS_IOC_SCRUB_FS_CANCEL:
>> + return -EOPNOTSUPP;
>> + case BTRFS_IOC_SCRUB_FS_PROGRESS:
>> + return -EOPNOTSUPP;
>
> Could we add suspend/resume for scrub when huge filesysem?
It's POC, don't expect those.
It's to prove the idea works, and for discussion around how to improve
the RAID56 scrub situation.
It's not determined to go this path, we may add extra flags without
introducing a full ioctl number.
>
> Best Regards
> Wang Yugui (wangyugui@e16-tech.com)
> 2022/09/09
>
>
next prev parent reply other threads:[~2022-09-09 6:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-03 8:19 [PATCH PoC 0/9] btrfs: scrub: introduce a new family of ioctl, scrub_fs Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 1/9] btrfs: introduce BTRFS_IOC_SCRUB_FS family of ioctls Qu Wenruo
2022-09-03 9:25 ` Wang Yugui
2022-09-03 9:37 ` Qu Wenruo
2022-09-03 9:49 ` Wang Yugui
2022-09-03 11:47 ` kernel test robot
2022-09-03 11:55 ` Qu Wenruo
2022-09-05 2:05 ` [kbuild-all] " Chen, Rong A
2022-09-09 4:17 ` Wang Yugui
2022-09-09 6:57 ` Qu Wenruo [this message]
2022-09-03 8:19 ` [PATCH PoC 2/9] btrfs: scrub: introduce place holder for btrfs_scrub_fs() Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 3/9] btrfs: scrub: introduce a place holder helper scrub_fs_iterate_bgs() Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 4/9] btrfs: scrub: introduce place holder helper scrub_fs_block_group() Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 5/9] btrfs: scrub: add helpers to fulfill csum/extent_generation Qu Wenruo
2022-09-03 12:19 ` kernel test robot
2022-09-03 8:19 ` [PATCH PoC 6/9] btrfs: scrub: submit and wait for the read of each copy Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 7/9] btrfs: scrub: implement metadata verification code for scrub_fs Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 8/9] btrfs: scrub: implement data " Qu Wenruo
2022-09-03 8:19 ` [PATCH PoC 9/9] btrfs: scrub: implement recoverable sectors report " Qu Wenruo
2022-09-03 11:22 ` kernel test robot
2022-09-03 11:33 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43314bc4-a231-cb42-c4b4-e59682b55428@suse.com \
--to=wqu@suse.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=wangyugui@e16-tech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox