inotify: start watch descriptor count at 1
authorEric Paris <eparis@redhat.com>
Mon, 17 Aug 2009 01:51:55 +0000 (21:51 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 Aug 2009 20:37:37 +0000 (13:37 -0700)
The inotify_add_watch man page specifies that inotify_add_watch() will
return a non-negative integer.  However, historically the inotify
watches started at 1, not at 0.

Turns out that the inotifywait program provided by the inotify-tools
package doesn't properly handle a 0 watch descriptor.  In 7e790dd5 we
changed from starting at 1 to starting at 0.  This patch starts at 1,
just like in previous kernels, but also just like in previous kernels
it's possible for it to wrap back to 0.  This preserves the kernel
functionality exactly like it was before the patch (neither method broke
the spec)

Signed-off-by: Eric Paris <eparis@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/notify/inotify/inotify_user.c

index c172a7a17b17c598bf9ca1163d27bb2f330c99ec..dc32ed8323ba85075190590ae081846ab99bf62a 100644 (file)
@@ -567,7 +567,7 @@ static struct fsnotify_group *inotify_new_group(struct user_struct *user, unsign
 
        spin_lock_init(&group->inotify_data.idr_lock);
        idr_init(&group->inotify_data.idr);
-       group->inotify_data.last_wd = 0;
+       group->inotify_data.last_wd = 1;
        group->inotify_data.user = user;
        group->inotify_data.fa = NULL;