From: Al Viro <viro@ZenIV.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [git pull] vfs pile 1
Date: Mon, 22 Jun 2015 07:47:37 +0100 [thread overview]
Message-ID: <20150622064737.GQ17109@ZenIV.linux.org.uk> (raw)
In this pile: pathname resolution rewrite.
* recursion in link_path_walk() is gone.
* nesting limits on symlinks are gone (the only limit remaining is that
the total amount of symlinks is no more than 40, no matter how nested).
* "fast" (inline) symlinks are handled without leaving rcuwalk mode.
* stack footprint (independent of the nesting) is below kilobyte now -
about on par with what it used to be with one level of nested symlinks
and ~2.8 times lower than it used to be in the worst case.
* struct nameidata is entirely private to fs/namei.c now (not even opaque
pointers are being passed around).
* ->follow_link() and ->put_link() calling conventions had been changed;
all in-tree filesystems converted, out-of-tree should be able to follow
reasonably easy; see Documentation/filesystems/porting for details (and
in-tree filesystems for examples of conversion).
That has sat in -next since mid-May, seems to survive all testing without
regressions and merges clean with v4.1. Please, pull from
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus-1
Shortlog:
Al Viro (123):
9p: don't bother with 4K allocation for 24-byte local array...
9p: don't bother with __getname() in ->follow_link()
ext4: split inode_operations for encrypted symlinks off the rest
libfs: simple_follow_link()
ext2: use simple_follow_link()
befs: switch to simple_follow_link()
ext3: switch to simple_follow_link()
ext4: switch to simple_follow_link()
jffs2: switch to simple_follow_link()
shmem: switch to simple_follow_link()
debugfs: switch to simple_follow_link()
ufs: switch to simple_follow_link()
ubifs: switch to simple_follow_link()
sysv: switch to simple_follow_link()
jfs: switch to simple_follow_link()
freevxfs: switch to simple_follow_link()
exofs: switch to {simple,page}_symlink_inode_operations
ceph: switch to simple_follow_link()
logfs: fix a pagecache leak for symlinks
uninline walk_component()
namei: take O_NOFOLLOW treatment into do_last()
do_last: kill symlink_ok
do_last: regularize the logics around following symlinks
namei: get rid of lookup_hash()
name: shift nameidata down into user_path_walk()
namei: lift nameidata into filename_mountpoint()
new ->follow_link() and ->put_link() calling conventions
namei.c: separate the parts of follow_link() that find the link body
namei: don't bother with ->follow_link() if ->i_link is set
namei: introduce nameidata->link
do_last: move path there from caller's stack frame
namei: expand nested_symlink() in its only caller
namei: expand the call of follow_link() in link_path_walk()
namei: move the calls of may_follow_link() into follow_link()
namei: rename follow_link to trailing_symlink, move it down
link_path_walk: handle get_link() returning ERR_PTR() immediately
link_path_walk: don't bother with walk_component() after jumping link
link_path_walk: turn inner loop into explicit goto
link_path_walk: massage a bit more
link_path_walk: get rid of duplication
link_path_walk: final preparations to killing recursion
link_path_walk: kill the recursion
link_path_walk: split "return from recursive call" path
link_path_walk: cleanup - turn goto start; into continue;
namei: move link/cookie pairs into nameidata
namei: trim redundant arguments of trailing_symlink()
namei: trim redundant arguments of fs/namei.c:put_link()
namei: trim the arguments of get_link()
namei: remove restrictions on nesting depth
link_path_walk: nd->depth massage, part 1
link_path_walk: nd->depth massage, part 2
link_path_walk: nd->depth massage, part 3
link_path_walk: nd->depth massage, part 4
trailing_symlink: nd->depth massage, part 5
get_link: nd->depth massage, part 6
trailing_symlink: nd->depth massage, part 7
put_link: nd->depth massage, part 8
link_path_walk: nd->depth massage, part 9
link_path_walk: nd->depth massage, part 10
link_path_walk: end of nd->depth massage
namei: we never need more than MAXSYMLINKS entries in nd->stack
namei: lift (open-coded) terminate_walk() in follow_dotdot_rcu() into callers
lift terminate_walk() into callers of walk_component()
namei: lift (open-coded) terminate_walk() into callers of get_link()
namei: take put_link() into {lookup,mountpoint,do}_last()
namei: have terminate_walk() do put_link() on everything left
link_path_walk: move the OK: inside the loop
namei: new calling conventions for walk_component()
namei: make should_follow_link() store the link in nd->link
namei: move link count check and stack allocation into pick_link()
lustre: rip the private symlink nesting limit out
namei: simplify the callers of follow_managed()
don't pass nameidata to ->follow_link()
namei: simplify failure exits in get_link()
namei: simpler treatment of symlinks with nothing other that / in the body
namei: take the treatment of absolute symlinks to get_link()
namei: fold put_link() into the failure case of complete_walk()
namei: move bumping the refcount of link->mnt into pick_link()
may_follow_link(): trim arguments
namei: kill nd->link
namei: take increment of nd->depth into pick_link()
namei: may_follow_link() - lift terminate_walk() on failures into caller
namei: split off filename_lookupat() with LOOKUP_PARENT
namei: get rid of nameidata->base
namei: path_init() calling conventions change
namei: lift link_path_walk() call out of trailing_symlink()
namei: lift terminate_walk() all the way up
link_path_walk: use explicit returns for failure exits
namei: explicitly pass seq number to unlazy_walk() when dentry != NULL
namei: don't mangle nd->seq in lookup_fast()
namei: store inode in nd->stack[]
namei: pick_link() callers already have inode
switch ->put_link() from dentry to inode
new helper: free_page_put_link()
namei: make put_link() RCU-safe
namei: make may_follow_link() safe in RCU mode
new helper: __legitimize_mnt()
namei: store seq numbers in nd->stack[]
namei: make unlazy_walk and terminate_walk handle nd->stack, add unlazy_link
namei: don't unlazy until get_link()
enable passing fast relative symlinks without dropping out of RCU mode
namei: handle absolute symlinks without dropping out of RCU mode
update Documentation/filesystems/ regarding the follow_link/put_link changes
namei: unlazy_walk() doesn't need to mess with current->fs anymore
lustre: kill unused macro (LOOKUP_CONTINUE)
lustre: kill unused helper
get rid of assorted nameidata-related debris
namei: be careful with mountpoint crossings in follow_dotdot_rcu()
namei: uninline set_root{,_rcu}()
namei: pass the struct path to store the result down into path_lookupat()
namei: move putname() call into filename_lookup()
namei: shift nameidata inside filename_lookup()
namei: make filename_lookup() reject ERR_PTR() passed as name
namei: shift nameidata down into filename_parentat()
namei: saner calling conventions for filename_create()
namei: saner calling conventions for filename_parentat()
namei: fold path_cleanup() into terminate_walk()
namei: stash dfd and name into nameidata
namei: trim do_last() arguments
inline user_path_parent()
inline user_path_create()
namei: move saved_nd pointer into struct nameidata
turn user_{path_at,path,lpath,path_dir}() into static inlines
David Howells (1):
VFS: Handle lower layer dentry/inode in pathwalk
NeilBrown (7):
ovl: rearrange ovl_follow_link to it doesn't need to call ->put_link
SECURITY: remove nameidata arg from inode_follow_link.
VFS: replace {, total_}link_count in task_struct with pointer to nameidata
security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags()
security: make inode_follow_link RCU-walk aware
VFS/namei: make the use of touch_atime() in get_link() RCU-safe.
Documentation: remove outdated information from automount-support.txt
Diffstat:
Documentation/filesystems/Locking | 4 +-
Documentation/filesystems/automount-support.txt | 51 +-
Documentation/filesystems/porting | 17 +
Documentation/filesystems/vfs.txt | 22 +-
.../lustre/lustre/include/linux/lustre_compat25.h | 15 -
.../staging/lustre/lustre/llite/llite_internal.h | 6 -
drivers/staging/lustre/lustre/llite/symlink.c | 26 +-
fs/9p/v9fs.h | 2 -
fs/9p/vfs_inode.c | 123 +-
fs/9p/vfs_inode_dotl.c | 39 +-
fs/autofs4/symlink.c | 5 +-
fs/befs/linuxvfs.c | 57 +-
fs/ceph/inode.c | 11 +-
fs/cifs/cifsfs.h | 2 +-
fs/cifs/link.c | 28 +-
fs/configfs/symlink.c | 31 +-
fs/debugfs/file.c | 12 -
fs/debugfs/inode.c | 6 +-
fs/ecryptfs/inode.c | 11 +-
fs/exofs/Kbuild | 2 +-
fs/exofs/exofs.h | 4 -
fs/exofs/inode.c | 9 +-
fs/exofs/namei.c | 5 +-
fs/exofs/symlink.c | 55 -
fs/ext2/inode.c | 1 +
fs/ext2/namei.c | 3 +-
fs/ext2/symlink.c | 10 +-
fs/ext3/inode.c | 1 +
fs/ext3/namei.c | 3 +-
fs/ext3/symlink.c | 10 +-
fs/ext4/ext4.h | 1 +
fs/ext4/inode.c | 7 +-
fs/ext4/namei.c | 11 +-
fs/ext4/symlink.c | 48 +-
fs/f2fs/namei.c | 18 +-
fs/freevxfs/vxfs_extern.h | 3 -
fs/freevxfs/vxfs_immed.c | 34 -
fs/freevxfs/vxfs_inode.c | 7 +-
fs/fuse/dir.c | 22 +-
fs/gfs2/inode.c | 10 +-
fs/hostfs/hostfs_kern.c | 15 +-
fs/hppfs/hppfs.c | 13 +-
fs/inode.c | 31 +-
fs/jffs2/dir.c | 1 +
fs/jffs2/fs.c | 1 +
fs/jffs2/symlink.c | 45 +-
fs/jfs/inode.c | 3 +-
fs/jfs/namei.c | 5 +-
fs/jfs/symlink.c | 10 +-
fs/kernfs/symlink.c | 25 +-
fs/libfs.c | 25 +-
fs/logfs/dir.c | 1 +
fs/mount.h | 1 +
fs/namei.c | 1453 ++++++++++----------
fs/namespace.c | 27 +-
fs/nfs/symlink.c | 19 +-
fs/ntfs/namei.c | 2 +-
fs/open.c | 2 +-
fs/overlayfs/inode.c | 35 +-
fs/proc/base.c | 4 +-
fs/proc/inode.c | 9 +-
fs/proc/namespaces.c | 4 +-
fs/proc/self.c | 24 +-
fs/proc/thread_self.c | 22 +-
fs/sysv/Makefile | 2 +-
fs/sysv/inode.c | 5 +-
fs/sysv/symlink.c | 20 -
fs/sysv/sysv.h | 1 -
fs/ubifs/dir.c | 1 +
fs/ubifs/file.c | 11 +-
fs/ubifs/super.c | 1 +
fs/ufs/inode.c | 5 +-
fs/ufs/namei.c | 3 +-
fs/ufs/symlink.c | 13 +-
fs/xfs/xfs_iops.c | 11 +-
include/linux/debugfs.h | 1 -
include/linux/fs.h | 16 +-
include/linux/namei.h | 41 +-
include/linux/sched.h | 3 +-
include/linux/security.h | 13 +-
mm/shmem.c | 32 +-
security/capability.c | 4 +-
security/security.c | 7 +-
security/selinux/avc.c | 18 +-
security/selinux/hooks.c | 18 +-
security/selinux/include/avc.h | 9 +-
86 files changed, 1222 insertions(+), 1522 deletions(-)
delete mode 100644 fs/exofs/symlink.c
delete mode 100644 fs/sysv/symlink.c
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
WARNING: multiple messages have this Message-ID (diff)
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [git pull] vfs pile 1
Date: Mon, 22 Jun 2015 07:47:37 +0100 [thread overview]
Message-ID: <20150622064737.GQ17109@ZenIV.linux.org.uk> (raw)
In this pile: pathname resolution rewrite.
* recursion in link_path_walk() is gone.
* nesting limits on symlinks are gone (the only limit remaining is that
the total amount of symlinks is no more than 40, no matter how nested).
* "fast" (inline) symlinks are handled without leaving rcuwalk mode.
* stack footprint (independent of the nesting) is below kilobyte now -
about on par with what it used to be with one level of nested symlinks
and ~2.8 times lower than it used to be in the worst case.
* struct nameidata is entirely private to fs/namei.c now (not even opaque
pointers are being passed around).
* ->follow_link() and ->put_link() calling conventions had been changed;
all in-tree filesystems converted, out-of-tree should be able to follow
reasonably easy; see Documentation/filesystems/porting for details (and
in-tree filesystems for examples of conversion).
That has sat in -next since mid-May, seems to survive all testing without
regressions and merges clean with v4.1. Please, pull from
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus-1
Shortlog:
Al Viro (123):
9p: don't bother with 4K allocation for 24-byte local array...
9p: don't bother with __getname() in ->follow_link()
ext4: split inode_operations for encrypted symlinks off the rest
libfs: simple_follow_link()
ext2: use simple_follow_link()
befs: switch to simple_follow_link()
ext3: switch to simple_follow_link()
ext4: switch to simple_follow_link()
jffs2: switch to simple_follow_link()
shmem: switch to simple_follow_link()
debugfs: switch to simple_follow_link()
ufs: switch to simple_follow_link()
ubifs: switch to simple_follow_link()
sysv: switch to simple_follow_link()
jfs: switch to simple_follow_link()
freevxfs: switch to simple_follow_link()
exofs: switch to {simple,page}_symlink_inode_operations
ceph: switch to simple_follow_link()
logfs: fix a pagecache leak for symlinks
uninline walk_component()
namei: take O_NOFOLLOW treatment into do_last()
do_last: kill symlink_ok
do_last: regularize the logics around following symlinks
namei: get rid of lookup_hash()
name: shift nameidata down into user_path_walk()
namei: lift nameidata into filename_mountpoint()
new ->follow_link() and ->put_link() calling conventions
namei.c: separate the parts of follow_link() that find the link body
namei: don't bother with ->follow_link() if ->i_link is set
namei: introduce nameidata->link
do_last: move path there from caller's stack frame
namei: expand nested_symlink() in its only caller
namei: expand the call of follow_link() in link_path_walk()
namei: move the calls of may_follow_link() into follow_link()
namei: rename follow_link to trailing_symlink, move it down
link_path_walk: handle get_link() returning ERR_PTR() immediately
link_path_walk: don't bother with walk_component() after jumping link
link_path_walk: turn inner loop into explicit goto
link_path_walk: massage a bit more
link_path_walk: get rid of duplication
link_path_walk: final preparations to killing recursion
link_path_walk: kill the recursion
link_path_walk: split "return from recursive call" path
link_path_walk: cleanup - turn goto start; into continue;
namei: move link/cookie pairs into nameidata
namei: trim redundant arguments of trailing_symlink()
namei: trim redundant arguments of fs/namei.c:put_link()
namei: trim the arguments of get_link()
namei: remove restrictions on nesting depth
link_path_walk: nd->depth massage, part 1
link_path_walk: nd->depth massage, part 2
link_path_walk: nd->depth massage, part 3
link_path_walk: nd->depth massage, part 4
trailing_symlink: nd->depth massage, part 5
get_link: nd->depth massage, part 6
trailing_symlink: nd->depth massage, part 7
put_link: nd->depth massage, part 8
link_path_walk: nd->depth massage, part 9
link_path_walk: nd->depth massage, part 10
link_path_walk: end of nd->depth massage
namei: we never need more than MAXSYMLINKS entries in nd->stack
namei: lift (open-coded) terminate_walk() in follow_dotdot_rcu() into callers
lift terminate_walk() into callers of walk_component()
namei: lift (open-coded) terminate_walk() into callers of get_link()
namei: take put_link() into {lookup,mountpoint,do}_last()
namei: have terminate_walk() do put_link() on everything left
link_path_walk: move the OK: inside the loop
namei: new calling conventions for walk_component()
namei: make should_follow_link() store the link in nd->link
namei: move link count check and stack allocation into pick_link()
lustre: rip the private symlink nesting limit out
namei: simplify the callers of follow_managed()
don't pass nameidata to ->follow_link()
namei: simplify failure exits in get_link()
namei: simpler treatment of symlinks with nothing other that / in the body
namei: take the treatment of absolute symlinks to get_link()
namei: fold put_link() into the failure case of complete_walk()
namei: move bumping the refcount of link->mnt into pick_link()
may_follow_link(): trim arguments
namei: kill nd->link
namei: take increment of nd->depth into pick_link()
namei: may_follow_link() - lift terminate_walk() on failures into caller
namei: split off filename_lookupat() with LOOKUP_PARENT
namei: get rid of nameidata->base
namei: path_init() calling conventions change
namei: lift link_path_walk() call out of trailing_symlink()
namei: lift terminate_walk() all the way up
link_path_walk: use explicit returns for failure exits
namei: explicitly pass seq number to unlazy_walk() when dentry != NULL
namei: don't mangle nd->seq in lookup_fast()
namei: store inode in nd->stack[]
namei: pick_link() callers already have inode
switch ->put_link() from dentry to inode
new helper: free_page_put_link()
namei: make put_link() RCU-safe
namei: make may_follow_link() safe in RCU mode
new helper: __legitimize_mnt()
namei: store seq numbers in nd->stack[]
namei: make unlazy_walk and terminate_walk handle nd->stack, add unlazy_link
namei: don't unlazy until get_link()
enable passing fast relative symlinks without dropping out of RCU mode
namei: handle absolute symlinks without dropping out of RCU mode
update Documentation/filesystems/ regarding the follow_link/put_link changes
namei: unlazy_walk() doesn't need to mess with current->fs anymore
lustre: kill unused macro (LOOKUP_CONTINUE)
lustre: kill unused helper
get rid of assorted nameidata-related debris
namei: be careful with mountpoint crossings in follow_dotdot_rcu()
namei: uninline set_root{,_rcu}()
namei: pass the struct path to store the result down into path_lookupat()
namei: move putname() call into filename_lookup()
namei: shift nameidata inside filename_lookup()
namei: make filename_lookup() reject ERR_PTR() passed as name
namei: shift nameidata down into filename_parentat()
namei: saner calling conventions for filename_create()
namei: saner calling conventions for filename_parentat()
namei: fold path_cleanup() into terminate_walk()
namei: stash dfd and name into nameidata
namei: trim do_last() arguments
inline user_path_parent()
inline user_path_create()
namei: move saved_nd pointer into struct nameidata
turn user_{path_at,path,lpath,path_dir}() into static inlines
David Howells (1):
VFS: Handle lower layer dentry/inode in pathwalk
NeilBrown (7):
ovl: rearrange ovl_follow_link to it doesn't need to call ->put_link
SECURITY: remove nameidata arg from inode_follow_link.
VFS: replace {, total_}link_count in task_struct with pointer to nameidata
security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags()
security: make inode_follow_link RCU-walk aware
VFS/namei: make the use of touch_atime() in get_link() RCU-safe.
Documentation: remove outdated information from automount-support.txt
Diffstat:
Documentation/filesystems/Locking | 4 +-
Documentation/filesystems/automount-support.txt | 51 +-
Documentation/filesystems/porting | 17 +
Documentation/filesystems/vfs.txt | 22 +-
.../lustre/lustre/include/linux/lustre_compat25.h | 15 -
.../staging/lustre/lustre/llite/llite_internal.h | 6 -
drivers/staging/lustre/lustre/llite/symlink.c | 26 +-
fs/9p/v9fs.h | 2 -
fs/9p/vfs_inode.c | 123 +-
fs/9p/vfs_inode_dotl.c | 39 +-
fs/autofs4/symlink.c | 5 +-
fs/befs/linuxvfs.c | 57 +-
fs/ceph/inode.c | 11 +-
fs/cifs/cifsfs.h | 2 +-
fs/cifs/link.c | 28 +-
fs/configfs/symlink.c | 31 +-
fs/debugfs/file.c | 12 -
fs/debugfs/inode.c | 6 +-
fs/ecryptfs/inode.c | 11 +-
fs/exofs/Kbuild | 2 +-
fs/exofs/exofs.h | 4 -
fs/exofs/inode.c | 9 +-
fs/exofs/namei.c | 5 +-
fs/exofs/symlink.c | 55 -
fs/ext2/inode.c | 1 +
fs/ext2/namei.c | 3 +-
fs/ext2/symlink.c | 10 +-
fs/ext3/inode.c | 1 +
fs/ext3/namei.c | 3 +-
fs/ext3/symlink.c | 10 +-
fs/ext4/ext4.h | 1 +
fs/ext4/inode.c | 7 +-
fs/ext4/namei.c | 11 +-
fs/ext4/symlink.c | 48 +-
fs/f2fs/namei.c | 18 +-
fs/freevxfs/vxfs_extern.h | 3 -
fs/freevxfs/vxfs_immed.c | 34 -
fs/freevxfs/vxfs_inode.c | 7 +-
fs/fuse/dir.c | 22 +-
fs/gfs2/inode.c | 10 +-
fs/hostfs/hostfs_kern.c | 15 +-
fs/hppfs/hppfs.c | 13 +-
fs/inode.c | 31 +-
fs/jffs2/dir.c | 1 +
fs/jffs2/fs.c | 1 +
fs/jffs2/symlink.c | 45 +-
fs/jfs/inode.c | 3 +-
fs/jfs/namei.c | 5 +-
fs/jfs/symlink.c | 10 +-
fs/kernfs/symlink.c | 25 +-
fs/libfs.c | 25 +-
fs/logfs/dir.c | 1 +
fs/mount.h | 1 +
fs/namei.c | 1453 ++++++++++----------
fs/namespace.c | 27 +-
fs/nfs/symlink.c | 19 +-
fs/ntfs/namei.c | 2 +-
fs/open.c | 2 +-
fs/overlayfs/inode.c | 35 +-
fs/proc/base.c | 4 +-
fs/proc/inode.c | 9 +-
fs/proc/namespaces.c | 4 +-
fs/proc/self.c | 24 +-
fs/proc/thread_self.c | 22 +-
fs/sysv/Makefile | 2 +-
fs/sysv/inode.c | 5 +-
fs/sysv/symlink.c | 20 -
fs/sysv/sysv.h | 1 -
fs/ubifs/dir.c | 1 +
fs/ubifs/file.c | 11 +-
fs/ubifs/super.c | 1 +
fs/ufs/inode.c | 5 +-
fs/ufs/namei.c | 3 +-
fs/ufs/symlink.c | 13 +-
fs/xfs/xfs_iops.c | 11 +-
include/linux/debugfs.h | 1 -
include/linux/fs.h | 16 +-
include/linux/namei.h | 41 +-
include/linux/sched.h | 3 +-
include/linux/security.h | 13 +-
mm/shmem.c | 32 +-
security/capability.c | 4 +-
security/security.c | 7 +-
security/selinux/avc.c | 18 +-
security/selinux/hooks.c | 18 +-
security/selinux/include/avc.h | 9 +-
86 files changed, 1222 insertions(+), 1522 deletions(-)
delete mode 100644 fs/exofs/symlink.c
delete mode 100644 fs/sysv/symlink.c
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/
next reply other threads:[~2015-06-22 6:47 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-22 6:47 Al Viro [this message]
2015-06-22 6:47 ` [git pull] vfs pile 1 Al Viro
-- strict thread matches above, loose matches on Subject: below --
2018-06-04 0:59 [git pull] vfs, " Al Viro
2016-12-16 13:30 [git pull] vfs " Al Viro
2015-09-06 2:55 Al Viro
2014-01-27 14:25 Al Viro
2014-01-27 23:05 ` Stephen Rothwell
2014-01-29 3:26 ` Linus Torvalds
2014-01-29 13:37 ` Jan Kara
2014-01-30 2:02 ` Kim Jaegeuk
2014-01-30 15:26 ` Jan Kara
2014-01-30 13:07 ` Christoph Hellwig
2013-02-27 3:24 Al Viro
2012-03-21 3:31 Al Viro
2012-01-05 2:23 Al Viro
2012-01-08 23:04 ` Linus Torvalds
2012-01-08 23:50 ` Al Viro
2012-01-08 23:53 ` Al Viro
2012-01-09 0:11 ` Linus Torvalds
2012-01-09 0:25 ` Al Viro
2012-01-09 0:39 ` Linus Torvalds
2012-01-09 0:39 ` Linus Torvalds
2012-01-09 2:12 ` Al Viro
2012-01-09 15:11 ` Ted Ts'o
2012-01-11 11:58 ` Christoph Hellwig
2012-01-11 12:36 ` Miklos Szeredi
2012-01-11 12:40 ` Christoph Hellwig
2012-01-11 13:12 ` Miklos Szeredi
2012-01-11 15:23 ` Ted Ts'o
2012-01-11 16:19 ` Al Viro
2012-01-12 11:41 ` Miklos Szeredi
2011-05-26 11:53 Al Viro
2011-01-13 5:35 Al Viro
2011-01-13 6:25 ` Stephen Rothwell
2011-01-13 8:55 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150622064737.GQ17109@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.