aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/callback_xdr.c4
-rw-r--r--fs/nfs/nfs4_fs.h4
-rw-r--r--fs/nfs/nfs4proc.c7
-rw-r--r--fs/nfs/nfs4state.c4
-rw-r--r--fs/nfs/nfs4xdr.c6
-rw-r--r--fs/nfs/pnfs.c10
-rw-r--r--include/linux/nfs4.h7
7 files changed, 19 insertions, 23 deletions
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
index 5466829c7e77..fd6cfdb917da 100644
--- a/fs/nfs/callback_xdr.c
+++ b/fs/nfs/callback_xdr.c
@@ -138,10 +138,10 @@ static __be32 decode_stateid(struct xdr_stream *xdr, nfs4_stateid *stateid)
138{ 138{
139 __be32 *p; 139 __be32 *p;
140 140
141 p = read_buf(xdr, 16); 141 p = read_buf(xdr, NFS4_STATEID_SIZE);
142 if (unlikely(p == NULL)) 142 if (unlikely(p == NULL))
143 return htonl(NFS4ERR_RESOURCE); 143 return htonl(NFS4ERR_RESOURCE);
144 memcpy(stateid->data, p, 16); 144 memcpy(stateid, p, NFS4_STATEID_SIZE);
145 return 0; 145 return 0;
146} 146}
147 147
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 1c54ef3146d4..16373df96f90 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -351,12 +351,12 @@ extern struct svc_version nfs4_callback_version4;
351 351
352static inline void nfs4_stateid_copy(nfs4_stateid *dst, const nfs4_stateid *src) 352static inline void nfs4_stateid_copy(nfs4_stateid *dst, const nfs4_stateid *src)
353{ 353{
354 memcpy(dst->data, src->data, sizeof(dst->data)); 354 memcpy(dst, src, sizeof(*dst));
355} 355}
356 356
357static inline bool nfs4_stateid_match(const nfs4_stateid *dst, const nfs4_stateid *src) 357static inline bool nfs4_stateid_match(const nfs4_stateid *dst, const nfs4_stateid *src)
358{ 358{
359 return memcmp(dst->data, src->data, sizeof(dst->data)) == 0; 359 return memcmp(dst, src, sizeof(*dst)) == 0;
360} 360}
361 361
362#else 362#else
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index ce0ad81dd466..e0e35288361c 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -6271,13 +6271,12 @@ static int nfs41_free_stateid(struct nfs_server *server, nfs4_stateid *stateid)
6271static bool nfs41_match_stateid(const nfs4_stateid *s1, 6271static bool nfs41_match_stateid(const nfs4_stateid *s1,
6272 const nfs4_stateid *s2) 6272 const nfs4_stateid *s2)
6273{ 6273{
6274 if (memcmp(s1->stateid.other, s2->stateid.other, 6274 if (memcmp(s1->other, s2->other, sizeof(s1->other)) != 0)
6275 sizeof(s1->stateid.other)) != 0)
6276 return false; 6275 return false;
6277 6276
6278 if (s1->stateid.seqid == s2->stateid.seqid) 6277 if (s1->seqid == s2->seqid)
6279 return true; 6278 return true;
6280 if (s1->stateid.seqid == 0 || s2->stateid.seqid == 0) 6279 if (s1->seqid == 0 || s2->seqid == 0)
6281 return true; 6280 return true;
6282 6281
6283 return false; 6282 return false;
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 55c8a81cd6fb..1dad5c53c7fa 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1240,8 +1240,8 @@ restart:
1240 * Open state on this file cannot be recovered 1240 * Open state on this file cannot be recovered
1241 * All we can do is revert to using the zero stateid. 1241 * All we can do is revert to using the zero stateid.
1242 */ 1242 */
1243 memset(state->stateid.data, 0, 1243 memset(&state->stateid, 0,
1244 sizeof(state->stateid.data)); 1244 sizeof(state->stateid));
1245 /* Mark the file as being 'closed' */ 1245 /* Mark the file as being 'closed' */
1246 state->state = 0; 1246 state->state = 0;
1247 break; 1247 break;
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 38736dca1b18..76ef98632839 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -930,7 +930,7 @@ static void encode_nops(struct compound_hdr *hdr)
930 930
931static void encode_nfs4_stateid(struct xdr_stream *xdr, const nfs4_stateid *stateid) 931static void encode_nfs4_stateid(struct xdr_stream *xdr, const nfs4_stateid *stateid)
932{ 932{
933 encode_opaque_fixed(xdr, stateid->data, NFS4_STATEID_SIZE); 933 encode_opaque_fixed(xdr, stateid, NFS4_STATEID_SIZE);
934} 934}
935 935
936static void encode_nfs4_verifier(struct xdr_stream *xdr, const nfs4_verifier *verf) 936static void encode_nfs4_verifier(struct xdr_stream *xdr, const nfs4_verifier *verf)
@@ -1548,7 +1548,7 @@ static void encode_open_stateid(struct xdr_stream *xdr, const struct nfs_open_co
1548 if (ctx->state != NULL) { 1548 if (ctx->state != NULL) {
1549 nfs4_select_rw_stateid(&stateid, ctx->state, l_ctx->lockowner, l_ctx->pid); 1549 nfs4_select_rw_stateid(&stateid, ctx->state, l_ctx->lockowner, l_ctx->pid);
1550 if (zero_seqid) 1550 if (zero_seqid)
1551 stateid.stateid.seqid = 0; 1551 stateid.seqid = 0;
1552 encode_nfs4_stateid(xdr, &stateid); 1552 encode_nfs4_stateid(xdr, &stateid);
1553 } else 1553 } else
1554 encode_nfs4_stateid(xdr, &zero_stateid); 1554 encode_nfs4_stateid(xdr, &zero_stateid);
@@ -4237,7 +4237,7 @@ static int decode_opaque_fixed(struct xdr_stream *xdr, void *buf, size_t len)
4237 4237
4238static int decode_stateid(struct xdr_stream *xdr, nfs4_stateid *stateid) 4238static int decode_stateid(struct xdr_stream *xdr, nfs4_stateid *stateid)
4239{ 4239{
4240 return decode_opaque_fixed(xdr, stateid->data, NFS4_STATEID_SIZE); 4240 return decode_opaque_fixed(xdr, stateid, NFS4_STATEID_SIZE);
4241} 4241}
4242 4242
4243static int decode_close(struct xdr_stream *xdr, struct nfs_closeres *res) 4243static int decode_close(struct xdr_stream *xdr, struct nfs_closeres *res)
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index c190e9c2e3d2..6f1c1e3d12bc 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -496,12 +496,12 @@ pnfs_set_layout_stateid(struct pnfs_layout_hdr *lo, const nfs4_stateid *new,
496{ 496{
497 u32 oldseq, newseq; 497 u32 oldseq, newseq;
498 498
499 oldseq = be32_to_cpu(lo->plh_stateid.stateid.seqid); 499 oldseq = be32_to_cpu(lo->plh_stateid.seqid);
500 newseq = be32_to_cpu(new->stateid.seqid); 500 newseq = be32_to_cpu(new->seqid);
501 if ((int)(newseq - oldseq) > 0) { 501 if ((int)(newseq - oldseq) > 0) {
502 nfs4_stateid_copy(&lo->plh_stateid, new); 502 nfs4_stateid_copy(&lo->plh_stateid, new);
503 if (update_barrier) { 503 if (update_barrier) {
504 u32 new_barrier = be32_to_cpu(new->stateid.seqid); 504 u32 new_barrier = be32_to_cpu(new->seqid);
505 505
506 if ((int)(new_barrier - lo->plh_barrier)) 506 if ((int)(new_barrier - lo->plh_barrier))
507 lo->plh_barrier = new_barrier; 507 lo->plh_barrier = new_barrier;
@@ -525,7 +525,7 @@ pnfs_layoutgets_blocked(struct pnfs_layout_hdr *lo, nfs4_stateid *stateid,
525 int lget) 525 int lget)
526{ 526{
527 if ((stateid) && 527 if ((stateid) &&
528 (int)(lo->plh_barrier - be32_to_cpu(stateid->stateid.seqid)) >= 0) 528 (int)(lo->plh_barrier - be32_to_cpu(stateid->seqid)) >= 0)
529 return true; 529 return true;
530 return lo->plh_block_lgets || 530 return lo->plh_block_lgets ||
531 test_bit(NFS_LAYOUT_DESTROYED, &lo->plh_flags) || 531 test_bit(NFS_LAYOUT_DESTROYED, &lo->plh_flags) ||
@@ -759,7 +759,7 @@ bool pnfs_roc_drain(struct inode *ino, u32 *barrier)
759 } 759 }
760 if (!found) { 760 if (!found) {
761 struct pnfs_layout_hdr *lo = nfsi->layout; 761 struct pnfs_layout_hdr *lo = nfsi->layout;
762 u32 current_seqid = be32_to_cpu(lo->plh_stateid.stateid.seqid); 762 u32 current_seqid = be32_to_cpu(lo->plh_stateid.seqid);
763 763
764 /* Since close does not return a layout stateid for use as 764 /* Since close does not return a layout stateid for use as
765 * a barrier, we choose the worst-case barrier. 765 * a barrier, we choose the worst-case barrier.
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 32345c2805c0..834df8bf08b6 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -183,15 +183,12 @@ struct nfs4_acl {
183 183
184typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; 184typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier;
185 185
186struct nfs41_stateid { 186struct nfs_stateid4 {
187 __be32 seqid; 187 __be32 seqid;
188 char other[NFS4_STATEID_OTHER_SIZE]; 188 char other[NFS4_STATEID_OTHER_SIZE];
189} __attribute__ ((packed)); 189} __attribute__ ((packed));
190 190
191typedef union { 191typedef struct nfs_stateid4 nfs4_stateid;
192 char data[NFS4_STATEID_SIZE];
193 struct nfs41_stateid stateid;
194} nfs4_stateid;
195 192
196enum nfs_opnum4 { 193enum nfs_opnum4 {
197 OP_ACCESS = 3, 194 OP_ACCESS = 3,