diff options
author | Pavel Emelyanov <xemul@parallels.com> | 2011-10-31 20:10:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-31 20:30:51 -0400 |
commit | d70ef97baf048412c395bb5d65791d8fe133a52b (patch) | |
tree | 3e546d3a29bcf52d52304aeb3fa911c65fc52ef7 /fs/pipe.c | |
parent | a8aff21ecc8c455687c5bb2b98cb04dce3eea7c7 (diff) |
fs/pipe.c: add ->statfs callback for pipefs
Currently a statfs on a pipe's /proc/<pid>/fd/ link returns -ENOSYS. Wire
pipfs up so that the statfs succeeds.
This is required by checkpoint-restart in the userspace to make it
possible to distinguish pipes from fifos.
When we dump information about task's open files we use the /proc/pid/fd
directoy's symlinks and the fact that opening any of them gives us exactly
the same dentry->inode pair as the original process has. Now if a task
we're dumping has opened pipe and fifo we need to detect this and act
accordingly. Knowing that an fd with type S_ISFIFO resides on a pipefs is
the most precise way.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Reviewed-by: Tejun Heo <tj@kernel.org>
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/pipe.c')
-rw-r--r-- | fs/pipe.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -1254,6 +1254,7 @@ out: | |||
1254 | 1254 | ||
1255 | static const struct super_operations pipefs_ops = { | 1255 | static const struct super_operations pipefs_ops = { |
1256 | .destroy_inode = free_inode_nonrcu, | 1256 | .destroy_inode = free_inode_nonrcu, |
1257 | .statfs = simple_statfs, | ||
1257 | }; | 1258 | }; |
1258 | 1259 | ||
1259 | /* | 1260 | /* |