* [PATCH vfs-2.6 1/6] vfs: replace parent == dentry->d_parent by IS_ROOT()
@ 2008-10-15 22:50 OGAWA Hirofumi
2008-10-15 22:50 ` [PATCH vfs-2.6 2/6] vfs: add d_ancestor() OGAWA Hirofumi
0 siblings, 1 reply; 8+ messages in thread
From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw)
To: viro; +Cc: akpm, linux-kernel, hirofumi
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
---
fs/dcache.c | 21 ++++++++++++---------
fs/namei.c | 4 ++--
2 files changed, 14 insertions(+), 11 deletions(-)
diff -puN fs/dcache.c~dcache-cleanup-1 fs/dcache.c
--- vfs-2.6/fs/dcache.c~dcache-cleanup-1 2008-10-16 06:57:26.000000000 +0900
+++ vfs-2.6-hirofumi/fs/dcache.c 2008-10-16 06:57:26.000000000 +0900
@@ -174,9 +174,12 @@ static struct dentry *d_kill(struct dent
dentry_stat.nr_dentry--; /* For d_free, below */
/*drops the locks, at that point nobody can reach this dentry */
dentry_iput(dentry);
- parent = dentry->d_parent;
+ if (IS_ROOT(dentry))
+ parent = NULL;
+ else
+ parent = dentry->d_parent;
d_free(dentry);
- return dentry == parent ? NULL : parent;
+ return parent;
}
/*
@@ -666,11 +669,12 @@ static void shrink_dcache_for_umount_sub
BUG();
}
- parent = dentry->d_parent;
- if (parent == dentry)
+ if (IS_ROOT(dentry))
parent = NULL;
- else
+ else {
+ parent = dentry->d_parent;
atomic_dec(&parent->d_count);
+ }
list_del(&dentry->d_u.d_child);
detached++;
@@ -1721,7 +1725,7 @@ static int d_isparent(struct dentry *p1,
{
struct dentry *p;
- for (p = p2; p->d_parent != p; p = p->d_parent) {
+ for (p = p2; !IS_ROOT(p); p = p->d_parent) {
if (p->d_parent == p1)
return 1;
}
@@ -2166,10 +2170,9 @@ int is_subdir(struct dentry * new_dentry
seq = read_seqbegin(&rename_lock);
for (;;) {
if (new_dentry != old_dentry) {
- struct dentry * parent = new_dentry->d_parent;
- if (parent == new_dentry)
+ if (IS_ROOT(new_dentry))
break;
- new_dentry = parent;
+ new_dentry = new_dentry->d_parent;
continue;
}
result = 1;
diff -puN fs/namei.c~dcache-cleanup-1 fs/namei.c
--- vfs-2.6/fs/namei.c~dcache-cleanup-1 2008-10-16 06:57:26.000000000 +0900
+++ vfs-2.6-hirofumi/fs/namei.c 2008-10-16 06:57:26.000000000 +0900
@@ -1454,7 +1454,7 @@ struct dentry *lock_rename(struct dentry
mutex_lock(&p1->d_inode->i_sb->s_vfs_rename_mutex);
- for (p = p1; p->d_parent != p; p = p->d_parent) {
+ for (p = p1; !IS_ROOT(p); p = p->d_parent) {
if (p->d_parent == p2) {
mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_PARENT);
mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_CHILD);
@@ -1462,7 +1462,7 @@ struct dentry *lock_rename(struct dentry
}
}
- for (p = p2; p->d_parent != p; p = p->d_parent) {
+ for (p = p2; !IS_ROOT(p); p = p->d_parent) {
if (p->d_parent == p1) {
mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT);
mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_CHILD);
_
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH vfs-2.6 2/6] vfs: add d_ancestor() 2008-10-15 22:50 [PATCH vfs-2.6 1/6] vfs: replace parent == dentry->d_parent by IS_ROOT() OGAWA Hirofumi @ 2008-10-15 22:50 ` OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper OGAWA Hirofumi 0 siblings, 1 reply; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw) To: viro; +Cc: akpm, linux-kernel, hirofumi This adds d_ancestor() instead of d_isparent(), then use it. If new_dentry == old_dentry, is_subdir() returns 1, looks strange. "new_dentry == old_dentry" is not subdir obviously. But I'm not checking callers for now, so this keeps current behavior. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> --- fs/dcache.c | 45 +++++++++++++++++++++++---------------------- fs/namei.c | 22 ++++++++++------------ include/linux/dcache.h | 1 + 3 files changed, 34 insertions(+), 34 deletions(-) diff -puN fs/dcache.c~dcache-cleanup-2 fs/dcache.c --- vfs-2.6/fs/dcache.c~dcache-cleanup-2 2008-10-16 06:57:29.000000000 +0900 +++ vfs-2.6-hirofumi/fs/dcache.c 2008-10-16 06:57:29.000000000 +0900 @@ -1718,18 +1718,23 @@ void d_move(struct dentry * dentry, stru spin_unlock(&dcache_lock); } -/* - * Helper that returns 1 if p1 is a parent of p2, else 0 +/** + * d_ancestor - search for an ancestor + * @p1: ancestor dentry + * @p2: child dentry + * + * Returns the ancestor dentry of p2 which is a child of p1, if p1 is + * an ancestor of p2, else NULL. */ -static int d_isparent(struct dentry *p1, struct dentry *p2) +struct dentry *d_ancestor(struct dentry *p1, struct dentry *p2) { struct dentry *p; for (p = p2; !IS_ROOT(p); p = p->d_parent) { if (p->d_parent == p1) - return 1; + return p; } - return 0; + return NULL; } /* @@ -1753,7 +1758,7 @@ static struct dentry *__d_unalias(struct /* Check for loops */ ret = ERR_PTR(-ELOOP); - if (d_isparent(alias, dentry)) + if (d_ancestor(alias, dentry)) goto out_err; /* See lock_rename() */ @@ -2153,31 +2158,27 @@ out: * Caller must ensure that "new_dentry" is pinned before calling is_subdir() */ -int is_subdir(struct dentry * new_dentry, struct dentry * old_dentry) +int is_subdir(struct dentry *new_dentry, struct dentry *old_dentry) { int result; - struct dentry * saved = new_dentry; unsigned long seq; - /* need rcu_readlock to protect against the d_parent trashing due to - * d_move + /* FIXME: This is old behavior, needed? Please check callers. */ + if (new_dentry == old_dentry) + return 1; + + /* + * Need rcu_readlock to protect against the d_parent trashing + * due to d_move */ rcu_read_lock(); - do { + do { /* for restarting inner loop in case of seq retry */ - new_dentry = saved; - result = 0; seq = read_seqbegin(&rename_lock); - for (;;) { - if (new_dentry != old_dentry) { - if (IS_ROOT(new_dentry)) - break; - new_dentry = new_dentry->d_parent; - continue; - } + if (d_ancestor(old_dentry, new_dentry)) result = 1; - break; - } + else + result = 0; } while (read_seqretry(&rename_lock, seq)); rcu_read_unlock(); diff -puN include/linux/dcache.h~dcache-cleanup-2 include/linux/dcache.h --- vfs-2.6/include/linux/dcache.h~dcache-cleanup-2 2008-10-16 06:57:29.000000000 +0900 +++ vfs-2.6-hirofumi/include/linux/dcache.h 2008-10-16 06:57:29.000000000 +0900 @@ -287,6 +287,7 @@ static inline struct dentry *d_add_uniqu /* used for rename() and baskets */ extern void d_move(struct dentry *, struct dentry *); +extern struct dentry *d_ancestor(struct dentry *, struct dentry *); /* appendix may either be NULL or be used for transname suffixes */ extern struct dentry * d_lookup(struct dentry *, struct qstr *); diff -puN fs/namei.c~dcache-cleanup-2 fs/namei.c --- vfs-2.6/fs/namei.c~dcache-cleanup-2 2008-10-16 06:57:29.000000000 +0900 +++ vfs-2.6-hirofumi/fs/namei.c 2008-10-16 06:57:29.000000000 +0900 @@ -1454,20 +1454,18 @@ struct dentry *lock_rename(struct dentry mutex_lock(&p1->d_inode->i_sb->s_vfs_rename_mutex); - for (p = p1; !IS_ROOT(p); p = p->d_parent) { - if (p->d_parent == p2) { - mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_PARENT); - mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_CHILD); - return p; - } + p = d_ancestor(p2, p1); + if (p) { + mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_PARENT); + mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_CHILD); + return p; } - for (p = p2; !IS_ROOT(p); p = p->d_parent) { - if (p->d_parent == p1) { - mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); - mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_CHILD); - return p; - } + p = d_ancestor(p1, p2); + if (p) { + mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); + mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_CHILD); + return p; } mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper 2008-10-15 22:50 ` [PATCH vfs-2.6 2/6] vfs: add d_ancestor() OGAWA Hirofumi @ 2008-10-15 22:50 ` OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate() OGAWA Hirofumi 0 siblings, 1 reply; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw) To: viro; +Cc: akpm, linux-kernel, hirofumi This adds __d_instantiate() for users which is already taking dcache_lock, and replace with it. The part of d_add_ci() isn't equivalent. But it should be needed fsnotify_d_instantiate() actually, because the path is to add the inode to negative dentry. fsnotify_d_instantiate() should be called after change from negative to positive. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> --- fs/dcache.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff -puN fs/dcache.c~dcache-cleanup-3 fs/dcache.c --- vfs-2.6/fs/dcache.c~dcache-cleanup-3 2008-10-16 06:57:31.000000000 +0900 +++ vfs-2.6-hirofumi/fs/dcache.c 2008-10-16 06:57:31.000000000 +0900 @@ -981,6 +981,15 @@ struct dentry *d_alloc_name(struct dentr return d_alloc(parent, &q); } +/* the caller must hold dcache_lock */ +static void __d_instantiate(struct dentry *dentry, struct inode *inode) +{ + if (inode) + list_add(&dentry->d_alias, &inode->i_dentry); + dentry->d_inode = inode; + fsnotify_d_instantiate(dentry, inode); +} + /** * d_instantiate - fill in inode information for a dentry * @entry: dentry to complete @@ -1000,10 +1009,7 @@ void d_instantiate(struct dentry *entry, { BUG_ON(!list_empty(&entry->d_alias)); spin_lock(&dcache_lock); - if (inode) - list_add(&entry->d_alias, &inode->i_dentry); - entry->d_inode = inode; - fsnotify_d_instantiate(entry, inode); + __d_instantiate(entry, inode); spin_unlock(&dcache_lock); security_d_instantiate(entry, inode); } @@ -1033,7 +1039,7 @@ static struct dentry *__d_instantiate_un unsigned int hash = entry->d_name.hash; if (!inode) { - entry->d_inode = NULL; + __d_instantiate(entry, NULL); return NULL; } @@ -1052,9 +1058,7 @@ static struct dentry *__d_instantiate_un return alias; } - list_add(&entry->d_alias, &inode->i_dentry); - entry->d_inode = inode; - fsnotify_d_instantiate(entry, inode); + __d_instantiate(entry, inode); return NULL; } @@ -1213,10 +1217,8 @@ struct dentry *d_splice_alias(struct ino d_move(new, dentry); iput(inode); } else { - /* d_instantiate takes dcache_lock, so we do it by hand */ - list_add(&dentry->d_alias, &inode->i_dentry); - dentry->d_inode = inode; - fsnotify_d_instantiate(dentry, inode); + /* already taking dcache_lock, so d_add() by hand */ + __d_instantiate(dentry, inode); spin_unlock(&dcache_lock); security_d_instantiate(dentry, inode); d_rehash(dentry); @@ -1299,8 +1301,7 @@ struct dentry *d_add_ci(struct dentry *d * d_instantiate() by hand because it takes dcache_lock which * we already hold. */ - list_add(&found->d_alias, &inode->i_dentry); - found->d_inode = inode; + __d_instantiate(found, inode); spin_unlock(&dcache_lock); security_d_instantiate(found, inode); return found; @@ -1831,7 +1832,7 @@ struct dentry *d_materialise_unique(stru if (!inode) { actual = dentry; - dentry->d_inode = NULL; + __d_instantiate(dentry, NULL); goto found_lock; } _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate() 2008-10-15 22:50 ` [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper OGAWA Hirofumi @ 2008-10-15 22:50 ` OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup OGAWA Hirofumi 0 siblings, 1 reply; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw) To: viro; +Cc: akpm, linux-kernel, hirofumi This calls d_move(), so fsnotify_d_instantiate() is unnecessary like rename path. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> --- fs/dcache.c | 1 - 1 file changed, 1 deletion(-) diff -puN fs/dcache.c~dcache-cleanup-4 fs/dcache.c --- vfs-2.6/fs/dcache.c~dcache-cleanup-4 2008-10-16 06:57:33.000000000 +0900 +++ vfs-2.6-hirofumi/fs/dcache.c 2008-10-16 06:57:33.000000000 +0900 @@ -1210,7 +1210,6 @@ struct dentry *d_splice_alias(struct ino new = __d_find_alias(inode, 1); if (new) { BUG_ON(!(new->d_flags & DCACHE_DISCONNECTED)); - fsnotify_d_instantiate(new, inode); spin_unlock(&dcache_lock); security_d_instantiate(new, inode); d_rehash(dentry); _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup 2008-10-15 22:50 ` [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate() OGAWA Hirofumi @ 2008-10-15 22:50 ` OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent OGAWA Hirofumi 0 siblings, 1 reply; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw) To: viro; +Cc: akpm, linux-kernel, hirofumi lookup_hash() with LOOKUP_PARENT is bogus. And this prepares to add new intent on those path. The user of LOOKUP_PARENT intent is nfs only, and it checks whether nd->flags has LOOKUP_CREATE or LOOKUP_OPEN, so the result is same. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> --- fs/namei.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff -puN fs/namei.c~dcache-remove-parent fs/namei.c --- vfs-2.6/fs/namei.c~dcache-remove-parent 2008-10-16 06:57:35.000000000 +0900 +++ vfs-2.6-hirofumi/fs/namei.c 2008-10-16 06:57:35.000000000 +0900 @@ -2170,16 +2170,19 @@ static long do_rmdir(int dfd, const char return error; switch(nd.last_type) { - case LAST_DOTDOT: - error = -ENOTEMPTY; - goto exit1; - case LAST_DOT: - error = -EINVAL; - goto exit1; - case LAST_ROOT: - error = -EBUSY; - goto exit1; + case LAST_DOTDOT: + error = -ENOTEMPTY; + goto exit1; + case LAST_DOT: + error = -EINVAL; + goto exit1; + case LAST_ROOT: + error = -EBUSY; + goto exit1; } + + nd.flags &= ~LOOKUP_PARENT; + mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); dentry = lookup_hash(&nd); error = PTR_ERR(dentry); @@ -2257,6 +2260,9 @@ static long do_unlinkat(int dfd, const c error = -EISDIR; if (nd.last_type != LAST_NORM) goto exit1; + + nd.flags &= ~LOOKUP_PARENT; + mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); dentry = lookup_hash(&nd); error = PTR_ERR(dentry); @@ -2646,6 +2652,9 @@ asmlinkage long sys_renameat(int olddfd, if (newnd.last_type != LAST_NORM) goto exit2; + oldnd.flags &= ~LOOKUP_PARENT; + newnd.flags &= ~LOOKUP_PARENT; + trap = lock_rename(new_dir, old_dir); old_dentry = lookup_hash(&oldnd); _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent 2008-10-15 22:50 ` [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup OGAWA Hirofumi @ 2008-10-15 22:50 ` OGAWA Hirofumi 2008-10-16 22:29 ` Andrew Morton 0 siblings, 1 reply; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-15 22:50 UTC (permalink / raw) To: viro; +Cc: akpm, linux-kernel, hirofumi This adds LOOKUP_RENAME_TARGET intent for lookup of rename destination. LOOKUP_RENAME_TARGET is going to be used like LOOKUP_CREATE. But since the destination of rename() can be existing directory entry, so it has a difference. Although that difference doesn't matter in my usage, this tells it to user of this intent. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> --- fs/namei.c | 1 + include/linux/namei.h | 1 + 2 files changed, 2 insertions(+) diff -puN fs/namei.c~dcache-add-rename-intent fs/namei.c --- vfs-2.6/fs/namei.c~dcache-add-rename-intent 2008-10-16 06:57:40.000000000 +0900 +++ vfs-2.6-hirofumi/fs/namei.c 2008-10-16 06:57:40.000000000 +0900 @@ -2654,6 +2654,7 @@ asmlinkage long sys_renameat(int olddfd, oldnd.flags &= ~LOOKUP_PARENT; newnd.flags &= ~LOOKUP_PARENT; + newnd.flags |= LOOKUP_RENAME_TARGET; trap = lock_rename(new_dir, old_dir); diff -puN include/linux/namei.h~dcache-add-rename-intent include/linux/namei.h --- vfs-2.6/include/linux/namei.h~dcache-add-rename-intent 2008-10-16 06:57:40.000000000 +0900 +++ vfs-2.6-hirofumi/include/linux/namei.h 2008-10-16 06:58:05.000000000 +0900 @@ -54,6 +54,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA #define LOOKUP_OPEN 0x0100 #define LOOKUP_CREATE 0x0200 #define LOOKUP_EXCL 0x0400 +#define LOOKUP_RENAME_TARGET 0x0800 extern int user_path_at(int, const char __user *, unsigned, struct path *); _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent 2008-10-15 22:50 ` [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent OGAWA Hirofumi @ 2008-10-16 22:29 ` Andrew Morton 2008-10-16 23:30 ` OGAWA Hirofumi 0 siblings, 1 reply; 8+ messages in thread From: Andrew Morton @ 2008-10-16 22:29 UTC (permalink / raw) To: OGAWA Hirofumi; +Cc: viro, linux-kernel, hirofumi, Christoph Hellwig I put these six patches into my tree for sending to Al when he resurfaces. We're near the end of the merge window and a lot of trees (including git-vfs) have a lot of outstanding material: -rw-r----- 1 akpm src 2168830 Oct 15 14:24 patches/git-firmware.patch -rw-r----- 1 akpm src 1999274 Oct 15 14:24 patches/git-bdev.patch -rw-r----- 1 akpm src 1643851 Oct 15 14:24 patches/git-tip.patch -rw-r----- 1 akpm src 1137163 Oct 15 14:24 patches/git-uwb.patch -rw-r----- 1 akpm src 1003617 Oct 15 14:24 patches/git-kvm.patch -rw-r----- 1 akpm src 992495 Oct 15 14:24 patches/git-v4l-dvb.patch -rw-r----- 1 akpm src 849673 Oct 15 14:24 patches/git-parisc.patch -rw-r----- 1 akpm src 661519 Oct 15 14:24 patches/git-scsi-post-merge.patch -rw-r----- 1 akpm src 652920 Oct 15 14:23 patches/git-arm.patch -rw-r----- 1 akpm src 589596 Oct 15 14:24 patches/git-creds.patch -rw-r----- 1 akpm src 568498 Oct 15 14:24 patches/git-scsi.patch -rw-r----- 1 akpm src 410896 Oct 15 14:24 patches/git-drm.patch -rw-r----- 1 akpm src 404578 Oct 15 14:24 patches/git-ftrace.patch -rw-r----- 1 akpm src 352603 Oct 15 14:23 patches/git-acpi.patch -rw-r----- 1 akpm src 314552 Oct 15 14:24 patches/git-sh.patch -rw-r----- 1 akpm src 254238 Oct 15 14:24 patches/git-mtd.patch -rw-r----- 1 akpm src 203336 Oct 15 14:24 patches/git-tests.patch -rw-r----- 1 akpm src 199476 Oct 15 14:24 patches/git-timers.patch -rw-r----- 1 akpm src 192928 Oct 15 14:24 patches/git-v9fs.patch -rw-r----- 1 akpm src 158605 Oct 15 14:23 patches/git-avr32.patch -rw-r----- 1 akpm src 152326 Oct 15 14:24 patches/git-input.patch -rw-r----- 1 akpm src 138826 Oct 15 14:24 patches/git-pci.patch -rw-r----- 1 akpm src 135356 Oct 15 14:24 patches/git-slab.patch -rw-r----- 1 akpm src 125258 Oct 15 14:24 patches/git-vfs.patch -rw-r----- 1 akpm src 122588 Oct 15 14:24 patches/git-nfs.patch -rw-r----- 1 akpm src 120826 Oct 15 14:24 patches/git-sparseirq.patch -rw-r----- 1 akpm src 120746 Oct 15 14:24 patches/git-cris.patch -rw-r----- 1 akpm src 105868 Oct 15 14:24 patches/git-kmemcheck.patch -rw-r----- 1 akpm src 101011 Oct 15 14:24 patches/git-mfd.patch -rw-r----- 1 akpm src 93335 Oct 15 14:24 patches/git-tip-core.patch -rw-r----- 1 akpm src 84488 Oct 15 14:24 patches/git-ubifs.patch -rw-r----- 1 akpm src 46595 Oct 15 14:24 patches/git-net-current.patch -rw-r----- 1 akpm src 30945 Oct 15 14:24 patches/git-stackprotector.patch -rw-r----- 1 akpm src 30415 Oct 15 14:24 patches/git-crypto.patch -rw-r----- 1 akpm src 30354 Oct 15 14:24 patches/git-x86.patch -rw-r----- 1 akpm src 29001 Oct 15 14:24 patches/git-fastboot.patch -rw-r----- 1 akpm src 28915 Oct 15 14:24 patches/git-hid.patch -rw-r----- 1 akpm src 26872 Oct 15 14:24 patches/git-wireless-current.patch -rw-r----- 1 akpm src 25944 Oct 15 14:23 patches/git-backlight.patch -rw-r----- 1 akpm src 23001 Oct 15 14:24 patches/git-block.patch -rw-r----- 1 akpm src 20753 Oct 15 14:24 patches/git-sound-current.patch -rw-r----- 1 akpm src 20752 Oct 15 14:24 patches/git-sound.patch -rw-r----- 1 akpm src 20616 Oct 15 14:24 patches/git-semaphore-removal.patch -rw-r----- 1 akpm src 19849 Oct 15 14:24 patches/git-trivial.patch -rw-r----- 1 akpm src 17854 Oct 15 14:24 patches/git-genirq.patch -rw-r----- 1 akpm src 17689 Oct 15 14:24 patches/git-gfs2.patch -rw-r----- 1 akpm src 17135 Oct 15 14:23 patches/git-battery.patch -rw-r----- 1 akpm src 13923 Oct 15 14:24 patches/git-s390.patch -rw-r----- 1 akpm src 12604 Oct 15 14:24 patches/git-nfsd.patch -rw-r----- 1 akpm src 12151 Oct 15 14:24 patches/git-leds.patch -rw-r----- 1 akpm src 8330 Oct 15 14:24 patches/git-cpus4096.patch -rw-r----- 1 akpm src 6612 Oct 15 14:24 patches/git-infiniband.patch -rw-r----- 1 akpm src 4421 Oct 15 14:16 patches/git-tests-git-rejects.patch -rw-r----- 1 akpm src 4270 Oct 15 14:24 patches/git-kgdb.patch -rw-r----- 1 akpm src 3898 Oct 15 14:24 patches/git-ubi.patch -rw-r----- 1 akpm src 3855 Oct 15 14:24 patches/git-safe-poison-pointers.patch -rw-r----- 1 akpm src 3402 Oct 15 14:24 patches/git-xtensa.patch -rw-r----- 1 akpm src 3326 Oct 15 14:24 patches/git-oprofile.patch ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent 2008-10-16 22:29 ` Andrew Morton @ 2008-10-16 23:30 ` OGAWA Hirofumi 0 siblings, 0 replies; 8+ messages in thread From: OGAWA Hirofumi @ 2008-10-16 23:30 UTC (permalink / raw) To: Andrew Morton; +Cc: viro, linux-kernel, Christoph Hellwig Andrew Morton <akpm@linux-foundation.org> writes: > I put these six patches into my tree for sending to Al when he > resurfaces. Thanks. I'm happy with it. > We're near the end of the merge window and a lot of trees (including > git-vfs) have a lot of outstanding material: -- OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-10-16 23:30 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-10-15 22:50 [PATCH vfs-2.6 1/6] vfs: replace parent == dentry->d_parent by IS_ROOT() OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 2/6] vfs: add d_ancestor() OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate() OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup OGAWA Hirofumi 2008-10-15 22:50 ` [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent OGAWA Hirofumi 2008-10-16 22:29 ` Andrew Morton 2008-10-16 23:30 ` OGAWA Hirofumi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox