All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gu Zheng <guz.fnst@cn.fujitsu.com>
To: Jeff Moyer <jmoyer@redhat.com>
Cc: <bcrl@kvack.org>, <axboe@kernel.dk>, <akpm@linux-foundation.org>,
	<linux-aio@kvack.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/4] aio: use iovec array rather than the single one
Date: Wed, 23 Jul 2014 12:05:26 +0800	[thread overview]
Message-ID: <53CF3486.7030902@cn.fujitsu.com> (raw)
In-Reply-To: <x494my94dyj.fsf@segfault.boston.devel.redhat.com>

Hi Jeff,
On 07/22/2014 11:20 PM, Jeff Moyer wrote:

> Gu Zheng <guz.fnst@cn.fujitsu.com> writes:
> 
>> use an iovec array rather than the single one, so that we can avoid
>> to alloc more iovecs buffer in small(< 8) PREADV/PWRITEV cases.
> 
> I did some basic functional testing of this change and the change in
> patch 1/4.  That testing included using aio-stress to drive queue depths
> of 7, 8 and 9, and verify that it didn't fall over.  I also ran xfstests
> './check -g aio', and libaio's 'make partcheck'.

> 
> The change looks good to me, and passed testing, so:
> 
> Reviewed-by: Jeff Moyer <jmoyer@redhat.com>

Thanks for your review and test.

> 
> However, I still would like some comment on the reasoning behind it, and
> whether there is some measurable performance advantage for some
> workload.  Additionally, it would be nice if that comment made its way
> into the commit message.

I'll add more useful info, and send it out later.

Thanks,
Gu

> 
> Cheers,
> Jeff
> 
>>
>> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
>> ---
>>  fs/aio.c |   10 +++++-----
>>  1 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/fs/aio.c b/fs/aio.c
>> index 0cd0479..ef21efe 100644
>> --- a/fs/aio.c
>> +++ b/fs/aio.c
>> @@ -1260,12 +1260,12 @@ static ssize_t aio_setup_vectored_rw(struct kiocb *kiocb,
>>  	if (compat)
>>  		ret = compat_rw_copy_check_uvector(rw,
>>  				(struct compat_iovec __user *)buf,
>> -				*nr_segs, 1, *iovec, iovec);
>> +				*nr_segs, UIO_FASTIOV, *iovec, iovec);
>>  	else
>>  #endif
>>  		ret = rw_copy_check_uvector(rw,
>>  				(struct iovec __user *)buf,
>> -				*nr_segs, 1, *iovec, iovec);
>> +				*nr_segs, UIO_FASTIOV, *iovec, iovec);
>>  	if (ret < 0)
>>  		return ret;
>>  
>> @@ -1302,7 +1302,7 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
>>  	fmode_t mode;
>>  	aio_rw_op *rw_op;
>>  	rw_iter_op *iter_op;
>> -	struct iovec inline_vec, *iovec = &inline_vec;
>> +	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
>>  	struct iov_iter iter;
>>  
>>  	switch (opcode) {
>> @@ -1337,7 +1337,7 @@ rw_common:
>>  		if (!ret)
>>  			ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);
>>  		if (ret < 0) {
>> -			if (iovec != &inline_vec)
>> +			if (iovec != inline_vecs)
>>  				kfree(iovec);
>>  			return ret;
>>  		}
>> @@ -1384,7 +1384,7 @@ rw_common:
>>  		return -EINVAL;
>>  	}
>>  
>> -	if (iovec != &inline_vec)
>> +	if (iovec != inline_vecs)
>>  		kfree(iovec);
>>  
>>  	if (ret != -EIOCBQUEUED) {
> .
> 



      reply	other threads:[~2014-07-23  4:17 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1405996804-8262-1-git-send-email-guz.fnst@cn.fujitsu.com>
2014-07-22 13:53 ` [PATCH 1/4] aio: remove the needless registration of ring file's private_data Jeff Moyer
     [not found] ` <1405996804-8262-2-git-send-email-guz.fnst@cn.fujitsu.com>
2014-07-22 13:54   ` [PATCH 2/4] aio: use the macro rather than the inline magic number Jeff Moyer
2014-07-25  3:13     ` Ming Lei
2014-07-25  5:54       ` Gu Zheng
2014-07-22 14:11   ` Benjamin LaHaise
     [not found] ` <1405996804-8262-3-git-send-email-guz.fnst@cn.fujitsu.com>
2014-07-22 13:54   ` [PATCH 3/4] aio: fix some comments Jeff Moyer
2014-07-22 14:12   ` Benjamin LaHaise
2014-07-23  3:58     ` Gu Zheng
     [not found] ` <1405996804-8262-4-git-send-email-guz.fnst@cn.fujitsu.com>
2014-07-22 13:48   ` [PATCH 4/4] aio: use iovec array rather than the single one Jeff Moyer
2014-07-22 15:20   ` Jeff Moyer
2014-07-23  4:05     ` Gu Zheng [this message]

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=53CF3486.7030902@cn.fujitsu.com \
    --to=guz.fnst@cn.fujitsu.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=bcrl@kvack.org \
    --cc=jmoyer@redhat.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-kernel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.