From: Tom Tucker <tom@opengridcomputing.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 01/11] svcrdma: Add a type for keeping NFS RPC mapping
Date: Mon, 23 Jun 2008 21:58:21 -0500 [thread overview]
Message-ID: <486062CD.6010800@opengridcomputing.com> (raw)
In-Reply-To: <20080623182707.GC24373@fieldses.org>
J. Bruce Fields wrote:
> On Sat, Jun 21, 2008 at 11:31:43AM -0500, Tom Tucker wrote:
>
>> J. Bruce Fields wrote:
>>
>>> On Thu, May 29, 2008 at 12:54:46PM -0500, Tom Tucker wrote:
>>>
>>>
>>>> Create a new data structure to hold the remote client address space
>>>> to local server address space mapping.
>>>>
>>>> Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
>>>>
>>>> ---
>>>> include/linux/sunrpc/svc_rdma.h | 27 +++++++++++++++++++++++++++
>>>> net/sunrpc/xprtrdma/svc_rdma.c | 23 +++++++++++++++++++++++
>>>> net/sunrpc/xprtrdma/svc_rdma_transport.c | 26 ++++++++++++++++++++++++++
>>>> 3 files changed, 76 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
>>>> index 05eb466..bd8749c 100644
>>>> --- a/include/linux/sunrpc/svc_rdma.h
>>>> +++ b/include/linux/sunrpc/svc_rdma.h
>>>> @@ -86,6 +86,31 @@ struct svc_rdma_op_ctxt {
>>>> struct page *pages[RPCSVC_MAXPAGES];
>>>> };
>>>> +/*
>>>> + * NFS_ requests are mapped on the client side by the chunk lists in
>>>> + * the RPCRDMA header. During the fetching of the RPC from the client
>>>> + * and the writing of the reply to the client, the memory in the
>>>> + * client and the memory in the server must be mapped as contiguous
>>>> + * vaddr/len for access by the hardware. These data strucures keep
>>>> + * these mappings.
>>>> + *
>>>> + * For an RDMA_WRITE, the 'sge' maps the RPC REPLY. For RDMA_READ, the
>>>> + * 'sge' in the svc_rdma_req_map maps the server side RPC reply and the
>>>> + * 'ch' field maps the read-list of the RPCRDMA header to the 'sge'
>>>> + * mapping of the reply.
>>>> + */
>>>> +struct svc_rdma_chunk_sge {
>>>> + int start; /* sge no for this chunk */
>>>> + int count; /* sge count for this chunk */
>>>> +};
>>>> +struct svc_rdma_req_map {
>>>> + unsigned long count;
>>>> + union {
>>>> + struct kvec sge[RPCSVC_MAXPAGES];
>>>> + struct svc_rdma_chunk_sge ch[RPCSVC_MAXPAGES];
>>>> + };
>>>> +};
>>>> +
>>>> #define RDMACTXT_F_LAST_CTXT 2
>>>> struct svcxprt_rdma {
>>>> @@ -173,6 +198,8 @@ extern int svc_rdma_post_recv(struct svcxprt_rdma *);
>>>> extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *);
>>>> extern struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *);
>>>> extern void svc_rdma_put_context(struct svc_rdma_op_ctxt *, int);
>>>> +extern struct svc_rdma_req_map *svc_rdma_get_req_map(void);
>>>> +extern void svc_rdma_put_req_map(struct svc_rdma_req_map *);
>>>> extern void svc_sq_reap(struct svcxprt_rdma *);
>>>> extern void svc_rq_reap(struct svcxprt_rdma *);
>>>> extern struct svc_xprt_class svc_rdma_class;
>>>> diff --git a/net/sunrpc/xprtrdma/svc_rdma.c b/net/sunrpc/xprtrdma/svc_rdma.c
>>>> index 88c0ca2..545ea72 100644
>>>> --- a/net/sunrpc/xprtrdma/svc_rdma.c
>>>> +++ b/net/sunrpc/xprtrdma/svc_rdma.c
>>>> @@ -69,6 +69,9 @@ atomic_t rdma_stat_rq_prod;
>>>> atomic_t rdma_stat_sq_poll;
>>>> atomic_t rdma_stat_sq_prod;
>>>> +/* Temporary NFS request map cache */
>>>> +struct kmem_cache *svc_rdma_map_cachep = NULL;
>>>>
>>>>
>>> No need to initialize globals to NULL.
>>>
>>>
>>>
>> I thought only static objects were initialized per the C standard. Or
>> are you saying that this particular
>> global doesn't need to be initialized because of the way it is used?
>>
>
> I don't know if the initialization is mandated by the standards or
> whether it's just gcc behavior, but I know I get a complaint every time
> somebody finds one of those....
>
>
In this case, the initialization is unnecessary, so it can be safely dumped.
> That may partly just be a preference for conciseness, but I think it may
> also allow gcc to put the thing in a different section and save some
> space in the on-disk kernel--I don't know.
>
>
Right -- un-initialized data goes in a different section, the .bss
section in particular. Since the .bss section is not "initialized",
there are no values (zeroes in this case) sitting in the object file
ready to be mapped into whatever location becomes .bss. By contrast, the
.data section contains initialized data and the initial values are
sitting in the object file.
So my question here is a little subtler:
A. Do we discard _all_ zero initializations of non-static globals
because we can safely assume that .bss is initialzed (not a fan of
this), or
B. Don't be an idiot and initialize objects unnecessarily because it
bloats the kernel object file?
An idiot voting for B,
Tom
> --b.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2008-06-24 2:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <12120836962076-git-send-email-tom@opengridcomputing.com>
2008-05-29 22:10 ` [PATCH 0/11] svcrdma: WR context management bug fixes and cleanup J. Bruce Fields
2008-05-29 22:25 ` Tom Tucker
[not found] ` <1212099937.22478.3.camel-SMNkleLxa3ZimH42XvhXlA@public.gmane.org>
2008-05-29 22:26 ` Roland Dreier
[not found] ` <12120836962324-git-send-email-tom@opengridcomputing.com>
2008-06-16 19:48 ` [PATCH 01/11] svcrdma: Add a type for keeping NFS RPC mapping J. Bruce Fields
2008-06-21 16:31 ` Tom Tucker
2008-06-23 18:27 ` J. Bruce Fields
2008-06-24 2:58 ` Tom Tucker [this message]
2008-06-24 19:58 ` J. Bruce Fields
2008-06-24 20:31 ` Benny Halevy
2008-06-24 20:38 ` Trond Myklebust
[not found] ` <12120836963727-git-send-email-tom@opengridcomputing.com>
2008-06-16 21:04 ` [PATCH 02/11] svcrdma: Use RPC reply map for RDMA_WRITE processing J. Bruce Fields
2008-06-21 16:26 ` Tom Tucker
2008-06-23 18:21 ` J. Bruce Fields
2008-06-24 2:29 ` Tom Tucker
2008-06-21 16:51 ` Tom Tucker
2008-06-23 18:51 ` J. Bruce Fields
2008-06-24 3:02 ` Tom Tucker
[not found] ` <1212083697950-git-send-email-tom@opengridcomputing.com>
[not found] ` <1212083697236-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836973390-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836973638-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836973072-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836972503-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836973166-git-send-email-tom@opengridcomputing.com>
[not found] ` <12120836972648-git-send-email-tom@opengridcomputing.com>
2008-06-16 21:24 ` [PATCH 10/11] svcrdma: Create a kmem cache for the WR contexts J. Bruce Fields
2008-06-21 17:08 ` Tom Tucker
2008-07-03 2:27 [PATCH 00/11] svcrdma: WR context management bug fixes and cleanup Tom Tucker
2008-07-03 2:27 ` [PATCH 01/11] svcrdma: Add a type for keeping NFS RPC mapping Tom Tucker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=486062CD.6010800@opengridcomputing.com \
--to=tom@opengridcomputing.com \
--cc=bfields@fieldses.org \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox