diff options
author | Fred Isaman <iisaman@netapp.com> | 2011-01-06 11:36:25 +0000 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-01-06 14:46:31 -0500 |
commit | cf7d63f1f9895713551df2e6d18b006f8af26e91 (patch) | |
tree | fc3dbfc12332878a832c11b5ae47ff259bb1bc32 /fs/nfs/pnfs.h | |
parent | c31663d4a1fac5ce1954d656cbcf80eb883b814a (diff) | |
download | linux-cf7d63f1f9895713551df2e6d18b006f8af26e91.tar.gz linux-cf7d63f1f9895713551df2e6d18b006f8af26e91.tar.bz2 linux-cf7d63f1f9895713551df2e6d18b006f8af26e91.zip |
pnfs: serialize LAYOUTGET(openstateid)
We shouldn't send a LAYOUTGET(openstateid) unless all outstanding RPCs
using the previous stateid are completed. This requires choosing the
stateid to encode earlier, so we can abort if one is not available (we
want to use the open stateid, but a LAYOUTGET is already out using
it), and adding a count of the number of outstanding rpc calls using
layout state (which for now consist solely of LAYOUTGETs).
Signed-off-by: Fred Isaman <iisaman@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 787253e6fca3..698380da24cc 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -69,6 +69,7 @@ struct pnfs_layout_hdr { struct list_head plh_layouts; /* other client layouts */ struct list_head plh_segs; /* layout segments list */ nfs4_stateid plh_stateid; + atomic_t plh_outstanding; /* number of RPCs out */ unsigned long plh_flags; struct inode *plh_inode; }; |