linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Long Li <longli@microsoft.com>
To: Tom Talpey <tom@talpey.com>, Steve French <sfrench@samba.org>,
	"linux-cifs@vger.kernel.org" <linux-cifs@vger.kernel.org>,
	"samba-technical@lists.samba.org"
	<samba-technical@lists.samba.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>
Subject: RE: [Patch v2 06/15] CIFS: Introduce helper function to get page offset and length in smb_rqst
Date: Mon, 25 Jun 2018 21:14:31 +0000	[thread overview]
Message-ID: <CY4PR2101MB0722840106EDFEFBBA42D45FCE4A0@CY4PR2101MB0722.namprd21.prod.outlook.com> (raw)
In-Reply-To: <a6613388-0dc5-7646-b71f-75b8bec4e4d9@talpey.com>

> Subject: Re: [Patch v2 06/15] CIFS: Introduce helper function to get page
> offset and length in smb_rqst
> 
> On 5/30/2018 3:47 PM, Long Li wrote:
> > From: Long Li <longli@microsoft.com>
> >
> > Introduce a function rqst_page_get_length to return the page offset
> > and length for a given page in smb_rqst. This function is to be used
> > by following patches.
> >
> > Signed-off-by: Long Li <longli@microsoft.com>
> > ---
> >   fs/cifs/cifsproto.h |  3 +++
> >   fs/cifs/misc.c      | 17 +++++++++++++++++
> >   2 files changed, 20 insertions(+)
> >
> > diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index
> > 7933c5f..89dda14 100644
> > --- a/fs/cifs/cifsproto.h
> > +++ b/fs/cifs/cifsproto.h
> > @@ -557,4 +557,7 @@ int cifs_alloc_hash(const char *name, struct
> crypto_shash **shash,
> >   		    struct sdesc **sdesc);
> >   void cifs_free_hash(struct crypto_shash **shash, struct sdesc
> > **sdesc);
> >
> > +extern void rqst_page_get_length(struct smb_rqst *rqst, unsigned int
> page,
> > +				unsigned int *len, unsigned int *offset);
> > +
> >   #endif			/* _CIFSPROTO_H */
> > diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 96849b5..e951417
> > 100644
> > --- a/fs/cifs/misc.c
> > +++ b/fs/cifs/misc.c
> > @@ -905,3 +905,20 @@ cifs_free_hash(struct crypto_shash **shash,
> struct sdesc **sdesc)
> >   		crypto_free_shash(*shash);
> >   	*shash = NULL;
> >   }
> > +
> > +/**
> > + * rqst_page_get_length - obtain the length and offset for a page in
> > +smb_rqst
> > + * Input: rqst - a smb_rqst, page - a page index for rqst
> > + * Output: *len - the length for this page, *offset - the offset for
> > +this page  */ void rqst_page_get_length(struct smb_rqst *rqst,
> > +unsigned int page,
> > +				unsigned int *len, unsigned int *offset) {
> > +	*len = rqst->rq_pagesz;
> > +	*offset = (page == 0) ? rqst->rq_offset : 0;
> 
> Really? Page 0 always has a zero offset??

I think you are misreading this line. The offset for page 0 is rq_offset, the offset for all subsequent pages are 0.

> 
> > +
> > +	if (rqst->rq_npages == 1 || page == rqst->rq_npages-1)
> > +		*len = rqst->rq_tailsz;
> > +	else if (page == 0)
> > +		*len = rqst->rq_pagesz - rqst->rq_offset; }
> >
> 
> This subroutine does what patch 5 does inline. Why not push this patch up in
> the sequence and use the helper?

This is actually a little different. This function returns the length and offset for a given page in the request. There might be multiple pages in a request. 

The other function calculates the total length of all the pages in a request.

