diff options
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index e88c23b85a32..4547f66884a0 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -1567,10 +1567,6 @@ void d_rehash(struct dentry * entry) | |||
1567 | spin_unlock(&dcache_lock); | 1567 | spin_unlock(&dcache_lock); |
1568 | } | 1568 | } |
1569 | 1569 | ||
1570 | #define do_switch(x,y) do { \ | ||
1571 | __typeof__ (x) __tmp = x; \ | ||
1572 | x = y; y = __tmp; } while (0) | ||
1573 | |||
1574 | /* | 1570 | /* |
1575 | * When switching names, the actual string doesn't strictly have to | 1571 | * When switching names, the actual string doesn't strictly have to |
1576 | * be preserved in the target - because we're dropping the target | 1572 | * 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) | |||
1589 | /* | 1585 | /* |
1590 | * Both external: swap the pointers | 1586 | * Both external: swap the pointers |
1591 | */ | 1587 | */ |
1592 | do_switch(target->d_name.name, dentry->d_name.name); | 1588 | swap(target->d_name.name, dentry->d_name.name); |
1593 | } else { | 1589 | } else { |
1594 | /* | 1590 | /* |
1595 | * dentry:internal, target:external. Steal target's | 1591 | * dentry:internal, target:external. Steal target's |
@@ -1620,7 +1616,7 @@ static void switch_names(struct dentry *dentry, struct dentry *target) | |||
1620 | return; | 1616 | return; |
1621 | } | 1617 | } |
1622 | } | 1618 | } |
1623 | do_switch(dentry->d_name.len, target->d_name.len); | 1619 | swap(dentry->d_name.len, target->d_name.len); |
1624 | } | 1620 | } |
1625 | 1621 | ||
1626 | /* | 1622 | /* |
@@ -1680,7 +1676,7 @@ already_unhashed: | |||
1680 | 1676 | ||
1681 | /* Switch the names.. */ | 1677 | /* Switch the names.. */ |
1682 | switch_names(dentry, target); | 1678 | switch_names(dentry, target); |
1683 | do_switch(dentry->d_name.hash, target->d_name.hash); | 1679 | swap(dentry->d_name.hash, target->d_name.hash); |
1684 | 1680 | ||
1685 | /* ... and switch the parents */ | 1681 | /* ... and switch the parents */ |
1686 | if (IS_ROOT(dentry)) { | 1682 | if (IS_ROOT(dentry)) { |
@@ -1688,7 +1684,7 @@ already_unhashed: | |||
1688 | target->d_parent = target; | 1684 | target->d_parent = target; |
1689 | INIT_LIST_HEAD(&target->d_u.d_child); | 1685 | INIT_LIST_HEAD(&target->d_u.d_child); |
1690 | } else { | 1686 | } else { |
1691 | do_switch(dentry->d_parent, target->d_parent); | 1687 | swap(dentry->d_parent, target->d_parent); |
1692 | 1688 | ||
1693 | /* And add them back to the (new) parent lists */ | 1689 | /* And add them back to the (new) parent lists */ |
1694 | list_add(&target->d_u.d_child, &target->d_parent->d_subdirs); | 1690 | 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) | |||
1789 | struct dentry *dparent, *aparent; | 1785 | struct dentry *dparent, *aparent; |
1790 | 1786 | ||
1791 | switch_names(dentry, anon); | 1787 | switch_names(dentry, anon); |
1792 | do_switch(dentry->d_name.hash, anon->d_name.hash); | 1788 | swap(dentry->d_name.hash, anon->d_name.hash); |
1793 | 1789 | ||
1794 | dparent = dentry->d_parent; | 1790 | dparent = dentry->d_parent; |
1795 | aparent = anon->d_parent; | 1791 | aparent = anon->d_parent; |