All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liu Bo <bo.li.liu@oracle.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Christoph Hellwig <hch@lst.de>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 1/9] btrfs: use bio iterators for the decompression handlers
Date: Tue, 22 Nov 2016 12:32:48 -0800	[thread overview]
Message-ID: <20161122203247.GB23828@localhost.localdomain> (raw)
In-Reply-To: <20161122093846.GA15142@infradead.org>

On Tue, Nov 22, 2016 at 01:38:46AM -0800, Christoph Hellwig wrote:
> On Fri, Nov 18, 2016 at 05:29:06PM -0800, Liu Bo wrote:
> > On Wed, Nov 16, 2016 at 01:52:08PM +0100, Christoph Hellwig wrote:
> > > Pass the full bio to the decompression routines and use bio iterators
> > > to iterate over the data in the bio.
> > 
> > One question below,
> 
> It would be nice to cut down the email to actually find your question
> without running through hundreds+ quoted lines.

Sure :)

> 
> > >  	/* copy bytes from the working buffer into the pages */
> > >  	while (working_bytes > 0) {
> > > -		bytes = min(PAGE_SIZE - *pg_offset,
> > > -			    PAGE_SIZE - buf_offset);
> > > +		bytes = min_t(unsigned long, bvec.bv_len,
> > > +				PAGE_SIZE - buf_offset);
> > >  		bytes = min(bytes, working_bytes);
> > > -		kaddr = kmap_atomic(page_out);
> > > -		memcpy(kaddr + *pg_offset, buf + buf_offset, bytes);
> > > +
> > > +		kaddr = kmap_atomic(bvec.bv_page);
> > > +		memcpy(kaddr + bvec.bv_offset, buf + buf_offset, bytes);
> > 
> > This doesn't seem to be right, 'bvec.bv_offset' is not updated in the
> > following bio_advance(bio, bytes),
> 
> Good spot - and this means xfstests doesn't cover this area very
> well :(

The decompress part starts after checking checksum stored in btrfs, I'm
wondering if fio --verify could detect it.

> 
> > shouldn't it be 
> > 'kaddr + bvec.bv_offset + bio->bi_iter.bi_bvec_done'?
> 
> No, we just need to get a new bvec using bio_iter_iovec after
> the call to bio_advance.

I see, that's great.

Thanks,

-liubo

  reply	other threads:[~2016-11-22 20:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-16 12:52 don't poke into bio internals Christoph Hellwig
2016-11-16 12:52 ` [PATCH 1/9] btrfs: use bio iterators for the decompression handlers Christoph Hellwig
2016-11-19  1:29   ` Liu Bo
2016-11-22  9:38     ` Christoph Hellwig
2016-11-22 20:32       ` Liu Bo [this message]
2016-11-16 12:52 ` [PATCH 2/9] btrfs: don't access the bio directly in the raid5/6 code Christoph Hellwig
2016-11-18 19:05   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 3/9] " Christoph Hellwig
2016-11-18 19:34   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 4/9] btrfs: don't access the bio directly in btrfs_csum_one_bio Christoph Hellwig
2016-11-18 19:39   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 5/9] btrfs: use bi_size Christoph Hellwig
2016-11-18 19:48   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 6/9] btrfs: calculate end of bio offset properly Christoph Hellwig
2016-11-18 20:04   ` Omar Sandoval
2016-11-22  9:42     ` Christoph Hellwig
2016-11-22 18:58       ` Omar Sandoval
2016-11-23  4:21         ` Anand Jain
2016-11-23  4:21           ` Omar Sandoval
2016-11-23  4:32             ` Anand Jain
2016-11-23  4:47               ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 7/9] btrfs: refactor __btrfs_lookup_bio_sums to use bio_for_each_segment_all Christoph Hellwig
2016-11-18 20:31   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 8/9] btrfs: use bio_for_each_segment_all in __btrfsic_submit_bio Christoph Hellwig
2016-11-18 20:36   ` Omar Sandoval
2016-11-16 12:52 ` [PATCH 9/9] btrfs: only check bio size to see if a repair bio should have the failfast flag Christoph Hellwig
2016-11-16 16:19 ` don't poke into bio internals David Sterba

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=20161122203247.GB23828@localhost.localdomain \
    --to=bo.li.liu@oracle.com \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=linux-btrfs@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.