summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.h
diff options
context:
space:
mode:
authorPeng Tao2014-08-22 11:37:41 +0200
committerTom Haynes2015-02-03 20:06:39 +0100
commit9bf87482ddc6f8db884177a2a16b1a1dc12f8777 (patch)
tree380c0cc9a14dc4b5492f35473e88aee787b224ff /fs/nfs/pnfs.h
parentnfs41: close a small race window when adding new layout to global list (diff)
downloadkernel-qcow2-linux-9bf87482ddc6f8db884177a2a16b1a1dc12f8777.tar.gz
kernel-qcow2-linux-9bf87482ddc6f8db884177a2a16b1a1dc12f8777.tar.xz
kernel-qcow2-linux-9bf87482ddc6f8db884177a2a16b1a1dc12f8777.zip
nfs41: serialize first layoutget of a file
Per RFC 5661 Errata 3208: | A client MAY always forget its layout state and associated | layout stateid at any time (See also section 12.5.5.1). | In such case, the client MUST use a non-layout stateid for the next | LAYOUTGET operation. This will signal the server that the client has | no more layouts on the file and its respective layout state can be | released before issuing a new layout in response to LAYOUTGET. In order to make such a signal unique to server, client needs to serialize all layoutgets using non-layout stateid. We implement this by serializing layoutgets when client has no layout segments at hand. Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.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 c39882191651..4cf0d54e14c3 100644
--- a/fs/nfs/pnfs.h
+++ b/fs/nfs/pnfs.h
@@ -95,6 +95,7 @@ enum {
NFS_LAYOUT_ROC, /* some lseg had roc bit set */
NFS_LAYOUT_RETURN, /* Return this layout ASAP */
NFS_LAYOUT_INVALID_STID, /* layout stateid id is invalid */
+ NFS_LAYOUT_FIRST_LAYOUTGET, /* Serialize first layoutget */
};
enum layoutdriver_policy_flags {