xfs
[Top] [All Lists]

Re: Re: [PATCH 0/8] Set bi_rw when alloc bio before call bio_add_page.

To: "konrad.wilk" <konrad.wilk@xxxxxxxxxx>
Subject: Re: Re: [PATCH 0/8] Set bi_rw when alloc bio before call bio_add_page.
From: majianpeng <majianpeng@xxxxxxxxx>
Date: Tue, 31 Jul 2012 08:42:57 +0800
Cc: axboe <axboe@xxxxxxxxx>, "chris.mason" <chris.mason@xxxxxxxxxxxx>, viro <viro@xxxxxxxxxxxxxxxxxx>, tytso <tytso@xxxxxxx>, "adilger.kernel" <adilger.kernel@xxxxxxxxx>, shaggy <shaggy@xxxxxxxxxx>, mfasheh <mfasheh@xxxxxxxx>, jlbec <jlbec@xxxxxxxxxxxx>, bpm <bpm@xxxxxxx>, elder <elder@xxxxxxxxxx>, linux-kernel <linux-kernel@xxxxxxxxxxxxxxx>, linux-btrfs <linux-btrfs@xxxxxxxxxxxxxxx>, linux-fsdevel <linux-fsdevel@xxxxxxxxxxxxxxx>, linux-ext4 <linux-ext4@xxxxxxxxxxxxxxx>, jfs-discussion <jfs-discussion@xxxxxxxxxxxxxxxxxxxxx>, ocfs2-devel <ocfs2-devel@xxxxxxxxxxxxxx>, xfs <xfs@xxxxxxxxxxx>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:references:x-priority:x-has-attach:x-mailer :mime-version:message-id:content-type:content-transfer-encoding; bh=E3E9EqH3ww+YqGomvBBNRjhR1zV+OgyjuwuhWnDE8dw=; b=sjs/WeM7wQgi0/ARjEO+fsEoavnuYmNB0w8Bowhq0fgBw7IHVXYHTVivr5iWjh+3F2 mVuG52PlnZyCL9AruDOM7U3cz0b6RhDxPlgKTQ2eQENJiSonW8xwoUtkWz/M4XRRp0t+ Q0ZKDMhY9SZfPMDaDeIyB9NCeFZ97O7gznMp7Jury5qBPCHcS+IMJeXnuuQB9pavzU02 VGZeLBgjEGBd7BQUWqMyY7gG/Q1gLcqQVyD2W/TJl3KuG36UDEBN5Yo2I3RgHDg07bxX paUzrOpauIMddC4irEXDF74pFie2OwqNZhuaCAd3P8DqlkJHbjFC1wB+Axr2k882faeV QPrg==
References: <201207301514247032532@xxxxxxxxx>, <20120730153935.GE4547@xxxxxxxxxxxxxxxxxxx>
On 2012-07-30 23:39 Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Wrote:
>On Mon, Jul 30, 2012 at 03:14:28PM +0800, majianpeng wrote:
>> When exec bio_alloc, the bi_rw is zero.But after calling bio_add_page,
>
>What about submit_bio? That sets the bi_rw as well?
>> it will use bi_rw.
>> Fox example, in functiion __bio_add_page,it will call merge_bvec_fn().
>
>function.
>> The merge_bvec_fn of raid456 will use the bi_rw to judge the merge.
>> >> if ((bvm->bi_rw & 1) == WRITE)
>> >> return biovec->bv_len; /* always allow writes to be mergeable */
>
>So what does that mean? Without this patch what happens?
>
Because bio_alloc, the bi_rw is zero default.But in __bio_add_page, it used 
bi_rw.
For example: if merge_bvce_fn used bi_rw, but the bi_rw is wrong(if bi_rw is 
not zero).
So the result may be error.
>> 
>> 
>> Jianpeng Ma (8):
>
>Can you collapse all of this in just one patch?
Sorry, I think those files are not a subsystem.So i should send separately.
>
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling
>
>It is 'evaluate'
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>>   Evalue bio->bi_rw after calling bio_alloc() and before calling    
>>     bio_add_page().
>> 
>>  block/blk-lib.c                     |    1 +
>>  drivers/block/xen-blkback/blkback.c |    1 +
>
>I am not really sure if that is correct. Does 'submit_bio' not do the
>job properly?
Before call submit_bio, it call bio_add_page.
>
>>  fs/btrfs/check-integrity.c          |    1 +
>>  fs/direct-io.c                      |    1 +
>>  fs/ext4/page-io.c                   |    1 +
>>  fs/jfs/jfs_metapage.c               |    1 +
>>  fs/ocfs2/cluster/heartbeat.c        |    8 +++++---
>>  fs/xfs/xfs_aops.c                   |    2 ++
>>  fs/xfs/xfs_buf.c                    |    1 +
>>  9 files changed, 14 insertions(+), 3 deletions(-)
>> 
>> -- 
>> 1.7.9.5
<Prev in Thread] Current Thread [Next in Thread>