sunrpc: move rq_usedeferral flag to rq_flags
authorJeff Layton <jlayton@primarydata.com>
Wed, 19 Nov 2014 12:51:16 +0000 (07:51 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 9 Dec 2014 16:22:20 +0000 (11:22 -0500)
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c
include/linux/sunrpc/svc.h
include/trace/events/sunrpc.h
net/sunrpc/svc.c
net/sunrpc/svc_xprt.c

index 74fb15eefc3165e37f03aa5ebf3b326cac7c396d..6f98393ad0d92d850af6325b0f7df7e4836e9828 100644 (file)
@@ -1370,7 +1370,7 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
         * Don't use the deferral mechanism for NFSv4; compounds make it
         * too hard to avoid non-idempotency problems.
         */
-       rqstp->rq_usedeferral = false;
+       clear_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
 
        /*
         * According to RFC3010, this takes precedence over all other errors.
@@ -1486,7 +1486,7 @@ encode_op:
        BUG_ON(cstate->replay_owner);
 out:
        /* Reset deferral mechanism for RPC deferrals */
-       rqstp->rq_usedeferral = true;
+       set_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
        dprintk("nfsv4 compound returned %d\n", ntohl(status));
        return status;
 }
index a91df9047f3241ef748926f5e48533397ff4c029..6a3cf4c76dce1329f4cb67cd6358ce7c061a4243 100644 (file)
@@ -236,7 +236,6 @@ struct svc_rqst {
        struct svc_cred         rq_cred;        /* auth info */
        void *                  rq_xprt_ctxt;   /* transport specific context ptr */
        struct svc_deferred_req*rq_deferred;    /* deferred request we are replaying */
-       bool                    rq_usedeferral; /* use deferral */
 
        size_t                  rq_xprt_hlen;   /* xprt header len */
        struct xdr_buf          rq_arg;
@@ -255,6 +254,7 @@ struct svc_rqst {
        u32                     rq_prot;        /* IP protocol */
 #define        RQ_SECURE       (0)                     /* secure port */
 #define        RQ_LOCAL        (1)                     /* local request */
+#define        RQ_USEDEFERRAL  (2)                     /* use deferral */
        unsigned long           rq_flags;       /* flags field */
 
        void *                  rq_argp;        /* decoded arguments */
index 98259f163cd8b20efb599c6de01d9b8cda82f4a6..6d1facdebc9229b86f5072282b7f13b2ba0529db 100644 (file)
@@ -412,10 +412,11 @@ TRACE_EVENT(xs_tcp_data_recv,
                        __entry->copied, __entry->reclen, __entry->offset)
 );
 
-#define show_rqstp_flags(flags)                                \
-       __print_flags(flags, "|",                       \
-               { (1UL << RQ_SECURE),   "RQ_SECURE"},   \
-               { (1UL << RQ_LOCAL),    "RQ_LOCAL"})
+#define show_rqstp_flags(flags)                                                \
+       __print_flags(flags, "|",                                       \
+               { (1UL << RQ_SECURE),           "RQ_SECURE"},           \
+               { (1UL << RQ_LOCAL),            "RQ_LOCAL"},            \
+               { (1UL << RQ_USEDEFERRAL),      "RQ_USEDEFERRAL"})
 
 TRACE_EVENT(svc_recv,
        TP_PROTO(struct svc_rqst *rqst, int status),
index 163df468d6d57221f476b61a8d2c6040c5a49686..f6a8f2f7a25396ceee51346cc477a8f86738bb56 100644 (file)
@@ -1090,7 +1090,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
        /* Will be turned off only in gss privacy case: */
        rqstp->rq_splice_ok = true;
        /* Will be turned off only when NFSv4 Sessions are used */
-       rqstp->rq_usedeferral = true;
+       set_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
        rqstp->rq_dropme = false;
 
        /* Setup reply header */
index eaa9263c2d28475724f6b831083ed7faedbe584c..a40f3755a33df083dbe511b6724f91bdc4ef4a40 100644 (file)
@@ -1081,7 +1081,7 @@ static struct cache_deferred_req *svc_defer(struct cache_req *req)
        struct svc_rqst *rqstp = container_of(req, struct svc_rqst, rq_chandle);
        struct svc_deferred_req *dr;
 
-       if (rqstp->rq_arg.page_len || !rqstp->rq_usedeferral)
+       if (rqstp->rq_arg.page_len || !test_bit(RQ_USEDEFERRAL, &rqstp->rq_flags))
                return NULL; /* if more than a page, give up FIXME */
        if (rqstp->rq_deferred) {
                dr = rqstp->rq_deferred;