linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anand Jain <anand.jain@oracle.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 0/9] btrfs-progs: btrfstune: accept multiple devices and cleanup
Date: Thu, 8 Jun 2023 12:26:46 +0800	[thread overview]
Message-ID: <a5dab7a2-a65d-052e-a56d-c37c2a7f6b36@oracle.com> (raw)
In-Reply-To: <d8a2bb05-7f5b-baa9-fd4c-082acdbce9ce@gmx.com>




>>   As of now btrfstune works with only one regular file. Not possible
>>   to use multiple regular files. Unless loop device is used. This
>>   set fixes this limitation.
> 
> Here I want to make the point clear, is the patchset intended to handle
> ONE multi-device btrfs?
> 
> If that's the case, then my initial concerns on the multiple different
> fses case is still a concern.


>> $ btrfstune -m --noscan ./td2 ./td1 ./td3
>> warning, device 1 is missing
>> ERROR: cannot read chunk root
>> ERROR: open ctree failed
>>
>> $ btrfstune -m --noscan ./td1 ./td2 ./td3
>> $ echo $?
>> 0
> 
> This is exactly my concern. > We're combining target fs and device assembly into the same argument 
list.

> Thus changing the order of argument would lead to different results.

  yeah. --device solves it.


>>   btrfstune -m --noscan --devices=./td2,./td3  ./td1
> 
> That much better, less confusion.
> 
> Furthermore, the --devices (Although my initial proposal looks more like
> "--device td2 --device td3", which makes parsing a little simpler) can
> be applied to all other btrfs-progs, allowing a global way to assemble
> the device list.
> 

  --device td2 --device td3.. that makes it same as mount.
  I am not yet sure if it can be a global option though.

>>
>>
>>> - What's the proper error handling if operation on one of the parameter
>>>    failed if we choose to do the tune for all involved devices?
>>>    Should we revert the operation on the succeeded ones?
>>>    Should we continue on the remaining ones?
>>
>>   Hm. That's a possible scenario even without this patch.!
>>   However, we use the CHANGING_FSID flag to handle split-brain scenarios
>>   with incomplete metadata_uuid changes. Currently, the kernel
>>   fixes this situation based on the flag and generation number.
>>   However, kernel should fail these split-brain scenarios and
>>   instead address them in the btrfs-progs, which is wip.
>>
>>> I understand it's better to add the ability to do manual scan, but it
>>> looks like the multi-device arguments can be a little more complex than
>>> what we thought.
>>
>>   Hmm How? The device list enumeration logic which handles the automatic
>>   scan also handle the command line provided device list. So both are
>>   same.
> 
> The "--device=" option you proposed is exactly the way to handle it.

   Ok.


