src/fs-is-local.h | 23 ++++++++++++++++++++ src/stat.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++------ src/tail.c | 2 ++ 3 files changed, 83 insertions(+), 6 deletions(-) diff --git a/src/fs-is-local.h b/src/fs-is-local.h index 61849da..5f73488 100644 --- a/src/fs-is-local.h +++ b/src/fs-is-local.h @@ -6,30 +6,39 @@ is_local_fs_type (unsigned long int magic) { switch (magic) { + case S_MAGIC_AAFS: return 1; + case S_MAGIC_ACFS: return 0; case S_MAGIC_ADFS: return 1; case S_MAGIC_AFFS: return 1; case S_MAGIC_AFS: return 0; case S_MAGIC_ANON_INODE_FS: return 1; case S_MAGIC_AUFS: return 0; case S_MAGIC_AUTOFS: return 1; + case S_MAGIC_BALLOON_KVM: return 1; case S_MAGIC_BEFS: return 1; case S_MAGIC_BDEVFS: return 1; case S_MAGIC_BFS: return 1; + case S_MAGIC_BPF_FS: return 1; case S_MAGIC_BINFMTFS: return 1; case S_MAGIC_BTRFS: return 1; + case S_MAGIC_BTRFS_TEST: return 1; case S_MAGIC_CEPH: return 0; case S_MAGIC_CGROUP: return 1; + case S_MAGIC_CGROUP2: return 1; case S_MAGIC_CIFS: return 0; case S_MAGIC_CODA: return 0; case S_MAGIC_COH: return 1; + case S_MAGIC_CONFIGFS: return 1; case S_MAGIC_CRAMFS: return 1; case S_MAGIC_CRAMFS_WEND: return 1; + case S_MAGIC_DAXFS: return 1; case S_MAGIC_DEBUGFS: return 1; case S_MAGIC_DEVFS: return 1; case S_MAGIC_DEVPTS: return 1; case S_MAGIC_ECRYPTFS: return 1; case S_MAGIC_EFIVARFS: return 1; case S_MAGIC_EFS: return 1; + case S_MAGIC_EXFS: return 1; case S_MAGIC_EXOFS: return 1; case S_MAGIC_EXT: return 1; case S_MAGIC_EXT2: return 1; @@ -43,10 +52,13 @@ is_local_fs_type (unsigned long int magic) case S_MAGIC_GFS: return 0; case S_MAGIC_GPFS: return 0; case S_MAGIC_HFS: return 1; + case S_MAGIC_HFS_PLUS: return 1; + case S_MAGIC_HFS_X: return 1; case S_MAGIC_HOSTFS: return 1; case S_MAGIC_HPFS: return 1; case S_MAGIC_HUGETLBFS: return 1; case S_MAGIC_MTD_INODE_FS: return 1; + case S_MAGIC_IBRIX: return 0; case S_MAGIC_INOTIFYFS: return 1; case S_MAGIC_ISOFS: return 1; case S_MAGIC_ISOFS_R_WIN: return 1; @@ -55,7 +67,9 @@ is_local_fs_type (unsigned long int magic) case S_MAGIC_JFFS2: return 1; case S_MAGIC_JFS: return 1; case S_MAGIC_KAFS: return 0; + case S_MAGIC_LOGFS: return 1; case S_MAGIC_LUSTRE: return 0; + case S_MAGIC_M1FS: return 1; case S_MAGIC_MINIX: return 1; case S_MAGIC_MINIX_30: return 1; case S_MAGIC_MINIX_V2: return 1; @@ -67,23 +81,29 @@ is_local_fs_type (unsigned long int magic) case S_MAGIC_NFS: return 0; case S_MAGIC_NFSD: return 0; case S_MAGIC_NILFS: return 1; + case S_MAGIC_NSFS: return 1; case S_MAGIC_NTFS: return 1; case S_MAGIC_OPENPROM: return 1; case S_MAGIC_OCFS2: return 0; + case S_MAGIC_OVERLAYFS: return 0; case S_MAGIC_PANFS: return 0; case S_MAGIC_PIPEFS: return 0; + case S_MAGIC_PRL_FS: return 0; case S_MAGIC_PROC: return 1; case S_MAGIC_PSTOREFS: return 1; case S_MAGIC_QNX4: return 1; case S_MAGIC_QNX6: return 1; case S_MAGIC_RAMFS: return 1; + case S_MAGIC_RDTGROUP: return 1; case S_MAGIC_REISERFS: return 1; case S_MAGIC_ROMFS: return 1; case S_MAGIC_RPC_PIPEFS: return 1; + case S_MAGIC_SDCARDFS: return 1; case S_MAGIC_SECURITYFS: return 1; case S_MAGIC_SELINUX: return 1; case S_MAGIC_SMACK: return 1; case S_MAGIC_SMB: return 0; + case S_MAGIC_SMB2: return 0; case S_MAGIC_SNFS: return 0; case S_MAGIC_SOCKFS: return 1; case S_MAGIC_SQUASHFS: return 1; @@ -91,6 +111,7 @@ is_local_fs_type (unsigned long int magic) case S_MAGIC_SYSV2: return 1; case S_MAGIC_SYSV4: return 1; case S_MAGIC_TMPFS: return 1; + case S_MAGIC_TRACEFS: return 1; case S_MAGIC_UBIFS: return 1; case S_MAGIC_UDF: return 1; case S_MAGIC_UFS: return 1; @@ -100,11 +121,13 @@ is_local_fs_type (unsigned long int magic) case S_MAGIC_VMHGFS: return 0; case S_MAGIC_VXFS: return 0; case S_MAGIC_VZFS: return 1; + case S_MAGIC_WSLFS: return 1; case S_MAGIC_XENFS: return 1; case S_MAGIC_XENIX: return 1; case S_MAGIC_XFS: return 1; case S_MAGIC_XIAFS: return 1; case S_MAGIC_ZFS: return 1; + case S_MAGIC_ZSMALLOC: return 1; default: return -1; } } diff --git a/src/stat.c b/src/stat.c index ba491f4..718b32a 100644 --- a/src/stat.c +++ b/src/stat.c @@ -240,6 +240,10 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) a comment. The S_MAGIC_... name and constant are automatically combined to produce the #define directives in fs.h. */ + case S_MAGIC_AAFS: /* 0x5A3C69F0 local */ + return "aafs"; + case S_MAGIC_ACFS: /* 0x61636673 remote */ + return "acfs"; case S_MAGIC_ADFS: /* 0xADF5 local */ return "adfs"; case S_MAGIC_AFFS: /* 0xADFF local */ @@ -255,30 +259,42 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "aufs"; case S_MAGIC_AUTOFS: /* 0x0187 local */ return "autofs"; + case S_MAGIC_BALLOON_KVM: /* 0x13661366 local */ + return "balloon-kvm-fs"; case S_MAGIC_BEFS: /* 0x42465331 local */ return "befs"; case S_MAGIC_BDEVFS: /* 0x62646576 local */ return "bdevfs"; case S_MAGIC_BFS: /* 0x1BADFACE local */ return "bfs"; + case S_MAGIC_BPF_FS: /* 0xCAFE4A11 local */ + return "bpf_fs"; case S_MAGIC_BINFMTFS: /* 0x42494E4D local */ return "binfmt_misc"; case S_MAGIC_BTRFS: /* 0x9123683E local */ return "btrfs"; + case S_MAGIC_BTRFS_TEST: /* 0x73727279 local */ + return "btrfs_test"; case S_MAGIC_CEPH: /* 0x00C36400 remote */ return "ceph"; case S_MAGIC_CGROUP: /* 0x0027E0EB local */ return "cgroupfs"; + case S_MAGIC_CGROUP2: /* 0x63677270 local */ + return "cgroup2fs"; case S_MAGIC_CIFS: /* 0xFF534D42 remote */ return "cifs"; case S_MAGIC_CODA: /* 0x73757245 remote */ return "coda"; case S_MAGIC_COH: /* 0x012FF7B7 local */ return "coh"; + case S_MAGIC_CONFIGFS: /* 0x62656570 local */ + return "configfs"; case S_MAGIC_CRAMFS: /* 0x28CD3D45 local */ return "cramfs"; case S_MAGIC_CRAMFS_WEND: /* 0x453DCD28 local */ return "cramfs-wend"; + case S_MAGIC_DAXFS: /* 0x64646178 local */ + return "daxfs"; case S_MAGIC_DEBUGFS: /* 0x64626720 local */ return "debugfs"; case S_MAGIC_DEVFS: /* 0x1373 local */ @@ -291,6 +307,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "efivarfs"; case S_MAGIC_EFS: /* 0x00414A53 local */ return "efs"; + case S_MAGIC_EXFS: /* 0x45584653 local */ + return "exfs"; case S_MAGIC_EXOFS: /* 0x5DF5 local */ return "exofs"; case S_MAGIC_EXT: /* 0x137D local */ @@ -311,13 +329,17 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "fusectl"; case S_MAGIC_FUTEXFS: /* 0x0BAD1DEA local */ return "futexfs"; - case S_MAGIC_GFS: /* 0x1161970 remote */ + case S_MAGIC_GFS: /* 0x01161970 remote */ return "gfs/gfs2"; case S_MAGIC_GPFS: /* 0x47504653 remote */ return "gpfs"; case S_MAGIC_HFS: /* 0x4244 local */ return "hfs"; - case S_MAGIC_HOSTFS: /* 0xC0FFEE local */ + case S_MAGIC_HFS_PLUS: /* 0x482B local */ + return "hfs+"; + case S_MAGIC_HFS_X: /* 0x4858 local */ + return "hfsx"; + case S_MAGIC_HOSTFS: /* 0x00C0FFEE local */ return "hostfs"; case S_MAGIC_HPFS: /* 0xF995E849 local */ return "hpfs"; @@ -325,6 +347,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "hugetlbfs"; case S_MAGIC_MTD_INODE_FS: /* 0x11307854 local */ return "inodefs"; + case S_MAGIC_IBRIX: /* 0x013111A8 remote */ + return "ibrix"; case S_MAGIC_INOTIFYFS: /* 0x2BAD1DEA local */ return "inotifyfs"; case S_MAGIC_ISOFS: /* 0x9660 local */ @@ -341,8 +365,12 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "jfs"; case S_MAGIC_KAFS: /* 0x6B414653 remote */ return "k-afs"; + case S_MAGIC_LOGFS: /* 0xC97E8168 local */ + return "logfs"; case S_MAGIC_LUSTRE: /* 0x0BD00BD0 remote */ return "lustre"; + case S_MAGIC_M1FS: /* 0x5346314D local */ + return "m1fs"; case S_MAGIC_MINIX: /* 0x137F local */ return "minix"; case S_MAGIC_MINIX_30: /* 0x138F local */ @@ -365,19 +393,28 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "nfsd"; case S_MAGIC_NILFS: /* 0x3434 local */ return "nilfs"; + case S_MAGIC_NSFS: /* 0x6E736673 local */ + return "nsfs"; case S_MAGIC_NTFS: /* 0x5346544E local */ return "ntfs"; case S_MAGIC_OPENPROM: /* 0x9FA1 local */ return "openprom"; - case S_MAGIC_OCFS2: /* 0x7461636f remote */ + case S_MAGIC_OCFS2: /* 0x7461636F remote */ return "ocfs2"; + case S_MAGIC_OVERLAYFS: /* 0x794C7630 remote */ + /* This may overlay remote file systems. + Also there have been issues reported with inotify and overlayfs, + so mark as "remote" so that polling is used. */ + return "overlayfs"; case S_MAGIC_PANFS: /* 0xAAD7AAEA remote */ return "panfs"; case S_MAGIC_PIPEFS: /* 0x50495045 remote */ /* FIXME: change syntax or add an optional attribute like "inotify:no". - The above is labeled as "remote" so that tail always uses polling, - but this isn't really a remote file system type. */ + pipefs and prlfs are labeled as "remote" so that tail always polls, + but these aren't really remote file system types. */ return "pipefs"; + case S_MAGIC_PRL_FS: /* 0x7C7C6673 remote */ + return "prl_fs"; case S_MAGIC_PROC: /* 0x9FA0 local */ return "proc"; case S_MAGIC_PSTOREFS: /* 0x6165676C local */ @@ -388,12 +425,16 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "qnx6"; case S_MAGIC_RAMFS: /* 0x858458F6 local */ return "ramfs"; + case S_MAGIC_RDTGROUP: /* 0x07655821 local */ + return "rdt"; case S_MAGIC_REISERFS: /* 0x52654973 local */ return "reiserfs"; case S_MAGIC_ROMFS: /* 0x7275 local */ return "romfs"; case S_MAGIC_RPC_PIPEFS: /* 0x67596969 local */ return "rpc_pipefs"; + case S_MAGIC_SDCARDFS: /* 0x5DCA2DF5 local */ + return "sdcardfs"; case S_MAGIC_SECURITYFS: /* 0x73636673 local */ return "securityfs"; case S_MAGIC_SELINUX: /* 0xF97CFF8C local */ @@ -402,6 +443,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "smackfs"; case S_MAGIC_SMB: /* 0x517B remote */ return "smb"; + case S_MAGIC_SMB2: /* 0xFE534D42 remote */ + return "smb2"; case S_MAGIC_SNFS: /* 0xBEEFDEAD remote */ return "snfs"; case S_MAGIC_SOCKFS: /* 0x534F434B local */ @@ -416,6 +459,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "sysv4"; case S_MAGIC_TMPFS: /* 0x01021994 local */ return "tmpfs"; + case S_MAGIC_TRACEFS: /* 0x74726163 local */ + return "tracefs"; case S_MAGIC_UBIFS: /* 0x24051905 local */ return "ubifs"; case S_MAGIC_UDF: /* 0x15013346 local */ @@ -430,10 +475,14 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "v9fs"; case S_MAGIC_VMHGFS: /* 0xBACBACBC remote */ return "vmhgfs"; - case S_MAGIC_VXFS: /* 0xA501FCF5 local */ + case S_MAGIC_VXFS: /* 0xA501FCF5 remote */ + /* Veritas File System can run in single instance or clustered mode, + so mark as remote to cater for the latter case. */ return "vxfs"; case S_MAGIC_VZFS: /* 0x565A4653 local */ return "vzfs"; + case S_MAGIC_WSLFS: /* 0x53464846 local */ + return "wslfs"; case S_MAGIC_XENFS: /* 0xABBA1974 local */ return "xenfs"; case S_MAGIC_XENIX: /* 0x012FF7B4 local */ @@ -444,6 +493,9 @@ human_fstype (STRUCT_STATVFS const *statfsbuf) return "xia"; case S_MAGIC_ZFS: /* 0x2FC12FC1 local */ return "zfs"; + case S_MAGIC_ZSMALLOC: /* 0x58295829 local */ + return "zsmallocfs"; + # elif __GNU__ case FSTYPE_UFS: diff --git a/src/tail.c b/src/tail.c index dc4e10d..f4575d8 100644 --- a/src/tail.c +++ b/src/tail.c @@ -898,6 +898,7 @@ fremote (int fd, const char *name) case 0: break; case -1: +#if 0 { unsigned long int fs_type = buf.f_type; error (0, 0, _("unrecognized file system type 0x%08lx for %s. " @@ -905,6 +906,7 @@ fremote (int fd, const char *name) fs_type, quote (name), PACKAGE_BUGREPORT); /* Treat as "remote", so caller polls. */ } +#endif break; case 1: remote = false;