From 554db8f113411c44f5dbe67b0ebdea98d3edd87c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 30 Jun 2024 14:21:43 +0200 Subject: [PATCH] daemon/internal/fstype: make FsMagic values not platform-dependent While detection of filesystem-types may not be supported on all platforms, it should be ok to define the types; this would allow for these types to be used to print names (e.g.) in cross-platform situations. Signed-off-by: Sebastiaan van Stijn --- daemon/internal/fstype/fstype.go | 52 ++++++++++++++++++- daemon/internal/fstype/fstype_linux.go | 70 -------------------------- 2 files changed, 50 insertions(+), 72 deletions(-) diff --git a/daemon/internal/fstype/fstype.go b/daemon/internal/fstype/fstype.go index ebf02ce6c2..50b7519f5c 100644 --- a/daemon/internal/fstype/fstype.go +++ b/daemon/internal/fstype/fstype.go @@ -3,8 +3,56 @@ package fstype // FsMagic unsigned id of the filesystem in use. type FsMagic uint32 -// FsMagicUnsupported is a predefined constant value other than a valid filesystem id. -const FsMagicUnsupported = FsMagic(0x00000000) +const ( + FsMagicUnsupported FsMagic = 0x00000000 // FsMagicUnsupported is a predefined constant value other than a valid filesystem id. + + FsMagicAufs FsMagic = 0x61756673 // FsMagicAufs filesystem id for Aufs. + FsMagicBtrfs FsMagic = 0x9123683E // FsMagicBtrfs filesystem id for Btrfs. + FsMagicCramfs FsMagic = 0x28cd3d45 // FsMagicCramfs filesystem id for Cramfs. + FsMagicEcryptfs FsMagic = 0xf15f // FsMagicEcryptfs filesystem id for eCryptfs. + FsMagicExtfs FsMagic = 0x0000EF53 // FsMagicExtfs filesystem id for Extfs. + FsMagicF2fs FsMagic = 0xF2F52010 // FsMagicF2fs filesystem id for F2fs. + FsMagicGPFS FsMagic = 0x47504653 // FsMagicGPFS filesystem id for GPFS. + FsMagicJffs2Fs FsMagic = 0x000072b6 // FsMagicJffs2Fs filesystem if for Jffs2Fs. + FsMagicJfs FsMagic = 0x3153464a // FsMagicJfs filesystem id for Jfs. + FsMagicNfsFs FsMagic = 0x00006969 // FsMagicNfsFs filesystem id for NfsFs. + FsMagicRAMFs FsMagic = 0x858458f6 // FsMagicRAMFs filesystem id for RamFs. + FsMagicReiserFs FsMagic = 0x52654973 // FsMagicReiserFs filesystem id for ReiserFs. + FsMagicSmbFs FsMagic = 0x0000517B // FsMagicSmbFs filesystem id for SmbFs. + FsMagicSquashFs FsMagic = 0x73717368 // FsMagicSquashFs filesystem id for SquashFs. + FsMagicTmpFs FsMagic = 0x01021994 // FsMagicTmpFs filesystem id for TmpFs. + FsMagicVxFS FsMagic = 0xa501fcf5 // FsMagicVxFS filesystem id for VxFs. + FsMagicXfs FsMagic = 0x58465342 // FsMagicXfs filesystem id for Xfs. + FsMagicZfs FsMagic = 0x2fc12fc1 // FsMagicZfs filesystem id for Zfs. + FsMagicOverlay FsMagic = 0x794C7630 // FsMagicOverlay filesystem id for overlayFs. + FsMagicFUSE FsMagic = 0x65735546 // FsMagicFUSE filesystem id for FUSE. +) + +// FsNames maps filesystem id to name of the filesystem. +var FsNames = map[FsMagic]string{ + FsMagicUnsupported: "unsupported", + + FsMagicAufs: "aufs", + FsMagicBtrfs: "btrfs", + FsMagicCramfs: "cramfs", + FsMagicEcryptfs: "ecryptfs", + FsMagicExtfs: "extfs", + FsMagicF2fs: "f2fs", + FsMagicFUSE: "fuse", + FsMagicGPFS: "gpfs", + FsMagicJffs2Fs: "jffs2", + FsMagicJfs: "jfs", + FsMagicNfsFs: "nfs", + FsMagicOverlay: "overlayfs", + FsMagicRAMFs: "ramfs", + FsMagicReiserFs: "reiserfs", + FsMagicSmbFs: "smb", + FsMagicSquashFs: "squashfs", + FsMagicTmpFs: "tmpfs", + FsMagicVxFS: "vxfs", + FsMagicXfs: "xfs", + FsMagicZfs: "zfs", +} // GetFSMagic returns the filesystem id given the path. It returns an error // when failing to detect the filesystem. it returns [FsMagicUnsupported] diff --git a/daemon/internal/fstype/fstype_linux.go b/daemon/internal/fstype/fstype_linux.go index f197855b0e..bbd702c324 100644 --- a/daemon/internal/fstype/fstype_linux.go +++ b/daemon/internal/fstype/fstype_linux.go @@ -2,76 +2,6 @@ package fstype import "golang.org/x/sys/unix" -const ( - // FsMagicAufs filesystem id for Aufs - FsMagicAufs = FsMagic(0x61756673) - // FsMagicBtrfs filesystem id for Btrfs - FsMagicBtrfs = FsMagic(0x9123683E) - // FsMagicCramfs filesystem id for Cramfs - FsMagicCramfs = FsMagic(0x28cd3d45) - // FsMagicEcryptfs filesystem id for eCryptfs - FsMagicEcryptfs = FsMagic(0xf15f) - // FsMagicExtfs filesystem id for Extfs - FsMagicExtfs = FsMagic(0x0000EF53) - // FsMagicF2fs filesystem id for F2fs - FsMagicF2fs = FsMagic(0xF2F52010) - // FsMagicGPFS filesystem id for GPFS - FsMagicGPFS = FsMagic(0x47504653) - // FsMagicJffs2Fs filesystem if for Jffs2Fs - FsMagicJffs2Fs = FsMagic(0x000072b6) - // FsMagicJfs filesystem id for Jfs - FsMagicJfs = FsMagic(0x3153464a) - // FsMagicNfsFs filesystem id for NfsFs - FsMagicNfsFs = FsMagic(0x00006969) - // FsMagicRAMFs filesystem id for RamFs - FsMagicRAMFs = FsMagic(0x858458f6) - // FsMagicReiserFs filesystem id for ReiserFs - FsMagicReiserFs = FsMagic(0x52654973) - // FsMagicSmbFs filesystem id for SmbFs - FsMagicSmbFs = FsMagic(0x0000517B) - // FsMagicSquashFs filesystem id for SquashFs - FsMagicSquashFs = FsMagic(0x73717368) - // FsMagicTmpFs filesystem id for TmpFs - FsMagicTmpFs = FsMagic(0x01021994) - // FsMagicVxFS filesystem id for VxFs - FsMagicVxFS = FsMagic(0xa501fcf5) - // FsMagicXfs filesystem id for Xfs - FsMagicXfs = FsMagic(0x58465342) - // FsMagicZfs filesystem id for Zfs - FsMagicZfs = FsMagic(0x2fc12fc1) - // FsMagicOverlay filesystem id for overlay - FsMagicOverlay = FsMagic(0x794C7630) - // FsMagicFUSE filesystem id for FUSE - FsMagicFUSE = FsMagic(0x65735546) -) - -var ( - // FsNames maps filesystem id to name of the filesystem. - FsNames = map[FsMagic]string{ - FsMagicAufs: "aufs", - FsMagicBtrfs: "btrfs", - FsMagicCramfs: "cramfs", - FsMagicEcryptfs: "ecryptfs", - FsMagicExtfs: "extfs", - FsMagicF2fs: "f2fs", - FsMagicFUSE: "fuse", - FsMagicGPFS: "gpfs", - FsMagicJffs2Fs: "jffs2", - FsMagicJfs: "jfs", - FsMagicNfsFs: "nfs", - FsMagicOverlay: "overlayfs", - FsMagicRAMFs: "ramfs", - FsMagicReiserFs: "reiserfs", - FsMagicSmbFs: "smb", - FsMagicSquashFs: "squashfs", - FsMagicTmpFs: "tmpfs", - FsMagicUnsupported: "unsupported", - FsMagicVxFS: "vxfs", - FsMagicXfs: "xfs", - FsMagicZfs: "zfs", - } -) - // getFSMagic returns the filesystem id given the path. func getFSMagic(rootpath string) (FsMagic, error) { var buf unix.Statfs_t