Inotify fails to send IN_ATTRIB events

From: Morten Welinder
Date: Tue Nov 20 2007 - 22:11:43 EST


I am seeing missing inotify IN_ATTRIB events in the following situation:

1. "touch foo"

2. Make inotify watch "foo"

3. "ln foo bar"
--> Link count changed so I should have gotten an IN_ATTRIB.

4. "rm foo"
--> Link count changed so I should have gotten an IN_ATTRIB. (Or
IN_DELETE_SELF;
I don't care which.)

5. "ln bar foo && rm bar"
--> Still no events.

6. "mv foo bar"
--> I get IN_MOVED_SELF. Good!

7. "mv bar foo"
--> I get IN_MOVED_SELF. Good!


3+4 is pretty much the same as 6, so I really ought to be told that my
file has changed
name. I don't really care much about getting notified about 3, but
for completeness
it ought to be handled.

As far as I can see, the only way to be told about 4 is to put a watch
on the directory in
which foo resides. That is inelegant and has an inherent race condition.

This is with "Linux version 2.6.22.12-0.1-default" (SuSE 10.3)

Looking at current source, fs/namei.c, I notice that vfs_rename has a
fsnotify_move call
(which notified directory as well as files) whereas sys_link only has
a fsnotify_create call
(which notified the directory only).

Morten
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/