Re: [Lsf-pc] [LSF/MM ATTEND] block: multipage bvecs

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

 



Hi,

On Mon, Mar 21, 2016 at 11:55 PM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> On Mon, Mar 07, 2016 at 04:44:49PM +0800, Ming Lei wrote:
>> Just create one branch for multipage bvecs:
>>
>> http://kernel.ubuntu.com/git/ming/linux.git/log/?h=v4.5-rc-multipage-bvecs-early
>

BTW, two bugs are fixed in the folllowing branch:

http://kernel.ubuntu.com/git/ming/linux.git/log/?h=v4.5-rc-block-multipage-bvecs-early.1-ext4-scsi

then ext4 over virtio-blk/virtio-scsi works with multipage bvecs now.

> Can you send out a few of the prep patches ASAP?  E.g. the
> BIO_MAX_SECTORS and BIO_MAX_SIZE removal.

OK.

>
> I really don't like the _mp / _sp naming for the iteratators,
> I think they should have a _page and _segment in the name instead,

Currently I don't want to introduce extra changes, that is why I use
_mp / _sp naming, for example, bio_for_each_segment() actually
returns 'page'. So if we introduce _page & _segment, all the current
callers have to be changed. Maybe we can delay that into late stage.

> and preferably done in a way that breaks compilation for old code,
> e.g. never reuse the old names.
>
> I also think it would be really useful to convert bio bounce and raid1
> (and generally everything bio based) to deal with multi-page biovecs
> instead of making it opt-in.

For bio bounce, it isn't doable to deal with multipage because
allocating multi-pages for bouncing often fails.

>
>
>> 1) converting bio_for_each_segment() to *_rd() and *_wt()
>>
>> - this change should be a mechanical thing
>
> I don't think the short prefix naming is very useful.  I'd also
> like to understand where the need for thee comes from, as this
> didn't appear in Kent's patches.  Better documentation of them
> would be very useful.

I still hate the short prefix naming, but:

bio_for_each_segment() returns pointer to bvec in the .bi_io_vec directly,
which looks ugly, :-(

Most of users just read the bvec by this way, but some old users still need
to change the bvec. So for users who want to change the bvec, the
standard bio iterator helpers can't work becasue the bvec is always
copied to local variable. That is why I introduce the prefix naming.

But this change is just a mechanical conversion. With a new iterator
variable, it can be very flexible.

>
>>
>> 2) cleanup on direct access to .bi_io_vec and .bi_vcnt from btrfs,
>> dm, bcache, ...
>>
>> - this kind of work may take some time to do
>> - most of them are in btrfs
>
> Removing access to these from outside the core block code would be
> a very useful patchset on it's own, so I' dsuggest to finish that
> before continuing on the rest of the series.

Yeah, most of change should be in btrfs, and need to finish first.
Other block driver's change(raid, ...) can be handled by QUEUE_FLAG_NO_MP first.

Thanks,
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux