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

Commit cdc97505 authored by Benny Halevy's avatar Benny Halevy Committed by J. Bruce Fields
Browse files

nfsd4: rename recall_lock to state_lock



...as the name is a bit more descriptive and we've started using it for
other purposes.

Signed-off-by: default avatarBenny Halevy <bhalevy@primarydata.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 7025005d
Loading
Loading
Loading
Loading
+32 −31
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ static DEFINE_MUTEX(client_mutex);
 * effort to decrease the scope of the client_mutex, this spinlock may
 * eventually cover more:
 */
static DEFINE_SPINLOCK(recall_lock);
static DEFINE_SPINLOCK(state_lock);

static struct kmem_cache *openowner_slab;
static struct kmem_cache *lockowner_slab;
@@ -235,9 +235,9 @@ static void nfsd4_free_file(struct nfs4_file *f)
static inline void
put_nfs4_file(struct nfs4_file *fi)
{
	if (atomic_dec_and_lock(&fi->fi_ref, &recall_lock)) {
	if (atomic_dec_and_lock(&fi->fi_ref, &state_lock)) {
		hlist_del(&fi->fi_hash);
		spin_unlock(&recall_lock);
		spin_unlock(&state_lock);
		iput(fi->fi_inode);
		nfsd4_free_file(fi);
	}
@@ -436,7 +436,7 @@ static void unhash_stid(struct nfs4_stid *s)
static void
hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp)
{
	lockdep_assert_held(&recall_lock);
	lockdep_assert_held(&state_lock);

	list_add(&dp->dl_perfile, &fp->fi_delegations);
	list_add(&dp->dl_perclnt, &dp->dl_stid.sc_client->cl_delegations);
@@ -446,11 +446,11 @@ hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp)
static void
unhash_delegation(struct nfs4_delegation *dp)
{
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	list_del_init(&dp->dl_perclnt);
	list_del_init(&dp->dl_perfile);
	list_del_init(&dp->dl_recall_lru);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	if (dp->dl_file) {
		nfs4_put_deleg_lease(dp->dl_file);
		put_nfs4_file(dp->dl_file);
@@ -1161,13 +1161,13 @@ destroy_client(struct nfs4_client *clp)
	struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);

	INIT_LIST_HEAD(&reaplist);
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	while (!list_empty(&clp->cl_delegations)) {
		dp = list_entry(clp->cl_delegations.next, struct nfs4_delegation, dl_perclnt);
		list_del_init(&dp->dl_perclnt);
		list_move(&dp->dl_recall_lru, &reaplist);
	}
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	while (!list_empty(&reaplist)) {
		dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru);
		destroy_delegation(dp);
@@ -2539,9 +2539,9 @@ static void nfsd4_init_file(struct nfs4_file *fp, struct inode *ino)
	fp->fi_lease = NULL;
	memset(fp->fi_fds, 0, sizeof(fp->fi_fds));
	memset(fp->fi_access, 0, sizeof(fp->fi_access));
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	hlist_add_head(&fp->fi_hash, &file_hashtbl[hashval]);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
}

void
@@ -2712,15 +2712,15 @@ find_file(struct inode *ino)
	unsigned int hashval = file_hashval(ino);
	struct nfs4_file *fp;

	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	hlist_for_each_entry(fp, &file_hashtbl[hashval], fi_hash) {
		if (fp->fi_inode == ino) {
			get_nfs4_file(fp);
			spin_unlock(&recall_lock);
			spin_unlock(&state_lock);
			return fp;
		}
	}
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	return NULL;
}

@@ -2757,6 +2757,7 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
	struct nfs4_client *clp = dp->dl_stid.sc_client;
	struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);

	lockdep_assert_held(&state_lock);
	/* We're assuming the state code never drops its reference
	 * without first removing the lease.  Since we're in this lease
	 * callback (and since the lease code is serialized by the kernel
@@ -2793,11 +2794,11 @@ static void nfsd_break_deleg_cb(struct file_lock *fl)
	 */
	fl->fl_break_time = 0;

	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	fp->fi_had_conflict = true;
	list_for_each_entry(dp, &fp->fi_delegations, dl_perfile)
		nfsd_break_one_deleg(dp);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
}

