summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.h
diff options
context:
space:
mode:
authorWeston Andros Adamson2011-06-01 03:46:50 +0200
committerTrond Myklebust2011-06-15 17:23:02 +0200
commit9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b (patch)
tree61ac70f49e793494dee1196dae55ac0c19036410 /fs/nfs/pnfs.h
parentMerge git://git.infradead.org/mtd-2.6 (diff)
downloadkernel-qcow2-linux-9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b.tar.gz
kernel-qcow2-linux-9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b.tar.xz
kernel-qcow2-linux-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.h1
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;