summaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4filelayout.c
diff options
context:
space:
mode:
authorBenny Halevy <bhalevy@panasas.com>2011-05-24 17:04:02 +0200
committerBoaz Harrosh <bharrosh@panasas.com>2011-05-29 19:52:31 +0200
commit35c8bb543c9e83197e6375142d1d1c2ee3cf017d (patch)
treef0f8a69c1586a8d24526223ed70a922c934f9b87 /fs/nfs/nfs4filelayout.c
parentpnfs: CB_NOTIFY_DEVICEID (diff)
downloadlinux-35c8bb543c9e83197e6375142d1d1c2ee3cf017d.tar.xz
linux-35c8bb543c9e83197e6375142d1d1c2ee3cf017d.zip
NFSv4.1: use layout driver in global device cache
pnfs deviceids are unique per server, per layout type. struct nfs_client is currently used to distinguish deviceids from different nfs servers, yet these may clash between different layout types on the same server. Therefore, use the layout driver associated with each deviceid at insertion time to look it up, unhash, or delete it. Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Diffstat (limited to 'fs/nfs/nfs4filelayout.c')
-rw-r--r--fs/nfs/nfs4filelayout.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
index cd289d9b7de7..501a9b86b318 100644
--- a/fs/nfs/nfs4filelayout.c
+++ b/fs/nfs/nfs4filelayout.c
@@ -441,7 +441,8 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo,
}
/* find and reference the deviceid */
- d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode)->nfs_client, id);
+ d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode)->pnfs_curr_ld,
+ NFS_SERVER(lo->plh_inode)->nfs_client, id);
if (d == NULL) {
dsaddr = get_device_info(lo->plh_inode, id, gfp_flags);
if (dsaddr == NULL)