static
@@ -3077,9 +3078,9 @@ static int nfs4_setlease(struct nfs4_delegation *dp)
	fp->fi_lease = fl;
	fp->fi_deleg_file = get_file(fl->fl_file);
	atomic_set(&fp->fi_delegees, 1);
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	hash_delegation_locked(dp, fp);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	return 0;
out_free:
	locks_free_lock(fl);
@@ -3094,14 +3095,14 @@ static int nfs4_set_delegation(struct nfs4_delegation *dp, struct nfs4_file *fp)
	dp->dl_file = fp;
	if (!fp->fi_lease)
		return nfs4_setlease(dp);
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	atomic_inc(&fp->fi_delegees);
	if (fp->fi_had_conflict) {
		spin_unlock(&recall_lock);
		spin_unlock(&state_lock);
		return -EAGAIN;
	}
	hash_delegation_locked(dp, fp);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	return 0;
}

@@ -3435,7 +3436,7 @@ nfs4_laundromat(struct nfsd_net *nn)
			clp->cl_clientid.cl_id);
		expire_client(clp);
	}
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	list_for_each_safe(pos, next, &nn->del_recall_lru) {
		dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
		if (net_generic(dp->dl_stid.sc_client->net, nfsd_net_id) != nn)
@@ -3447,7 +3448,7 @@ nfs4_laundromat(struct nfsd_net *nn)
		}
		list_move(&dp->dl_recall_lru, &reaplist);
	}
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	list_for_each_safe(pos, next, &reaplist) {
		dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
		revoke_delegation(dp);
@@ -4912,7 +4913,7 @@ static u64 nfsd_find_all_delegations(struct nfs4_client *clp, u64 max,
	struct nfs4_delegation *dp, *next;
	u64 count = 0;

	lockdep_assert_held(&recall_lock);
	lockdep_assert_held(&state_lock);
	list_for_each_entry_safe(dp, next, &clp->cl_delegations, dl_perclnt) {
		if (victims)
			list_move(&dp->dl_recall_lru, victims);
@@ -4928,9 +4929,9 @@ u64 nfsd_forget_client_delegations(struct nfs4_client *clp, u64 max)
	LIST_HEAD(victims);
	u64 count;

	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	count = nfsd_find_all_delegations(clp, max, &victims);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);

	list_for_each_entry_safe(dp, next, &victims, dl_recall_lru)
		revoke_delegation(dp);
@@ -4944,11 +4945,11 @@ u64 nfsd_recall_client_delegations(struct nfs4_client *clp, u64 max)
	LIST_HEAD(victims);
	u64 count;

	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	count = nfsd_find_all_delegations(clp, max, &victims);
	list_for_each_entry_safe(dp, next, &victims, dl_recall_lru)
		nfsd_break_one_deleg(dp);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);

	return count;
}
@@ -4957,9 +4958,9 @@ u64 nfsd_print_client_delegations(struct nfs4_client *clp, u64 max)
{
	u64 count = 0;

	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	count = nfsd_find_all_delegations(clp, max, NULL);
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);

	nfsd_print_count(clp, count, "delegations");
	return count;
@@ -5170,12 +5171,12 @@ nfs4_state_shutdown_net(struct net *net)

	nfs4_lock_state();
	INIT_LIST_HEAD(&reaplist);
	spin_lock(&recall_lock);
	spin_lock(&state_lock);
	list_for_each_safe(pos, next, &nn->del_recall_lru) {
		dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
		list_move(&dp->dl_recall_lru, &reaplist);
	}
	spin_unlock(&recall_lock);
	spin_unlock(&state_lock);
	list_for_each_safe(pos, next, &reaplist) {
		dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
		destroy_delegation(dp);