On 2017/10/11 6:22, Satoru Takeuchi wrote: > At Tue, 3 Oct 2017 17:12:39 +0900, > Misono, Tomohiro wrote: >> >> This patch updates help/document of "btrfs device remove" in two points: >> >> 1. Add explanation of 'missing' for 'device remove'. This is only >> written in wikipage currently. >> (https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices) >> >> 2. Add example of device removal in the man document. This is because >> that explanation of "remove" says "See the example section below", but >> there is no example of removal currently. >> >> Signed-off-by: Tomohiro Misono <misono.tomoh...@jp.fujitsu.com> >> --- >> Documentation/btrfs-device.asciidoc | 19 +++++++++++++++++++ >> cmds-device.c | 10 +++++++++- >> 2 files changed, 28 insertions(+), 1 deletion(-) >> >> diff --git a/Documentation/btrfs-device.asciidoc >> b/Documentation/btrfs-device.asciidoc >> index 88822ec..dc523a9 100644 >> --- a/Documentation/btrfs-device.asciidoc >> +++ b/Documentation/btrfs-device.asciidoc >> @@ -75,6 +75,10 @@ The operation can take long as it needs to move all data >> from the device. >> It is possible to delete the device that was used to mount the filesystem. >> The >> device entry in mount table will be replaced by another device name with the >> lowest device id. >> ++ >> +If device is mounted as degraded mode (-o degraded), special term "missing" >> +can be used for <device>. In that case, the first device that is described >> by >> +the filesystem metadata, but not presented at the mount time will be >> removed. >> >> *delete* <device>|<devid> [<device>|<devid>...] <path>:: >> Alias of remove kept for backward compatibility >> @@ -206,6 +210,21 @@ data or the block groups occupy the whole first device. >> The device size of '/dev/sdb' as seen by the filesystem remains unchanged, >> but >> the logical space from 50-100GiB will be unused. >> >> +==== REMOVE DEVICE ==== > > It's a part of "TYPICAL USECASES" section. So it's also necessary to modify > the following sentence > > === > See the example section below. > === > > to as follow. > > === > See the *TYPICAL USECASES* section below. > === > > Or just removing the above mentioned sentence is also OK since there is > "See the section *TYPICAL USECASES* for some examples." in "DEVICE MANAGEMENT" > section. > >> + >> +Device removal must satisfy the profile constraints, otherwise the command >> +fails. For example: >> + >> + $ btrfs device remove /dev/sda /mnt >> + $ ERROR: error removing device '/dev/sda': unable to go below two devices >> on raid1 > > s/^$ ERROR/ERROR/ > >> + >> + >> +In order to remove a device, you need to convert profile in this case: >> + >> + $ btrfs balance start -mconvert=dup /mnt >> + $ btrfs balance start -dconvert=single /mnt > > It's simpler to convert both the RAID configuration of data and metadata > by the following one command. > > $ btrfs balance -mconvert=dup -dconvert=single /mnt > >> + $ btrfs device remove /dev/sda /mnt >> + >> DEVICE STATS >> ------------ >> >> diff --git a/cmds-device.c b/cmds-device.c >> index 4337eb2..6cb53ff 100644 >> --- a/cmds-device.c >> +++ b/cmds-device.c >> @@ -224,9 +224,16 @@ static int _cmd_device_remove(int argc, char **argv, >> return !!ret; >> } >> >> +#define COMMON_USAGE_REMOVE_DELETE \ >> + "", \ >> + "If 'missing' is specified for <device>, the first device that is", \ >> + "described by the filesystem metadata, but not presented at the", \ >> + "mount time will be removed." >> + >> static const char * const cmd_device_remove_usage[] = { >> "btrfs device remove <device>|<devid> [<device>|<devid>...] <path>", >> "Remove a device from a filesystem", >> + COMMON_USAGE_REMOVE_DELETE, >> NULL >> }; >> >> @@ -237,7 +244,8 @@ static int cmd_device_remove(int argc, char **argv) >> >> static const char * const cmd_device_delete_usage[] = { >> "btrfs device delete <device>|<devid> [<device>|<devid>...] <path>", >> - "Remove a device from a filesystem", >> + "Remove a device from a filesystem (alias of \"btrfs device remove\")", >> + COMMON_USAGE_REMOVE_DELETE, >> NULL >> }; > > This snippet is not related to the description of this patch. > Dividing this patch is better. > > Thanks, > Satoru
Thanks for the review and I will follow the advice. I think there should be 'missing-all' too to remove all the missing devices, and will send the patches again. Regards, Tomohiro > >> >> -- >> 2.9.5 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in >> the body of a message to majord...@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html