Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 946e51f2 authored by Al Viro's avatar Al Viro
Browse files

move d_rcu from overlapping d_child to overlapping d_alias



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent a7400222
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ static void spufs_prune_dir(struct dentry *dir)
	struct dentry *dentry, *tmp;

	mutex_lock(&dir->d_inode->i_mutex);
	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) {
	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
		spin_lock(&dentry->d_lock);
		if (!(d_unhashed(dentry)) && dentry->d_inode) {
			dget_dlock(dentry);
+1 −1
Original line number Diff line number Diff line
@@ -258,7 +258,7 @@ void ll_invalidate_aliases(struct inode *inode)
	       inode->i_ino, inode->i_generation, inode);

	ll_lock_dcache(inode);
	ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_alias) {
	ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) {
		CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p "
		       "inode %p flags %d\n", dentry->d_name.len,
		       dentry->d_name.name, dentry, dentry->d_parent,
+1 −1
Original line number Diff line number Diff line
@@ -711,7 +711,7 @@ void lustre_dump_dentry(struct dentry *dentry, int recur)
		return;

	list_for_each(tmp, &dentry->d_subdirs) {
		struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child);
		struct dentry *d = list_entry(tmp, struct dentry, d_child);
		lustre_dump_dentry(d, recur - 1);
	}
}
+4 −4
Original line number Diff line number Diff line
@@ -167,14 +167,14 @@ static void ll_invalidate_negative_children(struct inode *dir)
	struct ll_d_hlist_node *p;

	ll_lock_dcache(dir);
	ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_alias) {
	ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) {
		spin_lock(&dentry->d_lock);
		if (!list_empty(&dentry->d_subdirs)) {
			struct dentry *child;

			list_for_each_entry_safe(child, tmp_subdir,
						 &dentry->d_subdirs,
						 d_u.d_child) {
						 d_child) {
				if (child->d_inode == NULL)
					d_lustre_invalidate(child, 1);
			}
@@ -362,7 +362,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
	discon_alias = invalid_alias = NULL;

	ll_lock_dcache(inode);
	ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_alias) {
	ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) {
		LASSERT(alias != dentry);

		spin_lock(&alias->d_lock);
@@ -953,7 +953,7 @@ static void ll_get_child_fid(struct inode * dir, struct qstr *name,
{
	struct dentry *parent, *child;

	parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_alias);
	parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_u.d_alias);
	child = d_lookup(parent, name);
	if (child) {
		if (child->d_inode)
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ affs_fix_dcache(struct inode *inode, u32 entry_ino)
{
	struct dentry *dentry;
	spin_lock(&inode->i_lock);
	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
	hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
		if (entry_ino == (u32)(long)dentry->d_fsdata) {
			dentry->d_fsdata = (void *)inode->i_ino;
			break;
Loading