> 
> Thanks,
> Qu
>>
>>> At least I think we should add a dedicate --scan/--device option, and
>>> allow multiple --scan/--device to be provided for device list assembly,
>>> then still keep the single argument to avoid possible confusion.
>>
>>   btrfs-progs scans all the block devices in the system, by default.
>>   so IMO,
>>   "--noscan" is reasonable, similar to 'btrfs in dump-tree --noscan'.
>>
>>   I am ok with with --device/--devices option.
>>   So we could scan only commnd line provided devices
>>   with --noscan:
>>
>>     btrfstune -m --noscan --devices=./td1,/dev/sda1 ./td3
>>
>>   And to scan both command line and the block devices
>>   without --noscan:
>>
>>     btrfstune -m --devices=./td1 ./td3
>>
>>
>> Thanks, Anand
>>
>>>
>>> This also solves the problem I mentioned above. If multiple filesystems
>>> are provided, they are just assembled into device list, won't have an
>>> impact on the tune target.
>>>
>>> And since we still have a single device to tune, there is no extra error
>>> handling, nor confusion.
>>>
>>> Thanks,
>>> Qu
>>>
>>>>
>>>> Patches 1 to 5 primarily consist of cleanups. Patches 6 and 8 serve as
>>>> preparatory changes. Patch 7 enables btrfstune to accept multiple
>>>> devices. Patch 9 ensures that btrfstune no longer automatically uses 
>>>> the
>>>> system block devices when --noscan option is specified.
>>>> Patches 10 and 11 are help and documentation part.
>>>>
>>>> Anand Jain (11):
>>>>    btrfs-progs: check_mounted_where declare is_btrfs as bool
>>>>    btrfs-progs: check_mounted_where pack varibles type by size
>>>>    btrfs-progs: rename struct open_ctree_flags to open_ctree_args
>>>>    btrfs-progs: optimize device_list_add
>>>>    btrfs-progs: simplify btrfs_scan_one_device()
>>>>    btrfs-progs: factor out btrfs_scan_stdin_devices
>>>>    btrfs-progs: tune: add stdin device list
>>>>    btrfs-progs: refactor check_where_mounted with noscan option
>>>>    btrfs-progs: tune: add noscan option
>>>>    btrfs-progs: tune: add help for multiple devices and noscan option
>>>>    btrfs-progs: Documentation: update btrfstune --noscan option
>>>>
>>>>   Documentation/btrfstune.rst |  4 ++++
>>>>   btrfs-find-root.c           |  2 +-
>>>>   check/main.c                |  2 +-
>>>>   cmds/filesystem.c           |  2 +-
>>>>   cmds/inspect-dump-tree.c    | 39 
>>>> ++++---------------------------------
>>>>   cmds/rescue.c               |  4 ++--
>>>>   cmds/restore.c              |  2 +-
>>>>   common/device-scan.c        | 39 
>>>> +++++++++++++++++++++++++++++++++++++
>>>>   common/device-scan.h        |  1 +
>>>>   common/open-utils.c         | 21 +++++++++++---------
>>>>   common/open-utils.h         |  3 ++-
>>>>   common/utils.c              |  3 ++-
>>>>   image/main.c                |  4 ++--
>>>>   kernel-shared/disk-io.c     |  8 ++++----
>>>>   kernel-shared/disk-io.h     |  4 ++--
>>>>   kernel-shared/volumes.c     | 14 +++++--------
>>>>   mkfs/main.c                 |  2 +-
>>>>   tune/main.c                 | 25 +++++++++++++++++++-----
>>>>   18 files changed, 104 insertions(+), 75 deletions(-)
>>>>
>>

      reply	other threads:[~2023-06-08  4:27 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-07  9:59 [PATCH 0/9] btrfs-progs: btrfstune: accept multiple devices and cleanup Anand Jain
2023-06-07  9:59 ` [PATCH 01/11] btrfs-progs: check_mounted_where declare is_btrfs as bool Anand Jain
2023-06-07  9:59 ` [PATCH 02/11] btrfs-progs: check_mounted_where pack varibles type by size Anand Jain
2023-06-07  9:59 ` [PATCH 03/11] btrfs-progs: rename struct open_ctree_flags to open_ctree_args Anand Jain
2023-06-07  9:59 ` [PATCH 04/11] btrfs-progs: optimize device_list_add Anand Jain
2023-06-07  9:59 ` [PATCH 05/11] btrfs-progs: simplify btrfs_scan_one_device() Anand Jain
2023-06-07  9:59 ` [PATCH 06/11] btrfs-progs: factor out btrfs_scan_stdin_devices Anand Jain
2023-06-07  9:59 ` [PATCH 07/11] btrfs-progs: tune: add stdin device list Anand Jain
2023-06-07  9:59 ` [PATCH 08/11] btrfs-progs: refactor check_where_mounted with noscan option Anand Jain
2023-06-07  9:59 ` [PATCH 09/11] btrfs-progs: tune: add " Anand Jain
2023-06-07  9:59 ` [PATCH 10/11] btrfs-progs: tune: add help for multiple devices and " Anand Jain
2023-06-07  9:59 ` [PATCH 11/11] btrfs-progs: Documentation: update btrfstune --noscan option Anand Jain
2023-06-07 10:43 ` [PATCH 0/9] btrfs-progs: btrfstune: accept multiple devices and cleanup Anand Jain
2023-06-07 11:06 ` Qu Wenruo
2023-06-08  0:20   ` Anand Jain
2023-06-08  1:42     ` Qu Wenruo
2023-06-08  4:26       ` Anand Jain [this message]

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=a5dab7a2-a65d-052e-a56d-c37c2a7f6b36@oracle.com \
    --to=anand.jain@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.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;
as well as URLs for NNTP newsgroup(s).