Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2022-08-29 00:24:24 +0300
committerGitHub <noreply@github.com>2022-08-29 00:24:24 +0300
commitfe99c441fd6169725366d61d0ba4b8a4d4a11ecf (patch)
treef5419d2965fb6b3966178b2ba5c15f6eb9afb85a
parent211930dd394908ad6738b29cbf712f724e701441 (diff)
[release/7.0] Implement proper File System detection for Apple OSes (#74560)
* the assert should fail on macOS * Don't use statfs on Apple systems, as for them it returns version-specific file system ids. * move mapping to a separate method and reuse it * minor improvement Co-authored-by: Adam Sitnik <adam.sitnik@gmail.com> Co-authored-by: Adam Sitnik <adam.sitnik@microsoft.com>
-rw-r--r--src/libraries/Common/src/Interop/Unix/System.Native/Interop.UnixFileSystemTypes.cs2
-rw-r--r--src/native/libs/System.Native/pal_io.c270
2 files changed, 142 insertions, 130 deletions
diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.UnixFileSystemTypes.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.UnixFileSystemTypes.cs
index ce0dffd7372..23e73342574 100644
--- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.UnixFileSystemTypes.cs
+++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.UnixFileSystemTypes.cs
@@ -155,7 +155,7 @@ internal static partial class Interop
{
uint fstatfsResult = GetFileSystemType(fd);
fileSystemType = (UnixFileSystemTypes)fstatfsResult;
- Debug.Assert(Enum.IsDefined(fileSystemType) || fstatfsResult == 0 || !OperatingSystem.IsLinux(), $"GetFileSystemType returned {fstatfsResult}");
+ Debug.Assert(Enum.IsDefined(fileSystemType) || fstatfsResult == 0, $"GetFileSystemType returned {fstatfsResult}");
return fstatfsResult != 0;
}
}
diff --git a/src/native/libs/System.Native/pal_io.c b/src/native/libs/System.Native/pal_io.c
index 94dca73ccb5..7f775ff8869 100644
--- a/src/native/libs/System.Native/pal_io.c
+++ b/src/native/libs/System.Native/pal_io.c
@@ -1479,6 +1479,141 @@ static int16_t ConvertLockType(int16_t managedLockType)
}
}
+#if !HAVE_NON_LEGACY_STATFS || defined(__APPLE__)
+static uint32_t MapFileSystemNameToEnum(const char* fileSystemName)
+{
+ uint32_t result = 0;
+
+ if (strcmp(fileSystemName, "adfs") == 0) result = 0xADF5;
+ else if (strcmp(fileSystemName, "affs") == 0) result = 0xADFF;
+ else if (strcmp(fileSystemName, "afs") == 0) result = 0x5346414F;
+ else if (strcmp(fileSystemName, "anoninode") == 0) result = 0x09041934;
+ else if (strcmp(fileSystemName, "apfs") == 0) result = 0x1A;
+ else if (strcmp(fileSystemName, "aufs") == 0) result = 0x61756673;
+ else if (strcmp(fileSystemName, "autofs") == 0) result = 0x0187;
+ else if (strcmp(fileSystemName, "autofs4") == 0) result = 0x6D4A556D;
+ else if (strcmp(fileSystemName, "befs") == 0) result = 0x42465331;
+ else if (strcmp(fileSystemName, "bdevfs") == 0) result = 0x62646576;
+ else if (strcmp(fileSystemName, "bfs") == 0) result = 0x1BADFACE;
+ else if (strcmp(fileSystemName, "bpf_fs") == 0) result = 0xCAFE4A11;
+ else if (strcmp(fileSystemName, "binfmt_misc") == 0) result = 0x42494E4D;
+ else if (strcmp(fileSystemName, "bootfs") == 0) result = 0xA56D3FF9;
+ else if (strcmp(fileSystemName, "btrfs") == 0) result = 0x9123683E;
+ else if (strcmp(fileSystemName, "ceph") == 0) result = 0x00C36400;
+ else if (strcmp(fileSystemName, "cgroupfs") == 0) result = 0x0027E0EB;
+ else if (strcmp(fileSystemName, "cgroup2fs") == 0) result = 0x63677270;
+ else if (strcmp(fileSystemName, "cifs") == 0) result = 0xFF534D42;
+ else if (strcmp(fileSystemName, "coda") == 0) result = 0x73757245;
+ else if (strcmp(fileSystemName, "coherent") == 0) result = 0x012FF7B7;
+ else if (strcmp(fileSystemName, "configfs") == 0) result = 0x62656570;
+ else if (strcmp(fileSystemName, "cpuset") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "cramfs") == 0) result = 0x28CD3D45;
+ else if (strcmp(fileSystemName, "ctfs") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "debugfs") == 0) result = 0x64626720;
+ else if (strcmp(fileSystemName, "dev") == 0) result = 0x1373;
+ else if (strcmp(fileSystemName, "devfs") == 0) result = 0x1373;
+ else if (strcmp(fileSystemName, "devpts") == 0) result = 0x1CD1;
+ else if (strcmp(fileSystemName, "ecryptfs") == 0) result = 0xF15F;
+ else if (strcmp(fileSystemName, "efs") == 0) result = 0x00414A53;
+ else if (strcmp(fileSystemName, "exofs") == 0) result = 0x5DF5;
+ else if (strcmp(fileSystemName, "ext") == 0) result = 0x137D;
+ else if (strcmp(fileSystemName, "ext2_old") == 0) result = 0xEF51;
+ else if (strcmp(fileSystemName, "ext2") == 0) result = 0xEF53;
+ else if (strcmp(fileSystemName, "ext3") == 0) result = 0xEF53;
+ else if (strcmp(fileSystemName, "ext4") == 0) result = 0xEF53;
+ else if (strcmp(fileSystemName, "f2fs") == 0) result = 0xF2F52010;
+ else if (strcmp(fileSystemName, "fat") == 0) result = 0x4006;
+ else if (strcmp(fileSystemName, "fd") == 0) result = 0xF00D1E;
+ else if (strcmp(fileSystemName, "fhgfs") == 0) result = 0x19830326;
+ else if (strcmp(fileSystemName, "fuse") == 0) result = 0x65735546;
+ else if (strcmp(fileSystemName, "fuseblk") == 0) result = 0x65735546;
+ else if (strcmp(fileSystemName, "fusectl") == 0) result = 0x65735543;
+ else if (strcmp(fileSystemName, "futexfs") == 0) result = 0x0BAD1DEA;
+ else if (strcmp(fileSystemName, "gfsgfs2") == 0) result = 0x1161970;
+ else if (strcmp(fileSystemName, "gfs2") == 0) result = 0x01161970;
+ else if (strcmp(fileSystemName, "gpfs") == 0) result = 0x47504653;
+ else if (strcmp(fileSystemName, "hfs") == 0) result = 0x4244;
+ else if (strcmp(fileSystemName, "hfsplus") == 0) result = 0x482B;
+ else if (strcmp(fileSystemName, "hpfs") == 0) result = 0xF995E849;
+ else if (strcmp(fileSystemName, "hugetlbfs") == 0) result = 0x958458F6;
+ else if (strcmp(fileSystemName, "inodefs") == 0) result = 0x11307854;
+ else if (strcmp(fileSystemName, "inotifyfs") == 0) result = 0x2BAD1DEA;
+ else if (strcmp(fileSystemName, "isofs") == 0) result = 0x9660;
+ else if (strcmp(fileSystemName, "jffs") == 0) result = 0x07C0;
+ else if (strcmp(fileSystemName, "jffs2") == 0) result = 0x72B6;
+ else if (strcmp(fileSystemName, "jfs") == 0) result = 0x3153464A;
+ else if (strcmp(fileSystemName, "kafs") == 0) result = 0x6B414653;
+ else if (strcmp(fileSystemName, "lofs") == 0) result = 0xEF53;
+ else if (strcmp(fileSystemName, "logfs") == 0) result = 0xC97E8168;
+ else if (strcmp(fileSystemName, "lustre") == 0) result = 0x0BD00BD0;
+ else if (strcmp(fileSystemName, "minix_old") == 0) result = 0x137F;
+ else if (strcmp(fileSystemName, "minix") == 0) result = 0x138F;
+ else if (strcmp(fileSystemName, "minix2") == 0) result = 0x2468;
+ else if (strcmp(fileSystemName, "minix2v2") == 0) result = 0x2478;
+ else if (strcmp(fileSystemName, "minix3") == 0) result = 0x4D5A;
+ else if (strcmp(fileSystemName, "mntfs") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "mqueue") == 0) result = 0x19800202;
+ else if (strcmp(fileSystemName, "msdos") == 0) result = 0x4D44;
+ else if (strcmp(fileSystemName, "nfs") == 0) result = 0x6969;
+ else if (strcmp(fileSystemName, "nfsd") == 0) result = 0x6E667364;
+ else if (strcmp(fileSystemName, "nilfs") == 0) result = 0x3434;
+ else if (strcmp(fileSystemName, "novell") == 0) result = 0x564C;
+ else if (strcmp(fileSystemName, "ntfs") == 0) result = 0x5346544E;
+ else if (strcmp(fileSystemName, "objfs") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "ocfs2") == 0) result = 0x7461636F;
+ else if (strcmp(fileSystemName, "openprom") == 0) result = 0x9FA1;
+ else if (strcmp(fileSystemName, "omfs") == 0) result = 0xC2993D87;
+ else if (strcmp(fileSystemName, "overlay") == 0) result = 0x794C7630;
+ else if (strcmp(fileSystemName, "overlayfs") == 0) result = 0x794C764F;
+ else if (strcmp(fileSystemName, "panfs") == 0) result = 0xAAD7AAEA;
+ else if (strcmp(fileSystemName, "pipefs") == 0) result = 0x50495045;
+ else if (strcmp(fileSystemName, "proc") == 0) result = 0x9FA0;
+ else if (strcmp(fileSystemName, "pstorefs") == 0) result = 0x6165676C;
+ else if (strcmp(fileSystemName, "qnx4") == 0) result = 0x002F;
+ else if (strcmp(fileSystemName, "qnx6") == 0) result = 0x68191122;
+ else if (strcmp(fileSystemName, "ramfs") == 0) result = 0x858458F6;
+ else if (strcmp(fileSystemName, "reiserfs") == 0) result = 0x52654973;
+ else if (strcmp(fileSystemName, "romfs") == 0) result = 0x7275;
+ else if (strcmp(fileSystemName, "rootfs") == 0) result = 0x53464846;
+ else if (strcmp(fileSystemName, "rpc_pipefs") == 0) result = 0x67596969;
+ else if (strcmp(fileSystemName, "samba") == 0) result = 0x517B;
+ else if (strcmp(fileSystemName, "securityfs") == 0) result = 0x73636673;
+ else if (strcmp(fileSystemName, "selinux") == 0) result = 0xF97CFF8C;
+ else if (strcmp(fileSystemName, "sffs") == 0) result = 0x786F4256;
+ else if (strcmp(fileSystemName, "sharefs") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "smb") == 0) result = 0x517B;
+ else if (strcmp(fileSystemName, "smb2") == 0) result = 0xFE534D42;
+ else if (strcmp(fileSystemName, "sockfs") == 0) result = 0x534F434B;
+ else if (strcmp(fileSystemName, "squashfs") == 0) result = 0x73717368;
+ else if (strcmp(fileSystemName, "sysfs") == 0) result = 0x62656572;
+ else if (strcmp(fileSystemName, "sysv2") == 0) result = 0x012FF7B6;
+ else if (strcmp(fileSystemName, "sysv4") == 0) result = 0x012FF7B5;
+ else if (strcmp(fileSystemName, "tmpfs") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "tracefs") == 0) result = 0x74726163;
+ else if (strcmp(fileSystemName, "ubifs") == 0) result = 0x24051905;
+ else if (strcmp(fileSystemName, "udf") == 0) result = 0x15013346;
+ else if (strcmp(fileSystemName, "ufs") == 0) result = 0x00011954;
+ else if (strcmp(fileSystemName, "ufscigam") == 0) result = 0x54190100;
+ else if (strcmp(fileSystemName, "ufs2") == 0) result = 0x19540119;
+ else if (strcmp(fileSystemName, "usbdevice") == 0) result = 0x9FA2;
+ else if (strcmp(fileSystemName, "v9fs") == 0) result = 0x01021997;
+ else if (strcmp(fileSystemName, "vagrant") == 0) result = 0x786F4256;
+ else if (strcmp(fileSystemName, "vboxfs") == 0) result = 0x786F4256;
+ else if (strcmp(fileSystemName, "vmhgfs") == 0) result = 0xBACBACBC;
+ else if (strcmp(fileSystemName, "vxfs") == 0) result = 0xA501FCF5;
+ else if (strcmp(fileSystemName, "vzfs") == 0) result = 0x565A4653;
+ else if (strcmp(fileSystemName, "xenfs") == 0) result = 0xABBA1974;
+ else if (strcmp(fileSystemName, "xenix") == 0) result = 0x012FF7B4;
+ else if (strcmp(fileSystemName, "xfs") == 0) result = 0x58465342;
+ else if (strcmp(fileSystemName, "xia") == 0) result = 0x012FD16D;
+ else if (strcmp(fileSystemName, "udev") == 0) result = 0x01021994;
+ else if (strcmp(fileSystemName, "zfs") == 0) result = 0x2FC12FC1;
+
+ assert(result != 0);
+ return result;
+}
+#endif
+
uint32_t SystemNative_GetFileSystemType(intptr_t fd)
{
#if HAVE_STATFS_VFS || HAVE_STATFS_MOUNT
@@ -1489,145 +1624,22 @@ uint32_t SystemNative_GetFileSystemType(intptr_t fd)
while ((statfsRes = fstatfs(ToFileDescriptor(fd), &statfsArgs)) == -1 && errno == EINTR) ;
if (statfsRes == -1) return 0;
+#if defined(__APPLE__)
+ // On OSX-like systems, f_type is version-specific. Don't use it, just map the name.
+ return MapFileSystemNameToEnum(statfsArgs.f_fstypename);
+#else
// On Linux, f_type is signed. This causes some filesystem types to be represented as
// negative numbers on 32-bit platforms. We cast to uint32_t to make them positive.
uint32_t result = (uint32_t)statfsArgs.f_type;
return result;
+#endif
#elif !HAVE_NON_LEGACY_STATFS
int statfsRes;
struct statvfs statfsArgs;
while ((statfsRes = fstatvfs(ToFileDescriptor(fd), &statfsArgs)) == -1 && errno == EINTR) ;
if (statfsRes == -1) return 0;
- uint32_t result = 0;
-
- if (strcmp(statfsArgs.f_basetype, "adfs") == 0) result = 0xADF5;
- else if (strcmp(statfsArgs.f_basetype, "affs") == 0) result = 0xADFF;
- else if (strcmp(statfsArgs.f_basetype, "afs") == 0) result = 0x5346414F;
- else if (strcmp(statfsArgs.f_basetype, "anoninode") == 0) result = 0x09041934;
- else if (strcmp(statfsArgs.f_basetype, "apfs") == 0) result = 0x1A;
- else if (strcmp(statfsArgs.f_basetype, "aufs") == 0) result = 0x61756673;
- else if (strcmp(statfsArgs.f_basetype, "autofs") == 0) result = 0x0187;
- else if (strcmp(statfsArgs.f_basetype, "autofs4") == 0) result = 0x6D4A556D;
- else if (strcmp(statfsArgs.f_basetype, "befs") == 0) result = 0x42465331;
- else if (strcmp(statfsArgs.f_basetype, "bdevfs") == 0) result = 0x62646576;
- else if (strcmp(statfsArgs.f_basetype, "bfs") == 0) result = 0x1BADFACE;
- else if (strcmp(statfsArgs.f_basetype, "bpf_fs") == 0) result = 0xCAFE4A11;
- else if (strcmp(statfsArgs.f_basetype, "binfmt_misc") == 0) result = 0x42494E4D;
- else if (strcmp(statfsArgs.f_basetype, "bootfs") == 0) result = 0xA56D3FF9;
- else if (strcmp(statfsArgs.f_basetype, "btrfs") == 0) result = 0x9123683E;
- else if (strcmp(statfsArgs.f_basetype, "ceph") == 0) result = 0x00C36400;
- else if (strcmp(statfsArgs.f_basetype, "cgroupfs") == 0) result = 0x0027E0EB;
- else if (strcmp(statfsArgs.f_basetype, "cgroup2fs") == 0) result = 0x63677270;
- else if (strcmp(statfsArgs.f_basetype, "cifs") == 0) result = 0xFF534D42;
- else if (strcmp(statfsArgs.f_basetype, "coda") == 0) result = 0x73757245;
- else if (strcmp(statfsArgs.f_basetype, "coherent") == 0) result = 0x012FF7B7;
- else if (strcmp(statfsArgs.f_basetype, "configfs") == 0) result = 0x62656570;
- else if (strcmp(statfsArgs.f_basetype, "cpuset") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "cramfs") == 0) result = 0x28CD3D45;
- else if (strcmp(statfsArgs.f_basetype, "ctfs") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "debugfs") == 0) result = 0x64626720;
- else if (strcmp(statfsArgs.f_basetype, "dev") == 0) result = 0x1373;
- else if (strcmp(statfsArgs.f_basetype, "devfs") == 0) result = 0x1373;
- else if (strcmp(statfsArgs.f_basetype, "devpts") == 0) result = 0x1CD1;
- else if (strcmp(statfsArgs.f_basetype, "ecryptfs") == 0) result = 0xF15F;
- else if (strcmp(statfsArgs.f_basetype, "efs") == 0) result = 0x00414A53;
- else if (strcmp(statfsArgs.f_basetype, "exofs") == 0) result = 0x5DF5;
- else if (strcmp(statfsArgs.f_basetype, "ext") == 0) result = 0x137D;
- else if (strcmp(statfsArgs.f_basetype, "ext2_old") == 0) result = 0xEF51;
- else if (strcmp(statfsArgs.f_basetype, "ext2") == 0) result = 0xEF53;
- else if (strcmp(statfsArgs.f_basetype, "ext3") == 0) result = 0xEF53;
- else if (strcmp(statfsArgs.f_basetype, "ext4") == 0) result = 0xEF53;
- else if (strcmp(statfsArgs.f_basetype, "f2fs") == 0) result = 0xF2F52010;
- else if (strcmp(statfsArgs.f_basetype, "fat") == 0) result = 0x4006;
- else if (strcmp(statfsArgs.f_basetype, "fd") == 0) result = 0xF00D1E;
- else if (strcmp(statfsArgs.f_basetype, "fhgfs") == 0) result = 0x19830326;
- else if (strcmp(statfsArgs.f_basetype, "fuse") == 0) result = 0x65735546;
- else if (strcmp(statfsArgs.f_basetype, "fuseblk") == 0) result = 0x65735546;
- else if (strcmp(statfsArgs.f_basetype, "fusectl") == 0) result = 0x65735543;
- else if (strcmp(statfsArgs.f_basetype, "futexfs") == 0) result = 0x0BAD1DEA;
- else if (strcmp(statfsArgs.f_basetype, "gfsgfs2") == 0) result = 0x1161970;
- else if (strcmp(statfsArgs.f_basetype, "gfs2") == 0) result = 0x01161970;
- else if (strcmp(statfsArgs.f_basetype, "gpfs") == 0) result = 0x47504653;
- else if (strcmp(statfsArgs.f_basetype, "hfs") == 0) result = 0x4244;
- else if (strcmp(statfsArgs.f_basetype, "hfsplus") == 0) result = 0x482B;
- else if (strcmp(statfsArgs.f_basetype, "hpfs") == 0) result = 0xF995E849;
- else if (strcmp(statfsArgs.f_basetype, "hugetlbfs") == 0) result = 0x958458F6;
- else if (strcmp(statfsArgs.f_basetype, "inodefs") == 0) result = 0x11307854;
- else if (strcmp(statfsArgs.f_basetype, "inotifyfs") == 0) result = 0x2BAD1DEA;
- else if (strcmp(statfsArgs.f_basetype, "isofs") == 0) result = 0x9660;
- else if (strcmp(statfsArgs.f_basetype, "jffs") == 0) result = 0x07C0;
- else if (strcmp(statfsArgs.f_basetype, "jffs2") == 0) result = 0x72B6;
- else if (strcmp(statfsArgs.f_basetype, "jfs") == 0) result = 0x3153464A;
- else if (strcmp(statfsArgs.f_basetype, "kafs") == 0) result = 0x6B414653;
- else if (strcmp(statfsArgs.f_basetype, "lofs") == 0) result = 0xEF53;
- else if (strcmp(statfsArgs.f_basetype, "logfs") == 0) result = 0xC97E8168;
- else if (strcmp(statfsArgs.f_basetype, "lustre") == 0) result = 0x0BD00BD0;
- else if (strcmp(statfsArgs.f_basetype, "minix_old") == 0) result = 0x137F;
- else if (strcmp(statfsArgs.f_basetype, "minix") == 0) result = 0x138F;
- else if (strcmp(statfsArgs.f_basetype, "minix2") == 0) result = 0x2468;
- else if (strcmp(statfsArgs.f_basetype, "minix2v2") == 0) result = 0x2478;
- else if (strcmp(statfsArgs.f_basetype, "minix3") == 0) result = 0x4D5A;
- else if (strcmp(statfsArgs.f_basetype, "mntfs") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "mqueue") == 0) result = 0x19800202;
- else if (strcmp(statfsArgs.f_basetype, "msdos") == 0) result = 0x4D44;
- else if (strcmp(statfsArgs.f_basetype, "nfs") == 0) result = 0x6969;
- else if (strcmp(statfsArgs.f_basetype, "nfsd") == 0) result = 0x6E667364;
- else if (strcmp(statfsArgs.f_basetype, "nilfs") == 0) result = 0x3434;
- else if (strcmp(statfsArgs.f_basetype, "novell") == 0) result = 0x564C;
- else if (strcmp(statfsArgs.f_basetype, "ntfs") == 0) result = 0x5346544E;
- else if (strcmp(statfsArgs.f_basetype, "objfs") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "ocfs2") == 0) result = 0x7461636F;
- else if (strcmp(statfsArgs.f_basetype, "openprom") == 0) result = 0x9FA1;
- else if (strcmp(statfsArgs.f_basetype, "omfs") == 0) result = 0xC2993D87;
- else if (strcmp(statfsArgs.f_basetype, "overlay") == 0) result = 0x794C7630;
- else if (strcmp(statfsArgs.f_basetype, "overlayfs") == 0) result = 0x794C764F;
- else if (strcmp(statfsArgs.f_basetype, "panfs") == 0) result = 0xAAD7AAEA;
- else if (strcmp(statfsArgs.f_basetype, "pipefs") == 0) result = 0x50495045;
- else if (strcmp(statfsArgs.f_basetype, "proc") == 0) result = 0x9FA0;
- else if (strcmp(statfsArgs.f_basetype, "pstorefs") == 0) result = 0x6165676C;
- else if (strcmp(statfsArgs.f_basetype, "qnx4") == 0) result = 0x002F;
- else if (strcmp(statfsArgs.f_basetype, "qnx6") == 0) result = 0x68191122;
- else if (strcmp(statfsArgs.f_basetype, "ramfs") == 0) result = 0x858458F6;
- else if (strcmp(statfsArgs.f_basetype, "reiserfs") == 0) result = 0x52654973;
- else if (strcmp(statfsArgs.f_basetype, "romfs") == 0) result = 0x7275;
- else if (strcmp(statfsArgs.f_basetype, "rootfs") == 0) result = 0x53464846;
- else if (strcmp(statfsArgs.f_basetype, "rpc_pipefs") == 0) result = 0x67596969;
- else if (strcmp(statfsArgs.f_basetype, "samba") == 0) result = 0x517B;
- else if (strcmp(statfsArgs.f_basetype, "securityfs") == 0) result = 0x73636673;
- else if (strcmp(statfsArgs.f_basetype, "selinux") == 0) result = 0xF97CFF8C;
- else if (strcmp(statfsArgs.f_basetype, "sffs") == 0) result = 0x786F4256;
- else if (strcmp(statfsArgs.f_basetype, "sharefs") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "smb") == 0) result = 0x517B;
- else if (strcmp(statfsArgs.f_basetype, "smb2") == 0) result = 0xFE534D42;
- else if (strcmp(statfsArgs.f_basetype, "sockfs") == 0) result = 0x534F434B;
- else if (strcmp(statfsArgs.f_basetype, "squashfs") == 0) result = 0x73717368;
- else if (strcmp(statfsArgs.f_basetype, "sysfs") == 0) result = 0x62656572;
- else if (strcmp(statfsArgs.f_basetype, "sysv2") == 0) result = 0x012FF7B6;
- else if (strcmp(statfsArgs.f_basetype, "sysv4") == 0) result = 0x012FF7B5;
- else if (strcmp(statfsArgs.f_basetype, "tmpfs") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "tracefs") == 0) result = 0x74726163;
- else if (strcmp(statfsArgs.f_basetype, "ubifs") == 0) result = 0x24051905;
- else if (strcmp(statfsArgs.f_basetype, "udf") == 0) result = 0x15013346;
- else if (strcmp(statfsArgs.f_basetype, "ufs") == 0) result = 0x00011954;
- else if (strcmp(statfsArgs.f_basetype, "ufscigam") == 0) result = 0x54190100;
- else if (strcmp(statfsArgs.f_basetype, "ufs2") == 0) result = 0x19540119;
- else if (strcmp(statfsArgs.f_basetype, "usbdevice") == 0) result = 0x9FA2;
- else if (strcmp(statfsArgs.f_basetype, "v9fs") == 0) result = 0x01021997;
- else if (strcmp(statfsArgs.f_basetype, "vagrant") == 0) result = 0x786F4256;
- else if (strcmp(statfsArgs.f_basetype, "vboxfs") == 0) result = 0x786F4256;
- else if (strcmp(statfsArgs.f_basetype, "vmhgfs") == 0) result = 0xBACBACBC;
- else if (strcmp(statfsArgs.f_basetype, "vxfs") == 0) result = 0xA501FCF5;
- else if (strcmp(statfsArgs.f_basetype, "vzfs") == 0) result = 0x565A4653;
- else if (strcmp(statfsArgs.f_basetype, "xenfs") == 0) result = 0xABBA1974;
- else if (strcmp(statfsArgs.f_basetype, "xenix") == 0) result = 0x012FF7B4;
- else if (strcmp(statfsArgs.f_basetype, "xfs") == 0) result = 0x58465342;
- else if (strcmp(statfsArgs.f_basetype, "xia") == 0) result = 0x012FD16D;
- else if (strcmp(statfsArgs.f_basetype, "udev") == 0) result = 0x01021994;
- else if (strcmp(statfsArgs.f_basetype, "zfs") == 0) result = 0x2FC12FC1;
-
- assert(result != 0);
- return result;
+ return MapFileSystemNameToEnum(statfsArgs.f_basetype);
#else
#error "Platform doesn't support fstatfs or fstatvfs"
#endif