Subject: Re: bug#12301: tail -F & ZFS
From: Jim Meyering <[email-masked]>
To: Raimonds Miltins <[email-masked]>
Cc: [email-masked]
Date: Wed, 29 Aug 2012 09:43:04 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Raimonds Miltins wrote:
> I'm using Gentoo linux on ZFS and see following when opened file with
> tail -F (or -f):
> tail: unrecognized file system type 0x2fc12fc1 for
> ‘/var/log/messages’. please report this to
> [email-masked]. reverting to polling
>
> Distro: Gentoo
> Kernel: 3.2.22
> Coreutils: 8.16

Thank you!  That also affects the very latest, coreutils-8.19.
Here's the patch I've just pushed:

From c9888e0debce29c6a0f7134bbc6d0ffd3f196bc5 Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email-masked]>
Date: Wed, 29 Aug 2012 09:32:49 +0200
Subject: [PATCH] tail,stat: improve support for ZFS

This change enables tail -f to use inotify and lets
stat -f --format=%T report the file system type name, "zfs".
* src/stat.c (human_fstype): Add a case: zfs, 0x2fc12fc1.
* NEWS (Improvements): Mention it.
* THANKS.in: Update.
Reported by Raimonds Miltins in http://bugs.gnu.org/12301.
---
 NEWS       | 7 +++++++
 THANKS.in  | 1 +
 src/stat.c | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/NEWS b/NEWS
index 798a512..f3874fd 100644
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,13 @@ GNU coreutils NEWS                                    -*- outline -*-
   than ignoring the -d option and failing with an 'Is a directory' error.
   [bug introduced in coreutils-8.19, with the addition of --dir (-d)]

+** Improvements
+
+  stat and tail work better with ZFS.  stat -f --format=%T now reports the
+  file system type, "zfs", and tail -f now uses inotify for files on ZFS
+  file systems, rather than the default (for unknown file system types)
+  of polling.
+

 * Noteworthy changes in release 8.19 (2012-08-20) [stable]

diff --git a/THANKS.in b/THANKS.in
index f288174..1580151 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -507,6 +507,7 @@ Piotr Kwapulinski                   [email-masked]
 Prashant TR                         [email-masked]
 Priit Jõerüüt                       [email-masked]
 Primoz PETERLIN                     [email-masked]
+Raimonds Miltins                    [email-masked]
 Rainer Orth                         [email-masked]
 Ralf W. Stephan                     [email-masked]
 Ralph Loader                        [email-masked]
diff --git a/src/stat.c b/src/stat.c
index e56f1ff..f75b7af 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -423,6 +423,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
       return "xfs";
     case S_MAGIC_XIAFS: /* 0x012FD16D local */
       return "xia";
+    case S_MAGIC_ZFS: /* 0x2FC12FC1 local */
+      return "zfs";

 # elif __GNU__
     case FSTYPE_UFS:
--
1.7.12.116.g31e0100