Blob Blame History Raw
 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;