From: Zbigniew Jędrzejewski-Szmek Date: Fri, 12 Nov 2021 14:56:56 +0000 (+0100) Subject: makefs: fix too-long swap labels X-Git-Tag: v250-rc1~240^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d433a99a414adfc6785fd892b0349847f9488b4;p=thirdparty%2Fsystemd.git makefs: fix too-long swap labels Apparently mkswap has it's own limit, and it seems to be one lower than the one for ext2/3/4. $ for i in ext2 ext3 ext4 btrfs xfs vfat swap minix; do echo $i && wipefs -q -a '/var/tmp/głąbźśńćąśððð.img' build/systemd-makefs $i '/var/tmp/głąbźśńćąśððð.img' done ext2 /var/tmp/głąbźśńćąśððð.img successfully formatted as ext2 (label "głąbźśńćą", uuid 7626bc5c-8ac4-43cf-87b7-1b2761272dd3) ext3 /var/tmp/głąbźśńćąśððð.img successfully formatted as ext3 (label "głąbźśńćą", uuid 0da22cad-0dbf-4a7a-962d-12cd39d006b5) ext4 /var/tmp/głąbźśńćąśððð.img successfully formatted as ext4 (label "głąbźśńćą", uuid dded267b-8955-4d19-82a5-1f231d446059) btrfs /var/tmp/głąbźśńćąśððð.img successfully formatted as btrfs (label "głąbźśńćąśððð.img", uuid 9e2e89f1-010d-4ab6-80f3-f9e215dbc225) xfs /var/tmp/głąbźśńćąśððð.img successfully formatted as xfs (label "głąbźśń", uuid 2cc937af-4c41-465c-8f52-aab2304bd860) vfat mkfs.fat 4.2 (2021-01-31) /var/tmp/głąbźśńćąśððð.img successfully formatted as vfat (label "G__B_______", uuid a3a9e028) swap ... LABEL=głąbźśńć, UUID=0ab787aa-37a6-4b32-978b-d71efc6e6098 /var/tmp/głąbźśńćąśððð.img successfully formatted as swap (label "głąbźśńć", uuid 0ab787aa-37a6-4b32-978b-d71efc6e6098) minix ... /var/tmp/głąbźśńćąśððð.img successfully formatted as minix (no label or uuid specified) --- diff --git a/src/shared/mkfs-util.c b/src/shared/mkfs-util.c index f67d7475a0b..de03cd3c7d2 100644 --- a/src/shared/mkfs-util.c +++ b/src/shared/mkfs-util.c @@ -119,10 +119,15 @@ int make_filesystem( return log_oom(); } - if (STR_IN_SET(fstype, "ext2", "ext3", "ext4", "xfs")) { - r = mangle_linux_fs_label(label, streq(fstype, "xfs") ? 12 : 16, &mangled_label); + if (STR_IN_SET(fstype, "ext2", "ext3", "ext4", "xfs", "swap")) { + size_t max_len = + streq(fstype, "xfs") ? 12 : + streq(fstype, "swap") ? 15 : + 16; + + r = mangle_linux_fs_label(label, max_len, &mangled_label); if (r < 0) - return log_error_errno(r, "Failed to determine fs label from string \"%s\": %m", label); + return log_error_errno(r, "Failed to determine volume label from string \"%s\": %m", label); label = mangled_label; } else if (streq(fstype, "vfat")) {