diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-09-21 15:49:42 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-09-28 16:03:17 -0400 |
commit | 173f77e9c5cbddb02eebe17dd9c48d39e5eb86b9 (patch) | |
tree | 648a0e78eb1316f5ebe3cee659a4aac0b8ffa48c /fs/nfs/pnfs.c | |
parent | 8006bfba36d42b6976ed92979f51e5f9bef2625c (diff) | |
download | op-kernel-dev-173f77e9c5cbddb02eebe17dd9c48d39e5eb86b9.zip op-kernel-dev-173f77e9c5cbddb02eebe17dd9c48d39e5eb86b9.tar.gz |
NFSv4.1: Clear NFS_LAYOUT_BULK_RECALL when the layout segments are freed
Once all the affected layout segments have been freed up, clear the
NFS_LAYOUT_BULK_RECALL flag so that we can reuse the pnfs_layout_hdr
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r-- | fs/nfs/pnfs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index bda88a2..174c51a 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -331,6 +331,8 @@ pnfs_layout_remove_lseg(struct pnfs_layout_hdr *lo, list_del_init(&lseg->pls_list); /* Matched by pnfs_get_layout_hdr in pnfs_layout_insert_lseg */ atomic_dec(&lo->plh_refcount); + if (list_empty(&lo->plh_segs)) + clear_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags); rpc_wake_up(&NFS_SERVER(inode)->roc_rpcwaitq); } |