Commit Graph

4086 Commits

Author SHA1 Message Date
Mike Fleetwood 0c13855d52 Add labelling of mounted xfs (#163)
XFS also supports labelling of the file system while it is mounted.
This was added into Linux kernel 4.18 [1] and xfsprogs 4.17.0 [2].
These versions are newer than available in older but still supported
distributions so we'll need to detect versions before enabling support.
These are the oldest releases of distributions which meet the
requirements.

    Distro             EOL        Linux kernel   xfsprogs
    Debian 10          2024-Jun   4.19.0         4.20.0
    RHEL 8             2029-May   4.18.0         5.0.0
    Ubuntu 20.04 LTS   2030-Apr   5.4            5.3.0

As with btrfs a mounted XFS is labelled via it's mount point:
    # mkfs.xfs -L label_1 /dev/sdb2
    # mount /dev/sdb2 /mnt/2
    # xfs_io -c 'label -s mnt_label_2' /mnt/2
    label = "mnt_label_2"
    # blkid /dev/sdb2
    /dev/sdb2: LABEL="mnt_label_2" ...

And cleared with:
    # xfs_io -c 'label -c' /mnt/2
    label = ""

Note that in some error situations xfs_io reports exit status zero and
writes the failure message to stdout.
    # xfs_io -c 'label -s "mnt label 3"' /mnt/2
    bad argument count 4 to label, expected between 0 and 3 arguments
    # echo $?
    0
Therefore determine success based on stdout starting with 'label = "'
reporting the new label or not.

Also note that as seen in this failure case, it is not possible to set
an XFS label which contains a space character using xfs_io.  However
that is nothing new as that can't be done using the existing xfs_admin
command for an unmounted XFS either.
    # umount /mnt/2
    # xfs_admin -L 'umnt label 4' /dev/sdb2
    Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device
    # echo $?
    2

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7664b31975bd893190708e76b2c424328f0c49b
    xfs: implement online get/set fs label
[2] https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/commit/?id=cfa10b0f972005b38ed294bca66cebf2f65298ec
    xfs_io: add label command

Closes #163 - Feature request: set label on a mounted btrfs
2021-07-30 16:12:24 +00:00
Mike Fleetwood 47960037f7 Show online file system labelling in the Features dialog (#163)
Show support for online labelling using a second tick mark in the
Features dialog.  This matches how online grow and shrink are shown.

Closes #163 - Feature request: set label on a mounted btrfs
2021-07-30 16:12:24 +00:00
Mike Fleetwood eb034b1759 Add labelling of mounted btrfs (#163)
Btrfs supports labelling of the file system while it is mounted.  This
was added into Linux kernel 3.10 [1] and btrfs-progs 3.12 [2].  As the
oldest supported distributions have the needed versions or newer,
unconditionally enable without any checking for availability.

    Distro             EOL        Linux kernel   btrfs-progs
    Debian 9           2022-Jun   4.19           4.7.3
    RHEL / CentOS 7    2024-Jun   3.10.0         4.9.1
    Ubuntu 18.04 LTS   2023-Apr   4.15.0         4.15.1

Unmounted btrfs is labelled via the block device containing it, where as
a mounted btrfs is labelled via it's mount point.

    # mkfs.btrfs -L initial_label /dev/sdb1
    # blkid /dev/sdb1
    /dev/sdb1: LABEL="initial_label" ...

    # btrfs filesystem label /dev/sdb1 unmounted_label_2
    # blkid /dev/sdb1
    /dev/sdb1: LABEL="unmounted_label_2" ...

    # mount /dev/sdb1 /mnt/1
    # btrfs filesystem label /dev/sdb1 mounted_label_3
    # blkid /dev/sdb1
    /dev/sdb1: LABEL="mounted_label_3" ...

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a8bfd4abea3da0e28f215e2a2b8c2f1ca27ebe80
    Btrfs: set/change the label of a mounted file system
[2] https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git/commit/?id=619dc61cae1420da2dec48f689d49b9b346abc15
    Btrfs-progs: Change the label of a mounted file system

Closes #163 - Feature request: set label on a mounted btrfs
2021-07-30 16:12:24 +00:00
Curtis Gedak 74bd376a50 Append -git to version for continuing development 2021-07-19 11:00:28 -06:00
Curtis Gedak ecdf4d42a8 ========== gparted-1.3.1 ========== 2021-07-19 10:40:49 -06:00
Philipp Kiemle b64878eceb Update German translation 2021-07-15 13:49:59 +00:00
Wolfgang Stöggl 1c86cf18f3 Update German translation 2021-07-14 21:39:38 +00:00
Claude Paroz 65643a64eb Updated French translation 2021-07-14 09:10:57 +02:00
Ngọc Quân Trần 8b8321ff1f Update Vietnamese translation 2021-07-14 01:33:20 +00:00
Daniel Șerbănescu db7cb61c7a Update Romanian translation 2021-07-13 16:19:08 +00:00
Daniel Mustieles 8a8be05442 Updated Spanish translation 2021-07-13 09:03:32 +02:00
Enrico Nicoletto 4f23b46873 Update Brazilian Portuguese translation 2021-07-12 20:33:03 +00:00
Baurzhan Muftakhidinov f6e59bb31f Update Kazakh translation 2021-07-12 16:50:36 +00:00
Mike Fleetwood 39e7156697 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
2021-06-06 18:52:13 +00:00
Mike Fleetwood 36e43ed7a7 Copy XFS label when copying the file system (!85)
As GParted performs block copy of partitions then the label, which is
stored in the file system superblock, is also copied.  This is true for
copies performed using the GParted internal block copy and for EXT2/3/4
and NTFS which are copied using the file system specific commands
e2image and ntfsclone respectively.  However when an XFS file system is
copied the label is not copied because a new file system is created
using mkfs.xfs and the files copied using xfsdump | xfsrestore.

Preview of the copy operation in GParted also reflects the fact that the
label will be copied.

Fix this by simply specifying the desired label when creating the new
destination XFS.

Closes !85 - Make XFS copy duplicate the file system label and UUID
2021-06-06 18:52:13 +00:00
Curtis Gedak 325c6eb247 Handle change in path for udisks2-inhibit executable (!84)
Debian (and derived) distros with the udisks2 [1] repository and the
additional 'udisks2-inhibit' executable had the location changed from:
    /usr/lib/udisks2/
to:
    /usr/libexec/udisks2/
with udisks2 version 2.8.4-2 and the following commit:

    f6744a33 - Move the daemons to /usr/libexec now that's allowed in the policy
    f6744a3364

Distros such as Fedora and openSUSE are unaffected as the udisks [2]
repository does not contain 'udisks2-inhibit'.

[1] udisks2 Debian (and derived) repository
    https://salsa.debian.org/utopia-team/udisks2

[2] udisks repository
    https://github.com/storaged-project/udisks

Closes !84 - Handle change in path for udisks2-inhibit executable
2021-05-31 16:47:32 +00:00
Andika Triwidada 665277c6ef Update Indonesian translation 2021-05-31 10:50:26 +00:00
Rafael Fontenelle 8d5cab86ab Update Brazilian Portuguese translation 2021-05-23 19:28:31 +00:00
Piotr Drąg b3ab7b8198 Update Polish translation 2021-05-23 13:12:58 +02:00
Mike Fleetwood f230ecc7a2 Fix recognition of SD/MMC device names (!83)
User reported that GParted didn't detect their eMMC drive [1].  Not
recognised device name was /dev/mmcblk0.  Confirmed that the regression
was introduced by this commit [2].  Fix the code and regular expression
used to recognise SD/MMC device names.

[1] GParted forum thread: eMMC drive not detected...?
    http://gparted-forum.surf4.info/viewtopic.php?id=17994

[2] 52930f30ae
    Refactor load_proc_partitions_info_cache() a bit (#131)

Closes !83 - Fix recognition of SD/MMC device names
2021-05-19 15:36:23 +00:00
Yuri Chornoivan 3b8ba168f9 Update Ukrainian translation 2021-05-19 05:45:05 +00:00
Anders Jonsson 7ca827fe64 Update Swedish translation 2021-05-18 20:13:18 +00:00
Curtis Gedak 26f4dc504a Replace deprecated gtk_show_uri() method for help window (!82)
The gtk_show_uri() [1] method was deprecated as of gtk3 version 3.22 and
has been replaced with gtk_show_uri_on_window [2].

[1] https://developer.gnome.org/gtk3/stable/gtk3-Filesystem-utilities.html#gtk-show-uri
[2] https://developer.gnome.org/gtk3/stable/gtk-migrating-2-to-3.html#id-1.6.3.3.7

Note that AppInfo::launch_uris() has been removed because with
glib/glibmm >= 2.58 AppInfo::launch_uris() always reports success even
when yelp is not launched and in such cases prevents the dialog
reporting the error from being displayed.

Closes !82 - Replace deprecated gtk_show_uri() method for help window
2021-05-17 20:24:54 +00:00
Seong-ho Cho f5b17f40fe Update Korean translation 2021-05-17 15:28:35 +00:00
Ask Hjorth Larsen 90c030771a Updated Danish translation 2021-05-11 19:33:40 +02:00
Hugo Carvalho 2d20196100 Update Portuguese translation 2021-05-04 18:04:05 +00:00
Curtis Gedak 1bd0fa656e Append -git to version for continuing development 2021-05-03 09:18:26 -06:00
Curtis Gedak 9523b54cd9 ========== gparted-1.3.0 ========== 2021-05-03 09:02:58 -06:00
Jiri Grönroos 6b5693847b Update Finnish translation 2021-05-01 12:08:31 +00:00
Piotr Drąg c5e7226d25 Update Polish translation 2021-05-01 13:37:39 +02:00
Ngọc Quân Trần 99d5933f6f Update Vietnamese translation 2021-04-27 01:42:36 +00:00
Fran Dieguez 55226bc4c8 Update Galician translation 2021-04-26 13:17:51 +00:00
Kukuh Syafaat cc9394e958 Update Indonesian translation 2021-04-26 11:24:23 +00:00
Fran Dieguez 9593417ab7 Update Galician translation 2021-04-26 11:12:11 +00:00
Hannie Dumoleyn 9cd17781d2 Update Dutch translation 2021-04-26 10:12:35 +00:00
Hannie Dumoleyn 26b78dfb23 Update Dutch translation 2021-04-26 10:07:20 +00:00
Daniel Mustieles 985968abac Updated Spanish translation 2021-04-26 07:46:39 +02:00
Daniel Mustieles 8730a5b7f7 Updated Spanish translation 2021-04-26 07:46:33 +02:00
Baurzhan Muftakhidinov 7c56d64d99 Update Kazakh translation 2021-04-26 03:56:47 +00:00
Claude Paroz 37b4aec3b1 Updated French translation 2021-04-25 21:35:07 +02:00
Rafael Fontenelle 9ca0467583 Update Brazilian Portuguese translation 2021-04-25 19:15:45 +00:00
Daniel Șerbănescu 9a63a62448 Update Romanian translation 2021-04-25 18:06:15 +00:00
Yuri Chornoivan 5c5f54b3f2 Update Ukrainian translation 2021-04-25 17:57:36 +00:00
Daniel Șerbănescu 53c77f08d5 Update Romanian translation 2021-04-25 17:54:07 +00:00
Anders Jonsson 188fc4f7b7 Update Swedish translation 2021-04-25 16:48:30 +00:00
Mike Fleetwood c4ca7d3e9b Mark remaining get_filesystem_*() methods as returning const strings 2021-04-25 15:49:35 +00:00
Mike Fleetwood 1c9ecc5dbd Comment differences between FileSystem::execute_command() methods 2021-04-25 15:49:35 +00:00
Mike Fleetwood 5752682c12 Report this LUKS passphrase request reason as resize (#59)
So far when prompting for the LUKS passphrase the dialog always looks
like this:

    +------------------------------------------------+
    |           LUKS Passphrase /dev/sdb1            |
    +------------------------------------------------+
    | Enter LUKS passphrase to open /dev/sdb1        |
    | Passphrase:    [                             ] |
    |                                                |
    |                                                |
    |                          [ Cancel ] [ Unlock ] |
    +------------------------------------------------+

Specifically the first line of the dialog says the reason to provide the
passphrase is to open the encryption mapping.  Now the passphrase may
also be requested when resizing the encryption mapping, as part of a
resize of check operation, show the appropriate reason in the password
dialog.

Closes #59 - Resize of LUKS2 encrypted file system fails with "Nothing
             to read on input"
2021-04-25 15:49:35 +00:00
Mike Fleetwood 80624bfd40 Also prompt for LUKS password as required for check operation (#59)
A check operation involves (1) checking the file system, (2) growing the
encryption volume and (3) growing the file system.  Therefore prompt for
the LUKS passphrase as required when composing a check operation too.

Closes #59 - Resize of LUKS2 encrypted file system fails with "Nothing
             to read on input"
2021-04-25 15:49:35 +00:00
Mike Fleetwood f3aec1f4b1 Pass LUKS password as needed when resizing open mapping (#59)
This is the final piece which enables GParted to pass the LUKS
passphrase when resizing an open LUKS encryption mapping when
'cryptsetup resize' will prompt for it.

Closes #59 - Resize of LUKS2 encrypted file system fails with "Nothing
             to read on input"
2021-04-25 15:49:35 +00:00