Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 16979
b: refs/heads/master
c: 5160ee6
h: refs/heads/master
i:
  16977: ea7e52d
  16975: 72c7575
v: v3
  • Loading branch information
Eric Dumazet authored and Linus Torvalds committed Jan 9, 2006
1 parent 9fc7917 commit 9b9a6f0
Show file tree
Hide file tree
Showing 16 changed files with 55 additions and 49 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 21b6bf143d05d77c350d9c6764ae090a877b66ea
refs/heads/master: 5160ee6fc891a9ca114be0e90fa6655647bb64b2
6 changes: 3 additions & 3 deletions trunk/drivers/usb/core/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ static void update_bus(struct dentry *bus)

down(&bus->d_inode->i_sem);

list_for_each_entry(dev, &bus->d_subdirs, d_child)
list_for_each_entry(dev, &bus->d_subdirs, d_u.d_child)
if (dev->d_inode)
update_dev(dev);

Expand All @@ -203,7 +203,7 @@ static void update_sb(struct super_block *sb)

down(&root->d_inode->i_sem);

list_for_each_entry(bus, &root->d_subdirs, d_child) {
list_for_each_entry(bus, &root->d_subdirs, d_u.d_child) {
if (bus->d_inode) {
switch (S_IFMT & bus->d_inode->i_mode) {
case S_IFDIR:
Expand Down Expand Up @@ -319,7 +319,7 @@ static int usbfs_empty (struct dentry *dentry)
spin_lock(&dcache_lock);

list_for_each(list, &dentry->d_subdirs) {
struct dentry *de = list_entry(list, struct dentry, d_child);
struct dentry *de = list_entry(list, struct dentry, d_u.d_child);
if (usbfs_positive(de)) {
spin_unlock(&dcache_lock);
return 0;
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/autofs4/autofs_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ static inline int simple_empty_nolock(struct dentry *dentry)
struct dentry *child;
int ret = 0;

list_for_each_entry(child, &dentry->d_subdirs, d_child)
list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child)
if (simple_positive(child))
goto out;
ret = 1;
Expand Down
12 changes: 6 additions & 6 deletions trunk/fs/autofs4/expire.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ static int autofs4_check_tree(struct vfsmount *mnt,
next = this_parent->d_subdirs.next;
resume:
while (next != &this_parent->d_subdirs) {
struct dentry *dentry = list_entry(next, struct dentry, d_child);
struct dentry *dentry = list_entry(next, struct dentry, d_u.d_child);

/* Negative dentry - give up */
if (!simple_positive(dentry)) {
Expand Down Expand Up @@ -138,7 +138,7 @@ static int autofs4_check_tree(struct vfsmount *mnt,
}

if (this_parent != top) {
next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
this_parent = this_parent->d_parent;
goto resume;
}
Expand All @@ -163,7 +163,7 @@ static struct dentry *autofs4_check_leaves(struct vfsmount *mnt,
next = this_parent->d_subdirs.next;
resume:
while (next != &this_parent->d_subdirs) {
struct dentry *dentry = list_entry(next, struct dentry, d_child);
struct dentry *dentry = list_entry(next, struct dentry, d_u.d_child);

/* Negative dentry - give up */
if (!simple_positive(dentry)) {
Expand Down Expand Up @@ -199,7 +199,7 @@ static struct dentry *autofs4_check_leaves(struct vfsmount *mnt,
}

if (this_parent != parent) {
next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
this_parent = this_parent->d_parent;
goto resume;
}
Expand Down Expand Up @@ -238,7 +238,7 @@ static struct dentry *autofs4_expire(struct super_block *sb,
/* On exit from the loop expire is set to a dgot dentry
* to expire or it's NULL */
while ( next != &root->d_subdirs ) {
struct dentry *dentry = list_entry(next, struct dentry, d_child);
struct dentry *dentry = list_entry(next, struct dentry, d_u.d_child);

/* Negative dentry - give up */
if ( !simple_positive(dentry) ) {
Expand Down Expand Up @@ -302,7 +302,7 @@ static struct dentry *autofs4_expire(struct super_block *sb,
expired, (int)expired->d_name.len, expired->d_name.name);
spin_lock(&dcache_lock);
list_del(&expired->d_parent->d_subdirs);
list_add(&expired->d_parent->d_subdirs, &expired->d_child);
list_add(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
spin_unlock(&dcache_lock);
return expired;
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/autofs4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ static void autofs4_force_release(struct autofs_sb_info *sbi)
next = this_parent->d_subdirs.next;
resume:
while (next != &this_parent->d_subdirs) {
struct dentry *dentry = list_entry(next, struct dentry, d_child);
struct dentry *dentry = list_entry(next, struct dentry, d_u.d_child);

/* Negative dentry - don`t care */
if (!simple_positive(dentry)) {
Expand All @@ -117,7 +117,7 @@ static void autofs4_force_release(struct autofs_sb_info *sbi)
if (this_parent != sbi->root) {
struct dentry *dentry = this_parent;

next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
this_parent = this_parent->d_parent;
spin_unlock(&dcache_lock);
DPRINTK("parent dentry %p %.*s",
Expand Down
3 changes: 2 additions & 1 deletion trunk/fs/autofs4/root.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ static int autofs4_dcache_readdir(struct file * filp, void * dirent, filldir_t f
}

while(1) {
struct dentry *de = list_entry(list, struct dentry, d_child);
struct dentry *de = list_entry(list,
struct dentry, d_u.d_child);

if (!d_unhashed(de) && de->d_inode) {
spin_unlock(&dcache_lock);
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/coda/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ static void coda_flag_children(struct dentry *parent, int flag)
spin_lock(&dcache_lock);
list_for_each(child, &parent->d_subdirs)
{
de = list_entry(child, struct dentry, d_child);
de = list_entry(child, struct dentry, d_u.d_child);
/* don't know what to do with negative dentries */
if ( ! de->d_inode )
continue;
Expand Down
34 changes: 17 additions & 17 deletions trunk/fs/dcache.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ struct dentry_stat_t dentry_stat = {

static void d_callback(struct rcu_head *head)
{
struct dentry * dentry = container_of(head, struct dentry, d_rcu);
struct dentry * dentry = container_of(head, struct dentry, d_u.d_rcu);

if (dname_external(dentry))
kfree(dentry->d_name.name);
Expand All @@ -86,7 +86,7 @@ static void d_free(struct dentry *dentry)
{
if (dentry->d_op && dentry->d_op->d_release)
dentry->d_op->d_release(dentry);
call_rcu(&dentry->d_rcu, d_callback);
call_rcu(&dentry->d_u.d_rcu, d_callback);
}

/*
Expand Down Expand Up @@ -193,7 +193,7 @@ kill_it: {
list_del(&dentry->d_lru);
dentry_stat.nr_unused--;
}
list_del(&dentry->d_child);
list_del(&dentry->d_u.d_child);
dentry_stat.nr_dentry--; /* For d_free, below */
/*drops the locks, at that point nobody can reach this dentry */
dentry_iput(dentry);
Expand Down Expand Up @@ -367,7 +367,7 @@ static inline void prune_one_dentry(struct dentry * dentry)
struct dentry * parent;

__d_drop(dentry);
list_del(&dentry->d_child);
list_del(&dentry->d_u.d_child);
dentry_stat.nr_dentry--; /* For d_free, below */
dentry_iput(dentry);
parent = dentry->d_parent;
Expand Down Expand Up @@ -518,7 +518,7 @@ int have_submounts(struct dentry *parent)
resume:
while (next != &this_parent->d_subdirs) {
struct list_head *tmp = next;
struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
next = tmp->next;
/* Have we found a mount point ? */
if (d_mountpoint(dentry))
Expand All @@ -532,7 +532,7 @@ int have_submounts(struct dentry *parent)
* All done at this level ... ascend and resume the search.
*/
if (this_parent != parent) {
next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
this_parent = this_parent->d_parent;
goto resume;
}
Expand Down Expand Up @@ -569,7 +569,7 @@ static int select_parent(struct dentry * parent)
resume:
while (next != &this_parent->d_subdirs) {
struct list_head *tmp = next;
struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
next = tmp->next;

if (!list_empty(&dentry->d_lru)) {
Expand Down Expand Up @@ -610,7 +610,7 @@ dentry->d_parent->d_name.name, dentry->d_name.name, found);
* All done at this level ... ascend and resume the search.
*/
if (this_parent != parent) {
next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
this_parent = this_parent->d_parent;
#ifdef DCACHE_DEBUG
printk(KERN_DEBUG "select_parent: ascending to %s/%s, found=%d\n",
Expand Down Expand Up @@ -753,12 +753,12 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
dentry->d_parent = dget(parent);
dentry->d_sb = parent->d_sb;
} else {
INIT_LIST_HEAD(&dentry->d_child);
INIT_LIST_HEAD(&dentry->d_u.d_child);
}

spin_lock(&dcache_lock);
if (parent)
list_add(&dentry->d_child, &parent->d_subdirs);
list_add(&dentry->d_u.d_child, &parent->d_subdirs);
dentry_stat.nr_dentry++;
spin_unlock(&dcache_lock);

Expand Down Expand Up @@ -1310,8 +1310,8 @@ void d_move(struct dentry * dentry, struct dentry * target)
/* Unhash the target: dput() will then get rid of it */
__d_drop(target);

list_del(&dentry->d_child);
list_del(&target->d_child);
list_del(&dentry->d_u.d_child);
list_del(&target->d_u.d_child);

/* Switch the names.. */
switch_names(dentry, target);
Expand All @@ -1322,15 +1322,15 @@ void d_move(struct dentry * dentry, struct dentry * target)
if (IS_ROOT(dentry)) {
dentry->d_parent = target->d_parent;
target->d_parent = target;
INIT_LIST_HEAD(&target->d_child);
INIT_LIST_HEAD(&target->d_u.d_child);
} else {
do_switch(dentry->d_parent, target->d_parent);

/* And add them back to the (new) parent lists */
list_add(&target->d_child, &target->d_parent->d_subdirs);
list_add(&target->d_u.d_child, &target->d_parent->d_subdirs);
}

list_add(&dentry->d_child, &dentry->d_parent->d_subdirs);
list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
spin_unlock(&target->d_lock);
spin_unlock(&dentry->d_lock);
write_sequnlock(&rename_lock);
Expand Down Expand Up @@ -1568,7 +1568,7 @@ void d_genocide(struct dentry *root)
resume:
while (next != &this_parent->d_subdirs) {
struct list_head *tmp = next;
struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
next = tmp->next;
if (d_unhashed(dentry)||!dentry->d_inode)
continue;
Expand All @@ -1579,7 +1579,7 @@ void d_genocide(struct dentry *root)
atomic_dec(&dentry->d_count);
}
if (this_parent != root) {
next = this_parent->d_child.next;
next = this_parent->d_u.d_child.next;
atomic_dec(&this_parent->d_count);
this_parent = this_parent->d_parent;
goto resume;
Expand Down
12 changes: 6 additions & 6 deletions trunk/fs/libfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,16 +93,16 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin)
loff_t n = file->f_pos - 2;

spin_lock(&dcache_lock);
list_del(&cursor->d_child);
list_del(&cursor->d_u.d_child);
p = file->f_dentry->d_subdirs.next;
while (n && p != &file->f_dentry->d_subdirs) {
struct dentry *next;
next = list_entry(p, struct dentry, d_child);
next = list_entry(p, struct dentry, d_u.d_child);
if (!d_unhashed(next) && next->d_inode)
n--;
p = p->next;
}
list_add_tail(&cursor->d_child, p);
list_add_tail(&cursor->d_u.d_child, p);
spin_unlock(&dcache_lock);
}
}
Expand All @@ -126,7 +126,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
{
struct dentry *dentry = filp->f_dentry;
struct dentry *cursor = filp->private_data;
struct list_head *p, *q = &cursor->d_child;
struct list_head *p, *q = &cursor->d_u.d_child;
ino_t ino;
int i = filp->f_pos;

Expand All @@ -153,7 +153,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
}
for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
struct dentry *next;
next = list_entry(p, struct dentry, d_child);
next = list_entry(p, struct dentry, d_u.d_child);
if (d_unhashed(next) || !next->d_inode)
continue;

Expand Down Expand Up @@ -261,7 +261,7 @@ int simple_empty(struct dentry *dentry)
int ret = 0;

spin_lock(&dcache_lock);
list_for_each_entry(child, &dentry->d_subdirs, d_child)
list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child)
if (simple_positive(child))
goto out;
ret = 1;
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/ncpfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ ncp_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos)
spin_lock(&dcache_lock);
next = parent->d_subdirs.next;
while (next != &parent->d_subdirs) {
dent = list_entry(next, struct dentry, d_child);
dent = list_entry(next, struct dentry, d_u.d_child);
if ((unsigned long)dent->d_fsdata == fpos) {
if (dent->d_inode)
dget_locked(dent);
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/ncpfs/ncplib_kernel.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ ncp_renew_dentries(struct dentry *parent)
spin_lock(&dcache_lock);
next = parent->d_subdirs.next;
while (next != &parent->d_subdirs) {
dentry = list_entry(next, struct dentry, d_child);
dentry = list_entry(next, struct dentry, d_u.d_child);

if (dentry->d_fsdata == NULL)
ncp_age_dentry(server, dentry);
Expand All @@ -218,7 +218,7 @@ ncp_invalidate_dircache_entries(struct dentry *parent)
spin_lock(&dcache_lock);
next = parent->d_subdirs.next;
while (next != &parent->d_subdirs) {
dentry = list_entry(next, struct dentry, d_child);
dentry = list_entry(next, struct dentry, d_u.d_child);
dentry->d_fsdata = NULL;
ncp_age_dentry(server, dentry);
next = next->next;
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/smbfs/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ smb_invalidate_dircache_entries(struct dentry *parent)
spin_lock(&dcache_lock);
next = parent->d_subdirs.next;
while (next != &parent->d_subdirs) {
dentry = list_entry(next, struct dentry, d_child);
dentry = list_entry(next, struct dentry, d_u.d_child);
dentry->d_fsdata = NULL;
smb_age_dentry(server, dentry);
next = next->next;
Expand Down Expand Up @@ -100,7 +100,7 @@ smb_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos)
spin_lock(&dcache_lock);
next = parent->d_subdirs.next;
while (next != &parent->d_subdirs) {
dent = list_entry(next, struct dentry, d_child);
dent = list_entry(next, struct dentry, d_u.d_child);
if ((unsigned long)dent->d_fsdata == fpos) {
if (dent->d_inode)
dget_locked(dent);
Expand Down
9 changes: 7 additions & 2 deletions trunk/include/linux/dcache.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,19 @@ struct dentry {
struct qstr d_name;

struct list_head d_lru; /* LRU list */
struct list_head d_child; /* child of parent list */
/*
* d_child and d_rcu can share memory
*/
union {
struct list_head d_child; /* child of parent list */
struct rcu_head d_rcu;
} d_u;
struct list_head d_subdirs; /* our children */
struct list_head d_alias; /* inode alias list */
unsigned long d_time; /* used by d_revalidate */
struct dentry_operations *d_op;
struct super_block *d_sb; /* The root of the dentry tree */
void *d_fsdata; /* fs-specific data */
struct rcu_head d_rcu;
struct dcookie_struct *d_cookie; /* cookie, if any */
int d_mounted;
unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* small names */
Expand Down
4 changes: 2 additions & 2 deletions trunk/kernel/cpuset.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ static void cpuset_d_remove_dir(struct dentry *dentry)
spin_lock(&dcache_lock);
node = dentry->d_subdirs.next;
while (node != &dentry->d_subdirs) {
struct dentry *d = list_entry(node, struct dentry, d_child);
struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
list_del_init(node);
if (d->d_inode) {
d = dget_locked(d);
Expand All @@ -343,7 +343,7 @@ static void cpuset_d_remove_dir(struct dentry *dentry)
}
node = dentry->d_subdirs.next;
}
list_del_init(&dentry->d_child);
list_del_init(&dentry->d_u.d_child);
spin_unlock(&dcache_lock);
remove_dir(dentry);
}
Expand Down
Loading

0 comments on commit 9b9a6f0

Please sign in to comment.