Confirmed, the user is getting duplicate notifications. Looks like
this has been working this way since the original inotify patch. Is
this the intended behavior?
On Sun, Nov 14, 2010 at 08:14, Alexey Zaytsev <[email protected]> wrote:
> Hi.
>
> Have not tested, but this code in fs/nfsd/vfs.c looks suspicious:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/nfsd/vfs.c;h=184938fcff04d5dff712b8bee01f5d7e41bb20ad;hb=HEAD#l1032
>
> 1032 host_err = vfs_writev(file, (struct iovec __user *)vec,
> vlen, &offset);
> 1033 set_fs(oldfs);
> 1034 if (host_err < 0)
> 1035 goto out_nfserr;
> 1036 *cnt = host_err;
> 1037 nfsdstats.io_write += host_err;
> 1038 fsnotify_modify(file);
>
> fsnotify_modify() is called from vfs_writev() -> do_readv_writev(),
> and the users are probably getting duplicate events, right?
>
On Mon, Nov 15, 2010 at 02:15:55AM +0300, Alexey Zaytsev wrote:
> Confirmed, the user is getting duplicate notifications. Looks like
> this has been working this way since the original inotify patch. Is
> this the intended behavior?
I can't think of any reason for the nfsd code to be diong the
notification itself--looks like just a mistake to me.
--b.
>
> On Sun, Nov 14, 2010 at 08:14, Alexey Zaytsev <[email protected]> wrote:
> > Hi.
> >
> > Have not tested, but this code in fs/nfsd/vfs.c looks suspicious:
> > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/nfsd/vfs.c;h=184938fcff04d5dff712b8bee01f5d7e41bb20ad;hb=HEAD#l1032
> >
> > 1032 host_err = vfs_writev(file, (struct iovec __user *)vec,
> > vlen, &offset);
> > 1033 set_fs(oldfs);
> > 1034 if (host_err < 0)
> > 1035 goto out_nfserr;
> > 1036 *cnt = host_err;
> > 1037 nfsdstats.io_write += host_err;
> > 1038 fsnotify_modify(file);
> >
> > fsnotify_modify() is called from vfs_writev() -> do_readv_writev(),
> > and the users are probably getting duplicate events, right?
> >