Re: [PATCH 1/9] btrfs: use bio iterators for the decompression handlers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

> >  	/* 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 :(

> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux