RE: Possible to make nfs aware of a inotify watch has been set.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: linux-nfs-owner@xxxxxxxxxxxxxxx [mailto:linux-nfs-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Stef Bon
> Sent: Thursday, November 29, 2012 4:33 AM
> To: linux-nfs@xxxxxxxxxxxxxxx
> Cc: linux-cifs
> Subject: Possible to make nfs aware of a inotify watch has been set.
> 
> Hi,
> 
> as far as I know individual filesystems are not aware an inotify watch has
> been set on a inode managed by that filesystem.
> 
> For local only filesystems like ext2/3/4 etcetera this is no problem.
> But with network filesystems
> like nfs and cifs (and also fuse types) this is not ideal, since changes made by
> others (since the backend is shared with others) are never watched.
> 
> I'm working on a filesystem change watcher notifyfs, and puzzling already for
> a long time howto enable the watching of fs events on these filesystems.
> 
> I've some idea's:
> 
> a. notifyfs is working on the local (A) and the remote host (B), and is doing it's
> thing without using the filesystem. When a client contacts notifyfs to set a
> watch on a nfs (or cifs) share, notifyfs detects it a nfs share. It finds out the
> remote host by analyzing the mount, and gets the details like remote
> address and directory. With nfs that's easy, since the mount is like
> remotehost:/directory, with cifs this is a bit more difficult, but doable.
> After getting the details, it can forward the watch to the remote host (B), on
> which also notifyfs is running, and listning to a tcp port.
> This notifyfs process on his turn watches the desired fs object using the
> abilities on that host, and sends anything back to the local host (A).
> 
> I've experimented with this, and got it working when using sshfs.
> 
> This is very easy to setup, and simple to understand, but some drawbacks:
> 
> 1. while the filesystems are using credentails or tickets to get access to a
> remote resource, this is a bit difficult for notifyfs.
> Notifyfs bypasses that. Maybe this leads to permissions/abuse I cannot see
> directly.

Lack of security is a showstopper. There are good reasons why inotify won't allow you to monitor files for which you don't have access permissions.

> 2. the filesystem still does not know that something has changed (on B). It
> should be made aware as fast as possible to make the changes effective on
> localhost A. Maybe notifyfs should just trigger that by doing a lookup on an
> entry when it has been removed on the remote host for example.
> 
> b. notifyfs forwards the watch to nfs (and cifs) using netlink. Since nfs and
> cifs are in kernelspace, and notifyfs is in userspace, netlink is the way to go to
> communicate.This is possible, and I've thought this is the best way to go for a
> long time, but complicated when compared to the last method:
> 
> c.  make filesystems like nfs and cifs aware a inotify watch has been set. Untill
> now the filesystems self are totally not notified a watch has been set (and of
> course also changed/removed). This is by design.
> For local filesystems it's not required, it will not get any extra, but nfs and cifs
> and fuse fs's can use this info to set a watch on the backend using the
> methods/api specific to the filesystem. For example cifs will send a
> SMB2_CHANGE_NOTIFY to the server, and waiting for results.
> 
> What do you think, is the latest option possible??

So what is the killer app for inotify on NFS/CIFS/FUSE? What programs do you need to run on a NFS/CIFS/FUSE client that use inotify and that wouldn't be better off running on the server instead?

IOW: whose problem are you trying to solve?

Trond
��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux