From: Kent Overstreet <kent.overstreet@gmail.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Jens Axboe <axboe@fb.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-block@vger.kernel.org,
Christoph Hellwig <hch@infradead.org>,
Boaz Harrosh <boaz@plexistor.com>, Jan Kara <jack@suse.cz>,
Keith Busch <keith.busch@intel.com>, Tejun Heo <tj@kernel.org>,
Mike Snitzer <snitzer@redhat.com>
Subject: Re: [PATCH 01/27] block: bio: introduce 4 helpers for cleanup
Date: Tue, 5 Apr 2016 17:46:36 -0800 [thread overview]
Message-ID: <20160406014636.GB32713@kmo-pixel> (raw)
In-Reply-To: <CACVXFVN78cA3Lk4H6xgEVQCguqdn3HPpOAtsPHMqXpD9KDHCCQ@mail.gmail.com>
On Wed, Apr 06, 2016 at 09:34:34AM +0800, Ming Lei wrote:
> On Wed, Apr 6, 2016 at 8:18 AM, Kent Overstreet
> <kent.overstreet@gmail.com> wrote:
> > On Tue, Apr 05, 2016 at 07:56:46PM +0800, Ming Lei wrote:
> >> Some drivers access bio->bi_vcnt and bio->bi_io_vec directly,
> >> firstly it isn't a good practice, secondly it may cause trouble
> >> for converting to multipage bvecs.
> >
> > "not good practice" is OO bullshit snake oil without more justification. We
> > don't plaster accessors everywhere without an actual reason.
> >
> > How would it cause trouble with multipage bvecs?
>
> Simply speaking, the current drivers may depend on .bi_vcnt for
> computing how many page there are in one bio. After multipage bvecs,
> it is not true any more. Isn't it a actual reason?
But it's completely valid to use bi_vcnt for segments, which is what it's always
_really_ meant anyways.
Sometimes you have cases where the meaning of a member changes significantly
enough that you really don't want code using it accidentally anymore - like with
Jens' patches that changed how bi_remaining and bi_cnt work, but after those
patches it really wasn't correct to use those members directly anymore so he
renamed them to prevent that.
I don't buy that that's the case for multipage bvecs - the meaning of bi_vcnt
itself isn't changing (it's just the number of entries in the array!) and it'll
still be possible for code to correctly use it directly.
Same with bio->bi_io_vec, it's still an array of biovecs, that's not changing.
Your helpers are at the wrong level of abstraction.
Also, there isn't a huge number of bi_vcnt references in the kernel anyways -
the immutable biovec work required removing most of them.
Instead of adding these low level accessors, it'd be better to convert code to
higher level helpers (especially bio_add_page()) where applicable.
next prev parent reply other threads:[~2016-04-06 1:46 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-05 11:56 [PATCH 00/27] block: cleanup direct access on .bi_vcnt & .bi_io_vec Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` [Drbd-dev] " Ming Lei
2016-04-05 11:56 ` [lustre-devel] " Ming Lei
2016-04-05 11:56 ` [PATCH 01/27] block: bio: introduce 4 helpers for cleanup Ming Lei
2016-04-06 0:18 ` Kent Overstreet
2016-04-06 1:34 ` Ming Lei
2016-04-06 1:46 ` Kent Overstreet [this message]
2016-04-06 2:11 ` Ming Lei
2016-04-06 2:21 ` Kent Overstreet
2016-04-06 4:11 ` Ming Lei
2016-04-05 11:56 ` [Drbd-dev] [PATCH 02/27] block: drbd: use bio_get_base_vec() to retrieve the 1st bvec Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` [Drbd-dev] [PATCH 03/27] block: drbd: remove impossible failure handling Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 12:42 ` [Drbd-dev] " Lars Ellenberg
2016-04-05 12:42 ` Lars Ellenberg
2016-04-05 11:56 ` [PATCH 04/27] block: loop: use bio_get_base_vec() to retrive bvec table Ming Lei
2016-04-05 11:56 ` [PATCH 05/27] block: pktcdvd: " Ming Lei
2016-04-05 11:56 ` [PATCH 06/27] block: floppy: use bio_set_vec_table() Ming Lei
2016-04-05 13:00 ` Christoph Hellwig
2016-04-05 11:56 ` [PATCH 07/27] block: floppy: use bio_add_page() Ming Lei
2016-04-05 11:56 ` [lustre-devel] [PATCH 08/27] staging: lustre: avoid to use bio->bi_vcnt directly Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 12:59 ` [lustre-devel] " Greg Kroah-Hartman
2016-04-05 12:59 ` Greg Kroah-Hartman
2016-04-05 13:01 ` [lustre-devel] " Christoph Hellwig
2016-04-05 13:01 ` Christoph Hellwig
2016-04-10 14:37 ` [lustre-devel] " James Simmons
2016-04-10 14:37 ` James Simmons
2016-04-10 14:41 ` [lustre-devel] " Christoph Hellwig
2016-04-10 14:41 ` Christoph Hellwig
2016-04-10 16:02 ` [lustre-devel] " James Simmons
2016-04-10 16:02 ` James Simmons
2016-04-11 3:30 ` [lustre-devel] " Ming Lei
2016-04-11 3:30 ` Ming Lei
2016-04-05 11:56 ` [PATCH 09/27] target: use bio_is_full() Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 13:02 ` Christoph Hellwig
2016-04-07 4:07 ` Ming Lei
2016-04-05 11:56 ` [PATCH 10/27] bcache: debug: avoid to access .bi_io_vec directly Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` [PATCH 11/27] bcache: io.c: use bio_set_vec_table Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 12:49 ` Christoph Hellwig
2016-04-05 15:24 ` Ming Lei
2016-04-05 17:31 ` Christoph Hellwig
2016-04-06 0:35 ` Kent Overstreet
2016-04-05 11:56 ` [PATCH 12/27] bcache: journal.c: use bio_set_vec_table() Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` [PATCH 13/27] bcache: movinggc: " Ming Lei
2016-04-05 11:56 ` Ming Lei
2016-04-05 11:56 ` [PATCH 14/27] bcache: writeback: " Ming Lei
2016-04-05 11:56 ` Ming Lei
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=20160406014636.GB32713@kmo-pixel \
--to=kent.overstreet@gmail.com \
--cc=axboe@fb.com \
--cc=boaz@plexistor.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=keith.busch@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=snitzer@redhat.com \
--cc=tj@kernel.org \
--cc=tom.leiming@gmail.com \
/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.