nfsd: clean up sparse endianness warnings in nfscache.c
authorJeff Layton <jlayton@primarydata.com>
Tue, 17 Jun 2014 11:44:12 +0000 (07:44 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 23 Jun 2014 15:31:37 +0000 (11:31 -0400)
We currently hash the XID to determine a hash bucket to use for the
reply cache entry, which is fed into hash_32 without byte-swapping it.
Add __force to make sparse happy, and add some comments to explain
why.

Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfscache.c

index 6040da8830ffa629adf878458f05ebaca174e3fe..ff9567633245995579be4403f7189de5a7ab2321 100644 (file)
@@ -221,7 +221,12 @@ static void
 hash_refile(struct svc_cacherep *rp)
 {
        hlist_del_init(&rp->c_hash);
-       hlist_add_head(&rp->c_hash, cache_hash + hash_32(rp->c_xid, maskbits));
+       /*
+        * No point in byte swapping c_xid since we're just using it to pick
+        * a hash bucket.
+        */
+       hlist_add_head(&rp->c_hash, cache_hash +
+                       hash_32((__force u32)rp->c_xid, maskbits));
 }
 
 /*
@@ -356,7 +361,11 @@ nfsd_cache_search(struct svc_rqst *rqstp, __wsum csum)
        struct hlist_head       *rh;
        unsigned int            entries = 0;
 
-       rh = &cache_hash[hash_32(rqstp->rq_xid, maskbits)];
+       /*
+        * No point in byte swapping rq_xid since we're just using it to pick
+        * a hash bucket.
+        */
+       rh = &cache_hash[hash_32((__force u32)rqstp->rq_xid, maskbits)];
        hlist_for_each_entry(rp, rh, c_hash) {
                ++entries;
                if (nfsd_cache_match(rqstp, csum, rp)) {