[RESEND] btrfs-progs: btrfstune -M|m drop test_uuid_unique
diff mbox series

Message ID 20191010075352.8352-1-anand.jain@oracle.com
State New
Headers show
Series
  • [RESEND] btrfs-progs: btrfstune -M|m drop test_uuid_unique
Related show

Commit Message

Anand Jain Oct. 10, 2019, 7:53 a.m. UTC
It's common to copy/snapshot an OS image to run another instance of the OS.
A duplicate fsid can't be mounted on the same system unless the fsid is
changed by using btrfstune -m.

However in some circumstances the image needs to go back to the original
fsid /metadata_uuid.

As of now btrfstune -M fails if the specified uuid isn't unique, as show
below.

btrfstune -M $(btrfs in dump-super ./2-2g.img | grep metadata_uuid | \
					awk '{print $2}') ./2-2g.img
ERROR: fsid 87f8d9c5-a8b7-438e-a890-17bbe11c95e5 is not unique

But as we are changing the fsid of an unmounted image, so its ok to
leave it to the users choice if the fsid is not unique, so that the
image can be sent back the system where it was used with that fsid.

So this patch drops the check test_uuid_unique() in btrfstune -M|m.
Thanks.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
Previous sent patch and its discussions:
https://patchwork.kernel.org/patch/11134157/

 btrfstune.c | 4 ----
 1 file changed, 4 deletions(-)

Comments

Anand Jain Oct. 17, 2019, 1:03 a.m. UTC | #1
David,

Ping (4th time).

Per general rule of thumb tools like btrfs-progs must be flexible and
kernel should be harden for the duplicate fsid.

This patch relaxes the unnecessary check in btrfstune -M.

Without this patch there is no way to undo a changed fsid on the system.

Per original author there is no reasonable explanation why this check is
there in the first place until now.

IMO this patch is good integrate.

Please let me know if otherwise.

Thanks, Anand


On 10/10/19 3:53 PM, Anand Jain wrote:
> It's common to copy/snapshot an OS image to run another instance of the OS.
> A duplicate fsid can't be mounted on the same system unless the fsid is
> changed by using btrfstune -m.
> 
> However in some circumstances the image needs to go back to the original
> fsid /metadata_uuid.
> 
> As of now btrfstune -M fails if the specified uuid isn't unique, as show
> below.
> 
> btrfstune -M $(btrfs in dump-super ./2-2g.img | grep metadata_uuid | \
> 					awk '{print $2}') ./2-2g.img
> ERROR: fsid 87f8d9c5-a8b7-438e-a890-17bbe11c95e5 is not unique
> 
> But as we are changing the fsid of an unmounted image, so its ok to
> leave it to the users choice if the fsid is not unique, so that the
> image can be sent back the system where it was used with that fsid.
> 
> So this patch drops the check test_uuid_unique() in btrfstune -M|m.
> Thanks.
> 
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> ---
> Previous sent patch and its discussions:
> https://patchwork.kernel.org/patch/11134157/
> 
>   btrfstune.c | 4 ----
>   1 file changed, 4 deletions(-)
> 
> diff --git a/btrfstune.c b/btrfstune.c
> index afa3aae35412..4befcadef8b1 100644
> --- a/btrfstune.c
> +++ b/btrfstune.c
> @@ -570,10 +570,6 @@ int BOX_MAIN(btrfstune)(int argc, char *argv[])
>   			error("could not parse UUID: %s", new_fsid_str);
>   			return 1;
>   		}
> -		if (!test_uuid_unique(new_fsid_str)) {
> -			error("fsid %s is not unique", new_fsid_str);
> -			return 1;
> -		}
>   	}
>   
>   	fd = open(device, O_RDWR);
>
David Sterba Oct. 17, 2019, 3:53 p.m. UTC | #2
On Thu, Oct 17, 2019 at 09:03:00AM +0800, Anand Jain wrote:
> Ping (4th time).

Anand, the patch queue is big and ever growing, pinging can help to
bring back the attention but for patches that have disgreements or
unclear reasoning the turnaround time can be longer.

Specifically, patches that have impact on usability extra care must be
taken not to cause chaos by seemingly "simple" change.

> IMO this patch is good integrate.

I'll reply under the previous submission as there is the discussion in
progress.

Patch
diff mbox series

diff --git a/btrfstune.c b/btrfstune.c
index afa3aae35412..4befcadef8b1 100644
--- a/btrfstune.c
+++ b/btrfstune.c
@@ -570,10 +570,6 @@  int BOX_MAIN(btrfstune)(int argc, char *argv[])
 			error("could not parse UUID: %s", new_fsid_str);
 			return 1;
 		}
-		if (!test_uuid_unique(new_fsid_str)) {
-			error("fsid %s is not unique", new_fsid_str);
-			return 1;
-		}
 	}
 
 	fd = open(device, O_RDWR);