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

Commit 9a8d5bb4 authored by Wu Fengguang's avatar Wu Fengguang Committed by Linus Torvalds
Browse files

generic swap(): dcache: use swap() instead of private do_switch()



Use the new generic implementation.

Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent df4927bf
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -1567,10 +1567,6 @@ void d_rehash(struct dentry * entry)
	spin_unlock(&dcache_lock);
}

#define do_switch(x,y) do { \
	__typeof__ (x) __tmp = x; \
	x = y; y = __tmp; } while (0)

/*
 * When switching names, the actual string doesn't strictly have to
 * be preserved in the target - because we're dropping the target
@@ -1589,7 +1585,7 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
			/*
			 * Both external: swap the pointers
			 */
			do_switch(target->d_name.name, dentry->d_name.name);
			swap(target->d_name.name, dentry->d_name.name);
		} else {
			/*
			 * dentry:internal, target:external.  Steal target's
@@ -1620,7 +1616,7 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
			return;
		}
	}
	do_switch(dentry->d_name.len, target->d_name.len);
	swap(dentry->d_name.len, target->d_name.len);
}

/*
@@ -1680,7 +1676,7 @@ already_unhashed:

	/* Switch the names.. */
	switch_names(dentry, target);
	do_switch(dentry->d_name.hash, target->d_name.hash);
	swap(dentry->d_name.hash, target->d_name.hash);

	/* ... and switch the parents */
	if (IS_ROOT(dentry)) {
@@ -1688,7 +1684,7 @@ already_unhashed:
		target->d_parent = target;
		INIT_LIST_HEAD(&target->d_u.d_child);
	} else {
		do_switch(dentry->d_parent, target->d_parent);
		swap(dentry->d_parent, target->d_parent);

		/* And add them back to the (new) parent lists */
		list_add(&target->d_u.d_child, &target->d_parent->d_subdirs);
@@ -1789,7 +1785,7 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
	struct dentry *dparent, *aparent;

	switch_names(dentry, anon);
	do_switch(dentry->d_name.hash, anon->d_name.hash);
	swap(dentry->d_name.hash, anon->d_name.hash);

	dparent = dentry->d_parent;
	aparent = anon->d_parent;