diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-01-24 14:57:53 -0500 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-01-24 18:46:47 -0500 |
commit | 425c1d4e5b6d4bd700eb94ad8318bdb05431fdc7 (patch) | |
tree | 85d4d8d82cf0e33b85a8d348e8c143d3d6c6396d /fs/nfs/nfs4xdr.c | |
parent | 6b447539aa9aaac0a0215f3e28a0839553210e7e (diff) |
NFSv4: Fix lock on-wire reordering issues
This patch ensures that the server cannot reorder our LOCK/LOCKU
requests if they are sent in parallel on the wire.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
-rw-r--r-- | fs/nfs/nfs4xdr.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index d05fada4929c..e3018e7a316c 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -1304,12 +1304,12 @@ static void encode_lock(struct xdr_stream *xdr, const struct nfs_lock_args *args | |||
1304 | *p = cpu_to_be32(args->new_lock_owner); | 1304 | *p = cpu_to_be32(args->new_lock_owner); |
1305 | if (args->new_lock_owner){ | 1305 | if (args->new_lock_owner){ |
1306 | encode_nfs4_seqid(xdr, args->open_seqid); | 1306 | encode_nfs4_seqid(xdr, args->open_seqid); |
1307 | encode_nfs4_stateid(xdr, args->open_stateid); | 1307 | encode_nfs4_stateid(xdr, &args->open_stateid); |
1308 | encode_nfs4_seqid(xdr, args->lock_seqid); | 1308 | encode_nfs4_seqid(xdr, args->lock_seqid); |
1309 | encode_lockowner(xdr, &args->lock_owner); | 1309 | encode_lockowner(xdr, &args->lock_owner); |
1310 | } | 1310 | } |
1311 | else { | 1311 | else { |
1312 | encode_nfs4_stateid(xdr, args->lock_stateid); | 1312 | encode_nfs4_stateid(xdr, &args->lock_stateid); |
1313 | encode_nfs4_seqid(xdr, args->lock_seqid); | 1313 | encode_nfs4_seqid(xdr, args->lock_seqid); |
1314 | } | 1314 | } |
1315 | } | 1315 | } |
@@ -1333,7 +1333,7 @@ static void encode_locku(struct xdr_stream *xdr, const struct nfs_locku_args *ar | |||
1333 | encode_op_hdr(xdr, OP_LOCKU, decode_locku_maxsz, hdr); | 1333 | encode_op_hdr(xdr, OP_LOCKU, decode_locku_maxsz, hdr); |
1334 | encode_uint32(xdr, nfs4_lock_type(args->fl, 0)); | 1334 | encode_uint32(xdr, nfs4_lock_type(args->fl, 0)); |
1335 | encode_nfs4_seqid(xdr, args->seqid); | 1335 | encode_nfs4_seqid(xdr, args->seqid); |
1336 | encode_nfs4_stateid(xdr, args->stateid); | 1336 | encode_nfs4_stateid(xdr, &args->stateid); |
1337 | p = reserve_space(xdr, 16); | 1337 | p = reserve_space(xdr, 16); |
1338 | p = xdr_encode_hyper(p, args->fl->fl_start); | 1338 | p = xdr_encode_hyper(p, args->fl->fl_start); |
1339 | xdr_encode_hyper(p, nfs4_lock_length(args->fl)); | 1339 | xdr_encode_hyper(p, nfs4_lock_length(args->fl)); |