pull bumping refcount into ->kill()

there will be one more change of ->kill() calling conventions; this
isn't final.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2015-01-10 00:07:35 -05:00
parent 9e251d0204
commit 32426f6653
2 changed files with 6 additions and 12 deletions

View File

@ -34,12 +34,6 @@ void mnt_pin_kill(struct mount *m)
break;
}
pin = hlist_entry(p, struct fs_pin, m_list);
if (!atomic_long_inc_not_zero(&pin->count)) {
rcu_read_unlock();
cpu_relax();
continue;
}
rcu_read_unlock();
pin->kill(pin);
}
}
@ -56,12 +50,6 @@ void sb_pin_kill(struct super_block *sb)
break;
}
pin = hlist_entry(p, struct fs_pin, s_list);
if (!atomic_long_inc_not_zero(&pin->count)) {
rcu_read_unlock();
cpu_relax();
continue;
}
rcu_read_unlock();
pin->kill(pin);
}
}

View File

@ -189,6 +189,12 @@ static void acct_pin_kill(struct fs_pin *pin)
{
struct bsd_acct_struct *acct;
acct = container_of(pin, struct bsd_acct_struct, pin);
if (!atomic_long_inc_not_zero(&pin->count)) {
rcu_read_unlock();
cpu_relax();
return;
}
rcu_read_unlock();
mutex_lock(&acct->lock);
if (!acct->ns) {
mutex_unlock(&acct->lock);