Fixes for fdinfo output and docs
Subsystems (3)
cover Fixes for fdinfo output and docs
Hi Andrew, here are few nit-fixes for /proc/<pid>/fdinfo/<fd> handlers and I tried to write some documentation about the format used in output. I guess Documentation/filesystems/proc.txt is the best place for it since the information is rendered via procfs inteface.
Guys, I would really appreciate to feedback on documentation changes and complains are quite welcome here.
(As to one of previous feedback
| btw, Documentation/sysctl/fs.txt is missing documentation for | max_user_instances and max_queued_events. Perhaps you can fix that | when providing the documentation changes for your patch.
I remember about it and will cook patch soon).
Cyrill
PATCH 1/4 fs, notify: Add missing space after prefix
While being prepared the first series I occasionally left "inotify-wd" token not updated. This patch fixes it and bring space between prefix and the rest of line back.
--- fs/notify/fdinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/notify/fdinfo.c +1 -1
@@ -86,7 +86,7 @@ static int inotify_fdinfo(struct seq_fil inode_mark = container_of(mark, struct inotify_inode_mark, fsn_mark); inode =igrab (mark->i.inode);if (inode) { - ret = seq_printf(m, "inotify-wd:%x ino:%lx sdev:%x " + ret = seq_printf(m, "inotify wd:%x ino:%lx sdev:%x " "mask:%x ignored_mask:%x ", inode_mark->wd, inode->i_ino, inode->i_sb->s_dev,
PATCH 2/4 fs, epoll: Drop enabled field from fdinfo output
In reply to Cyrill GorcunovOnce EPOLL_CTL_DISABLE get merged into mainline I'll bring "enabled" field back. Plain check for rdllink is not enough here and should be extended, thus to not confuse the readers drop it for a while.
--- fs/eventpoll.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
fs/eventpoll.c +2 -3
@@ -796,10 +796,9 @@ static int ep_show_fdinfo(struct seq_filfor (rbp =rb_first (&ep->rbr); rbp; rbp =rb_next (rbp)) { struct epitem *epi = rb_entry(rbp, struct epitem, rbn); - ret =seq_printf (m,"tfd: %8d events: %8x data: %16llx enabled: %d\n" , + ret =seq_printf (m,"tfd: %8d events: %8x data: %16llx\n" , epi->ffd.fd, epi->event.events, - (long long )epi->event.data, -ep_is_linked (&epi->rdllink)); + (long long )epi->event.data);if (ret)break ; }
PATCH 3/4 fs, notify: Dont forget to provide fhandle for inode fanotify
In reply to Cyrill GorcunovFor inode based fanotify I missed to add fhandle output. This patch brings it in.
| pos: 0 | flags: 02 | fanotify ino:2 sdev:800013 mask:1 ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:0200000000000000
--- fs/notify/fdinfo.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
fs/notify/fdinfo.c +5 -3
@@ -36,8 +36,6 @@ static int show_fdinfo(struct seq_file *return ret; } -#ifdef CONFIG_INOTIFY_USER -#if defined(CONFIG_EXPORTFS )static int show_mark_fhandle (struct seq_file *m,struct inode *inode) {
@@ -74,6 +72,8 @@ static int show_mark_fhandle(struct seq_ }#endif +#ifdef CONFIG_INOTIFY_USER +static int inotify_fdinfo (struct seq_file *m,struct fsnotify_mark *mark) {struct inotify_inode_mark *inode_mark;
@@ -121,9 +121,11 @@ static int fanotify_fdinfo(struct seq_fiif (!inode) goto out; ret =seq_printf (m,"fanotify ino:%lx sdev:%x " -"mask:%x ignored_mask:%x\n" , +"mask:%x ignored_mask:%x " , inode->i_ino, inode->i_sb->s_dev, mark->mask, mark->ignored_mask); + ret |=show_mark_fhandle (m, inode); + ret |=seq_putc (m,'\n' );iput (inode); }else if (mark->flags &FSNOTIFY_MARK_FLAG_VFSMOUNT ) {struct mount *mnt =real_mount (mark->m.mnt);
PATCH 4/4 docs: Add documentation about /proc/<pid>/fdinfo/<fd> output
In reply to Cyrill Gorcunov--- Documentation/filesystems/proc.txt | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+)
Documentation/filesystems/proc.txt +81 -0
@@ -41,6 +41,7 @@ Table of Contents 3.5 /proc/<pid>/mountinfo - Information about mounts 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm 3.7 /proc/<pid>/task/<tid>/children - Information about task children + 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file 4 Configuring procfs 4.1 Mount options
@@ -1623,6 +1624,86 @@ pids, so one need to either stop or free if precise results are needed. +3.7 /proc/<pid>/fdinfo/<fd> - Information about opened file +--------------------------------------------------------------- +This file provides information associated with an opened file. The regular +files have at least two fields -- 'pos' and 'flags'. The 'pos' represents +the current offset of the opened file in decimal form [see lseek(2) for +details] and the 'flags' denotes octal O_xxx mask the file has been +created with [see open(2) for details]. + +A typical output is + + pos: 0 + flags: 0100002 + +The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags +pair provide additional information peculiar to the objects they represent. + + Eventfd files + ~~~~~~~~~~~~~ + pos: 0 + flags: 04002 + eventfd-count: 5a + + where 'eventfd-count' is hex value of a counter. + + Signalfd files + ~~~~~~~~~~~~~~ + pos: 0 + flags: 04002 + sigmask: 0000000000000200 + + where 'sigmask' is hex value of the signal mask associated + with a file. + + Epoll files + ~~~~~~~~~~~ + pos: 0 + flags: 02 + tfd: 5 events: 1d data: ffffffffffffffff + + where 'tfd' is a target file descriptor number in decimal form, + 'events' is events mask being watched and the 'data' is data + associated with a target [see epoll(7) for more details]. + + Fsnotify files + ~~~~~~~~~~~~~~ + For inotify files the format is the following + + pos: 0 + flags: 02000000 + inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d + + where 'wd' is a watch descriptor in decimal form, ie a target file + descriptor number, 'ino' and 'sdev' are inode and device where the + target file lays on and the 'mask' is the mask of events, all in hex + form [see inotify(7) for more details]. + + In case if the kernel built with exportfs the path to the target file + is encoded as a file handle. The file handle provided by three fields + 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex format. + + If the kernel is built without exportfs support the file handle won't be + printed out. + + For fanotify files the format is the following + + pos: 0 + flags: 02 + fanotify ino:2 sdev:800013 mask:1 ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:0200000000000000 + + or + + pos: 0 + flags: 02 + fanotify mnt_id:13 mask:1 ignored_mask:40000000 + + where 'ino', 'sdev' are target inode and device, 'mnt_id' is the mount point identifier, + 'mask' is the events mask used and 'ignored_mask' is the mask of events which are + to be ignored. All written in hex format. + + ------------------------------------------------------------------------------ Configuring procfs ------------------------------------------------------------------------------
Re: [patch -mm 4/4] docs: Add documentation about /proc/<pid>/fdinfo/<fd> output
Quoted 1 line · On Fri, 23 Nov 2012 01:15:26 +0400 Cyrill Gorcunov <[email protected]> wrote:
Documentation/filesystems/proc.txt | 81 +++++++++++++++++++++++++++++++++++++
Looks good to me. Here's a small tune-up:
Documentation/filesystems/proc.txt renamed from Documentation/filesystems/proc.txt~docs-add-documentation-about-proc-pid-fdinfo-fd-output-fix +11 -10
@@ -1639,7 +1639,7 @@ if precise results are needed. This file provides information associated with an opened file. The regular files have at least two fields -- 'pos' and 'flags'. The 'pos' represents the current offset of the opened file in decimal form [see lseek(2) for -details] and the 'flags' denotes octal O_xxx mask the file has been +details] and 'flags' denotes the octal O_xxx mask the file has been created with [see open(2) for details]. A typical output is
@@ -1648,7 +1648,7 @@ A typical output is flags: 0100002 The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags -pair provide additional information peculiar to the objects they represent. +pair provide additional information particular to the objects they represent. Eventfd files ~~~~~~~~~~~~~
@@ -1687,17 +1687,18 @@ pair provide additional information pecu where 'wd' is a watch descriptor in decimal form, ie a target file descriptor number, 'ino' and 'sdev' are inode and device where the - target file lays on and the 'mask' is the mask of events, all in hex + target file resides and the 'mask' is the mask of events, all in hex form [see inotify(7) for more details]. - In case if the kernel built with exportfs the path to the target file - is encoded as a file handle. The file handle provided by three fields - 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex format. + If the kernel was built with exportfs support, the path to the target + file is encoded as a file handle. The file handle is provided by three + fields 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex + format. If the kernel is built without exportfs support the file handle won't be printed out. - For fanotify files the format is the following + For fanotify files the format is pos: 0 flags: 02
@@ -1709,9 +1710,9 @@ pair provide additional information pecu flags: 02 fanotify mnt_id:13 mask:1 ignored_mask:40000000 - where 'ino', 'sdev' are target inode and device, 'mnt_id' is the mount point identifier, - 'mask' is the events mask used and 'ignored_mask' is the mask of events which are - to be ignored. All written in hex format. + where 'ino', 'sdev' are target inode and device, 'mnt_id' is the mount + point identifier, 'mask' is the events mask used and 'ignored_mask' is + the mask of events which are to be ignored. All in hex format. ------------------------------------------------------------------------------
_
Re: [patch -mm 4/4] docs: Add documentation about /proc/<pid>/fdinfo/<fd> output
Quoted 6 lines · Andrew Morton
Quoted 1 line · On Fri, 23 Nov 2012 01:15:26 +0400 Cyrill Gorcunov <[email protected]> wrote:
Documentation/filesystems/proc.txt | 81 +++++++++++++++++++++++++++++++++++++Looks good to me. Here's a small tune-up:
Thanks a lot, Andrew!
Cyrill