[gparted] Copy XFS UUID when copying the file system (!85)
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Copy XFS UUID when copying the file system (!85)
- Date: Sun, 6 Jun 2021 19:18:53 +0000 (UTC)
commit 39e7156697a3734edfcd8b5ed8047326c313f976
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date: Thu Jun 3 21:33:33 2021 +0100
Copy XFS UUID when copying the file system (!85)
For the same reason as in the previous commit, the UUID is copied when
copying every file system type except for XFS, where a new XFS is
created with a new UUID.
Again preview of the copy operation expects the UUID to be copied.
(Look in Partition > Information of the source and pasted partitions
before the operation is applied).
Fix as before by specifying the desired file system UUID when creating
the new XFS as part of the copy operation.
However there is an extra complication. The XFS kernel driver refuses
to mount a file system with a duplicate UUID of an already mounted XFS.
# mkfs.xfs -L xfs_copy /dev/sdb1
# mount /dev/sdb1 /mnt/1
# tail -2 /var/log/messages
Jun 3 21:41:24 localhost kernel: XFS (sdb1): Mounting V5 Filesystem
Jun 3 21:41:24 localhost kernel: XFS (sdb1): Ending clean mount
# /dev/sdb1: LABEL="xfs_copy" UUID="d654fc7f-e417-4ec6-88e8-8a7d0d46b7d8" TYPE="xfs"
# mkfs.xfs -L xfs_copy -m uuid="d654fc7f-e417-4ec6-88e8-8a7d0d46b7d8" /dev/sdb2
# mount /dev/sdb2 /mnt/2
mount: wrong fs type, bad option, bad superblock on /dev/sdb2,
missing codepage or helper program, or other error.
In some cases useful info is found in syslog - try
dmesg | tail or so.
# echo $?
32
# tail -1 /var/log/messages
Jun 3 21:41:31 localhost kernel: XFS (sdb2): File system has duplicate UUID
d654fc7f-e417-4ec6-88e8-8a7d0d46b7d8 - can't mount
Handle this specifying the needed option [1] when mounting the second
XFS during the copy.
# mount -o nouuid /dev/sdb2 /mnt/2
# mount | grep /dev/sdb
/dev/sdb1 on /mnt/1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdb1 on /mnt/1 type xfs (rw,relatime,seclabel,nouuid,attr2,inode64,noquota)
Duplicating the UUID may seem troublesome, but it is being done:
1. To make the GParted copied XFS be as much a clone as possible, to
match what is does with other file systems.
2. It has a valid use case; of cloning a Linux installation to a new
drive or restoring a partition image backup. In these cases it is
much simpler if the UUID of the copy remains the same because it
avoids having to edit GRUB2 configuration and fstab file system
mounting which is nearly always done via UUID.
3. GParted has the new UUID operation, to change the UUID for cases
when a copied file system needs to be mounted at the same time as
the source.
[1] xfs(5) - xfs - layout, mount options, and supported file attributes
for the XFS filesystem
https://man7.org/linux/man-pages/man5/xfs.5.html
"MOUNT OPTIONS
...
nouuid Don't check for double mounted file systems using the file
system uuid.
"
Closes !85 - Make XFS copy duplicate the file system label and UUID
src/xfs.cc | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/src/xfs.cc b/src/xfs.cc
index fc9d5931..3a4dc695 100644
--- a/src/xfs.cc
+++ b/src/xfs.cc
@@ -229,6 +229,7 @@ bool xfs::copy( const Partition & src_part,
bool success = true ;
success &= ! execute_command("mkfs.xfs -f -L " + Glib::shell_quote(dest_part.get_filesystem_label()) +
+ " -m uuid=" + Glib::shell_quote(dest_part.uuid) +
" " + Glib::shell_quote(dest_part.get_path()),
operationdetail, EXEC_CHECK_STATUS|EXEC_CANCEL_SAFE);
if ( ! success )
@@ -259,9 +260,9 @@ bool xfs::copy( const Partition & src_part,
if ( success )
{
- success &= ! execute_command( "mount -v -t xfs " + Glib::shell_quote( dest_part.get_path() ) +
- " " + Glib::shell_quote( dest_mount_point ),
- operationdetail, EXEC_CHECK_STATUS );
+ success &= ! execute_command("mount -v -t xfs -o nouuid " +
Glib::shell_quote(dest_part.get_path()) +
+ " " + Glib::shell_quote(dest_mount_point),
+ operationdetail, EXEC_CHECK_STATUS);
if ( success )
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]