Subject: bug#10349: tail: fix --follow on FhGFS remote file systems

From: Sven Breuner <[email-masked]>
Date: Fri, 23 Dec 2011 00:49:02 +0100

Hi Alan,

Alan Curry wrote on 12/22/2011 10:50 PM:
> Bob Proulx writes:
>>
>> Jim Meyering wrote:
>>> Are there so many new remote file systems coming into use now?
>>> That are not listed in /usr/include/linux/magic.h?
>>
>> The past can always be enumerated.  The future is always changing.  It
>> isn't possible to have a complete list of future items.  It is only
>> possible to have a complete list of past items.  The future is not yet
>> written.
>
> Between past and future is the present, i.e. the currently running kernel.
> Shouldn't it return an error when you use an interface that isn't implemented
> by the underlying filesystem? Why doesn't this happen?

Actually, the kernel provides a nice generic inotify framework for file 
systems, so that inotify support on a single machine comes almost 
automatically. In the case of FhGFS (and I assume it's similar for other 
network file systems) inotify works perfectly if the process modifying a 
file and the process inotify-watching the file are running on the same 
machine. Since inotify is generally a good thing and nice to have, you 
wouldn't want to do anything to make it return an error here.

However, specifically the tail utility is also often used in a cluster 
environment when some compute nodes are writing a job log file and you 
are on a different machine watching that log file with "tail -f". 
Supporting this distributed inotify use case would mean quite some extra 
work for file systems and would rarely be useful for other distributed 
use cases (as distributed applications can normally just communicate 
directly via messages if they want to notify another machine about file 
updates, thus they won't need anything like inotify), which is probably 
the reason why most network file systems don't support distributed inotify.

(For FhGFS, we're actually considering to add distributed inotify 
support, but since it's a low priority task for the reasons mentioned 
above, we probably won't add it in the near future.)

Best regards,
Sven