diff options
author | Weston Andros Adamson <dros@netapp.com> | 2011-05-31 21:46:50 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-06-15 11:23:02 -0400 |
commit | 9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b (patch) | |
tree | 61ac70f49e793494dee1196dae55ac0c19036410 /fs/nfs/pnfs.h | |
parent | 3f303103b884ca577908d3e5c0650ad12e40c586 (diff) | |
download | lwn-9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b.tar.gz lwn-9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b.zip |
NFS: fix umount of pnfs filesystems
Unmounting a pnfs filesystem hangs using filelayout and possibly others.
This fixes the use of the rcu protected node by making use of a new 'tmpnode'
for the temporary purge list. Also, the spinlock shouldn't be held when calling
synchronize_rcu().
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pnfs.h')
-rw-r--r-- | fs/nfs/pnfs.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 48d0a8e4d062..96bf4e6f45be 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -186,6 +186,7 @@ int pnfs_ld_read_done(struct nfs_read_data *); /* pnfs_dev.c */ struct nfs4_deviceid_node { struct hlist_node node; + struct hlist_node tmpnode; const struct pnfs_layoutdriver_type *ld; const struct nfs_client *nfs_client; struct nfs4_deviceid deviceid; |