> 
> Tom.

  reply	other threads:[~2018-06-25 21:14 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-30 19:47 [Patch v2 00/15] CIFS: Add direct I/O support Long Li
2018-05-30 19:47 ` [Patch v2 01/15] CIFS: Introduce offset for the 1st page in data transfer structures Long Li
2018-05-30 19:47 ` [Patch v2 02/15] CIFS: Add support for direct pages in rdata Long Li
2018-05-30 20:27   ` Ruhl, Michael J
2018-05-30 20:57     ` Long Li
2018-06-24  1:50   ` Tom Talpey
2018-06-25 20:25     ` Long Li
2018-06-25 21:01     ` Jason Gunthorpe
2018-06-26 15:13       ` Tom Talpey
2018-06-27  3:21         ` Long Li
2018-05-30 19:47 ` [Patch v2 03/15] CIFS: Use offset when reading pages Long Li
2018-06-24  1:58   ` Tom Talpey
2018-06-25 20:27     ` Long Li
2018-05-30 19:47 ` [Patch v2 04/15] CIFS: Add support for direct pages in wdata Long Li
2018-06-24  2:01   ` Tom Talpey
2018-06-25 20:34     ` Long Li
2018-05-30 19:47 ` [Patch v2 05/15] CIFS: Calculate the correct request length based on page offset and tail size Long Li
2018-06-24  2:07   ` Tom Talpey
2018-06-25 21:07     ` Long Li
2018-05-30 19:47 ` [Patch v2 06/15] CIFS: Introduce helper function to get page offset and length in smb_rqst Long Li
2018-06-24  2:09   ` Tom Talpey
2018-06-25 21:14     ` Long Li [this message]
2018-06-26 13:16       ` Tom Talpey
2018-06-27  3:24         ` Long Li
2018-05-30 19:47 ` [Patch v2 07/15] CIFS: When sending data on socket, pass the correct page offset Long Li
2018-05-30 19:48 ` [Patch v2 08/15] CIFS: SMBD: Support page offset in RDMA send Long Li
2018-06-24  2:11   ` Tom Talpey
2018-06-25 21:23     ` Long Li
2018-05-30 19:48 ` [Patch v2 09/15] CIFS: SMBD: Support page offset in RDMA recv Long Li
2018-06-24  2:16   ` Tom Talpey
2018-06-25 21:29     ` Long Li
2018-05-30 19:48 ` [Patch v2 10/15] CIFS: SMBD: Support page offset in memory registration Long Li
2018-06-24  2:24   ` Tom Talpey
2018-05-30 19:48 ` [Patch v2 11/15] CIFS: Pass page offset for calculating signature Long Li
2018-06-24  2:27   ` Tom Talpey
2018-06-26  4:15     ` Long Li
2018-05-30 19:48 ` [Patch v2 12/15] CIFS: Pass page offset for encrypting Long Li
2018-06-24  2:28   ` Tom Talpey
2018-05-30 19:48 ` [Patch v2 13/15] CIFS: Add support for direct I/O read Long Li
2018-06-02  5:51   ` kbuild test robot
2018-06-02  7:15   ` kbuild test robot
2018-06-24  2:39   ` Tom Talpey
2018-06-26  4:34     ` Long Li
2018-05-30 19:48 ` [Patch v2 14/15] CIFS: Add support for direct I/O write Long Li
2018-06-24  2:48   ` Tom Talpey
2018-06-26  4:39     ` Long Li
2018-06-26 13:29       ` Tom Talpey
2018-06-27  3:44         ` Long Li
2018-05-30 19:48 ` [Patch v2 15/15] CIFS: Add direct I/O functions to file_operations Long Li
2018-06-07 11:17   ` Pavel Shilovsky

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=CY4PR2101MB0722840106EDFEFBBA42D45FCE4A0@CY4PR2101MB0722.namprd21.prod.outlook.com \
    --to=longli@microsoft.com \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=samba-technical@lists.samba.org \
    --cc=sfrench@samba.org \
    --cc=tom@talpey.com \
    /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;
as well as URLs for NNTP newsgroup(s).