sunrpc: move rq_dropme flag into rq_flags
authorJeff Layton <jlayton@primarydata.com>
Wed, 19 Nov 2014 12:51:17 +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/nfssvc.c
include/linux/sunrpc/svc.h
include/trace/events/sunrpc.h
net/sunrpc/svc.c
net/sunrpc/svc_xprt.c

index 752d56bbe0ba47cda7ed87cb724130944879d269..314f5c8f8f1a9cfdef6cc075a9c4bb5350deec9b 100644 (file)
@@ -692,7 +692,7 @@ nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp)
        /* Now call the procedure handler, and encode NFS status. */
        nfserr = proc->pc_func(rqstp, rqstp->rq_argp, rqstp->rq_resp);
        nfserr = map_new_errors(rqstp->rq_vers, nfserr);
-       if (nfserr == nfserr_dropit || rqstp->rq_dropme) {
+       if (nfserr == nfserr_dropit || test_bit(RQ_DROPME, &rqstp->rq_flags)) {
                dprintk("nfsd: Dropping request; may be revisited later\n");
                nfsd_cache_update(rqstp, RC_NOCACHE, NULL);
                return 0;
index 6a3cf4c76dce1329f4cb67cd6358ce7c061a4243..d4ea3e5246b017cc6ef996bf6e48455a4ed46f30 100644 (file)
@@ -255,6 +255,7 @@ struct svc_rqst {
 #define        RQ_SECURE       (0)                     /* secure port */
 #define        RQ_LOCAL        (1)                     /* local request */
 #define        RQ_USEDEFERRAL  (2)                     /* use deferral */
+#define        RQ_DROPME       (3)                     /* drop current reply */
        unsigned long           rq_flags;       /* flags field */
 
        void *                  rq_argp;        /* decoded arguments */
@@ -271,7 +272,6 @@ struct svc_rqst {
        struct cache_req        rq_chandle;     /* handle passed to caches for 
                                                 * request delaying 
                                                 */
-       bool                    rq_dropme;
        /* Catering to nfsd */
        struct auth_domain *    rq_client;      /* RPC peer info */
        struct auth_domain *    rq_gssclient;   /* "gss/"-style peer info */
index 6d1facdebc9229b86f5072282b7f13b2ba0529db..355671f19a9f597fc202b2fb6b7bfb534b006ab9 100644 (file)
@@ -416,7 +416,8 @@ TRACE_EVENT(xs_tcp_data_recv,
        __print_flags(flags, "|",                                       \
                { (1UL << RQ_SECURE),           "RQ_SECURE"},           \
                { (1UL << RQ_LOCAL),            "RQ_LOCAL"},            \
-               { (1UL << RQ_USEDEFERRAL),      "RQ_USEDEFERRAL"})
+               { (1UL << RQ_USEDEFERRAL),      "RQ_USEDEFERRAL"},      \
+               { (1UL << RQ_DROPME),           "RQ_DROPME"})
 
 TRACE_EVENT(svc_recv,
        TP_PROTO(struct svc_rqst *rqst, int status),
@@ -459,13 +460,12 @@ DECLARE_EVENT_CLASS(svc_rqst_status,
        TP_fast_assign(
                __entry->addr = (struct sockaddr *)&rqst->rq_addr;
                __entry->xid = rqst->rq_xid;
-               __entry->dropme = (int)rqst->rq_dropme;
                __entry->status = status;
                __entry->flags = rqst->rq_flags;
        ),
 
-       TP_printk("addr=%pIScp rq_xid=0x%x dropme=%d status=%d flags=%s",
-               __entry->addr, be32_to_cpu(__entry->xid), __entry->dropme,
+       TP_printk("addr=%pIScp rq_xid=0x%x status=%d flags=%s",
+               __entry->addr, be32_to_cpu(__entry->xid),
                __entry->status, show_rqstp_flags(__entry->flags))
 );
 
index f6a8f2f7a25396ceee51346cc477a8f86738bb56..d8a9d603b7863d4f3d972e92d8b83853d5131c85 100644 (file)
@@ -1091,7 +1091,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
        rqstp->rq_splice_ok = true;
        /* Will be turned off only when NFSv4 Sessions are used */
        set_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
-       rqstp->rq_dropme = false;
+       clear_bit(RQ_DROPME, &rqstp->rq_flags);
 
        /* Setup reply header */
        rqstp->rq_xprt->xpt_ops->xpo_prep_reply_hdr(rqstp);
@@ -1191,7 +1191,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
                *statp = procp->pc_func(rqstp, rqstp->rq_argp, rqstp->rq_resp);
 
                /* Encode reply */
-               if (rqstp->rq_dropme) {
+               if (test_bit(RQ_DROPME, &rqstp->rq_flags)) {
                        if (procp->pc_release)
                                procp->pc_release(rqstp, NULL, rqstp->rq_resp);
                        goto dropit;
index a40f3755a33df083dbe511b6724f91bdc4ef4a40..143c4c8ea2f106e1e8942f21bda7c384181098b3 100644 (file)
@@ -1110,7 +1110,7 @@ static struct cache_deferred_req *svc_defer(struct cache_req *req)
        }
        svc_xprt_get(rqstp->rq_xprt);
        dr->xprt = rqstp->rq_xprt;
-       rqstp->rq_dropme = true;
+       set_bit(RQ_DROPME, &rqstp->rq_flags);
 
        dr->handle.revisit = svc_revisit;
        return &dr->handle;