Re: [NFS] [PATCH] RPC: add wrapper for svc_reserve to account forchecksum

From: Jeff Layton
Date: Tue May 01 2007 - 13:11:51 EST


On Tue, May 01, 2007 at 01:01:27PM -0400, Jeff Layton wrote:
> On Tue, May 01, 2007 at 12:14:11PM +1000, Neil Brown wrote:
> >
> > Yes, that asn1 encoding does seem rather awkward.
> >
> > Maybe we should just use RPC_MAX_AUTH_SIZE like other bits of GSS code
> > does. There is no great cost in reserving too much space - it just
> > might slow things down a little when tight on memory.
> > What would you think of submitting an incremental patch which replaces
> > the "56" with "RPC_MAX_AUTH_SIZE" ?
> >
> > Thanks (and sorry for the delay).
> > NeilBrown
> >
>
> Thanks for looking into this, Neil. I wasn't sure how hard a reservation that
> was (still working on wrapping my brain around the RPC code). I'll have a look
> at the patch you posted. Hopefully that is the problem...
>
> As far as your suggestion to use RPC_MAX_AUTH_SIZE, that sounds like a good
> idea to me. I'm all for avoiding "magic" numbers. How does this look? I also
> cleaned up the comments as well.
>

Resending patch with a proper signed-off-by line. Also cc'ing Andrew:

Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>

diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
index 9114f11..ed7cbf1 100644
--- a/include/linux/sunrpc/svc.h
+++ b/include/linux/sunrpc/svc.h
@@ -399,10 +399,9 @@ char * svc_print_addr(struct svc_rqst *, char *, size_t);
/*
* When we want to reduce the size of the reserved space in the response
* buffer, we need to take into account the size of any checksum data that
- * may be at the end of the packet. For now, just use a hardcoded value
- * for each possible authflavor. This will need to be updated when new
- * encryption types or algorithms are added, or we'll have to come up with
- * a way to reasonably calculate this on the fly (maybe via a new auth_op).
+ * may be at the end of the packet. This is difficult to determine exactly
+ * for all cases without actually generating the checksum, so we just use a
+ * static value.
*/
static inline void
svc_reserve_auth(struct svc_rqst *rqstp, int space)
@@ -411,7 +410,7 @@ svc_reserve_auth(struct svc_rqst *rqstp, int space)

switch(rqstp->rq_authop->flavour) {
case RPC_AUTH_GSS:
- added_space = 56; /* determined empirically */
+ added_space = RPC_MAX_AUTH_SIZE;
}
return svc_reserve(rqstp, space + added_space);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/