[Ocfs2-devel] [PATCH 0/8] Set bi_rw when alloc bio before call bio_add_page.

majianpeng majianpeng at gmail.com
Mon Jul 30 17:41:54 PDT 2012


On 2012-07-30 23:39 Konrad Rzeszutek Wilk <konrad.wilk at oracle.com> 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


More information about the Ocfs2-devel mailing list