While been restoring fanotify objects I discovered that the minimum information we provide now is enough to restore notification marks but still a bit incomplete for fanotify_init system call (the @flags and @event-flags are unknown). This patch adds missing bits into fdinfo output.
An example of output is below | pos: 0 | flags: 04002 | fanotify flags:10 event-flags:0 | fanotify mnt_id:12 mask:3b ignored_mask:0 | fanotify ino:50205 sdev:800013 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:05020500fb1d47e7 Signed-off-by: Cyrill Gorcunov <[email protected]> CC: Pavel Emelyanov <[email protected]> CC: Oleg Nesterov <[email protected]> CC: Andrey Vagin <[email protected]> CC: Al Viro <[email protected]> CC: Andrew Morton <[email protected]> CC: James Bottomley <[email protected]> CC: "Aneesh Kumar K.V" <[email protected]> CC: Alexey Dobriyan <[email protected]> CC: Matthew Helsley <[email protected]> CC: "J. Bruce Fields" <[email protected]> CC: Tvrtko Ursulin <[email protected]> --- fs/notify/fdinfo.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) Index: linux-2.6.git/fs/notify/fdinfo.c =================================================================== --- linux-2.6.git.orig/fs/notify/fdinfo.c +++ linux-2.6.git/fs/notify/fdinfo.c @@ -4,6 +4,7 @@ #include <linux/idr.h> #include <linux/init.h> #include <linux/inotify.h> +#include <linux/fanotify.h> #include <linux/kernel.h> #include <linux/namei.h> #include <linux/sched.h> @@ -140,6 +141,30 @@ out: int fanotify_show_fdinfo(struct seq_file *m, struct file *f) { + struct fsnotify_group *group = f->private_data; + unsigned int flags = 0; + + switch (group->priority) { + case FS_PRIO_0: + flags |= FAN_CLASS_NOTIF; + break; + case FS_PRIO_1: + flags |= FAN_CLASS_CONTENT; + break; + case FS_PRIO_2: + flags |= FAN_CLASS_PRE_CONTENT; + break; + } + + if (group->max_events == UINT_MAX) + flags |= FAN_UNLIMITED_QUEUE; + + if (group->fanotify_data.max_marks == UINT_MAX) + flags |= FAN_UNLIMITED_MARKS; + + seq_printf(m, "fanotify flags:%x event-flags:%x\n", + flags, group->fanotify_data.f_flags); + return show_fdinfo(m, f, fanotify_fdinfo); } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

