From: Jens Axboe <jens.axboe@oracle.com>
To: Neil Brown <neilb@suse.de>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
Mike Snitzer <snitzer@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Alasdair G Kergon <agk@redhat.com>,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-raid@vger.kernel.org, linux-ide@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
device-mapper development <dm-devel@redhat.com>
Subject: Re: [dm-devel] REQUEST for new 'topology' metrics to be moved out of the 'queue' sysfs directory.
Date: Mon, 29 Jun 2009 12:18:41 +0200 [thread overview]
Message-ID: <20090629101841.GF23611@kernel.dk> (raw)
In-Reply-To: <19014.4447.248248.63960@notabene.brown>
On Sat, Jun 27 2009, Neil Brown wrote:
> > There's no such thing as first or second class block devices. The fact
> > that drivers using ->make_request_fn directly do not utilize the full
> > scope of the queue isn't a very interesting fact, imho.
>
> Your phrase "drivers using ->make_request_fn directly" seems to
> suggest you are looking at things very differently to me.
>
> From my perspective, all drivers use ->make_request_fn equally.
> Some set it to "__make_request", some to "md_make_request", others to
> "dm_request" or "loop_make_request" etc.
Neil, will you please stop these silly games. Stop trying to invent
differences based on interpretations of what you read into my replies.
> Each of these different drivers need some private storage.
> __make_request uses struct request_queue
> md_make_request uses struct mddev_s
> dm_request uses struct mapped_device
> loop_make_request uses struct loop_device
> etc
>
> These structures are all attached to gendisk one way or another.
>
> Of these examples, the first three have an extra level. They are
> intermediaries or "midlayers" for multiple drivers and perform some
> processing before passing the request down.
> __make_request provides this for ide and scsi (etc) via ->request_fn and
> ->queuedata in struct request_queue (and other fields).
> md_make_request provides this for raid1 and raid5 (etc) via
> ->pers->make_request and ->private is struct mddev_s (and other
> fields).
> dm_request provides this for crypt and multipath (etc) via
> ->map->targets[]->type->map and ->map->targets[]->private (and
> other fields).
Nothing - I repeat nothing - stops md/dm from removing that layer. It's
a layer they imposed themselves based on the design they chose to
implement internally. It has NOTHING to do with how the block layer is
designed. If md raid1 assigned raid1_dev (or whatever raid1 uses a its
device identifier structure) to ->queuedata, and had an mddev_s in its
raid1 structure, that would be a perfectly viable design as well.
Loop does that. md/dm have their own internal layering, if anything is a
"midlayer" (to keep to the apparent theme of design patterns), it's the
code md and dm bits.
> Looked at from this perspective, the fact that some drivers 'do not
> utilise the full scope of the queue' certainly isn't the interesting
> point. The interesting point is that they have to use parts of the
> queue at all.
>
> And from this perspective, __make_request is a class above everything
> else. __make_request gets a dedicate field in gendisk (->queue) and
> every driver has to provide a queue. Other (lower class) drivers get
> to share gendisk->private_date and/or gendisk->queue->queuedata.
That's just utter nonsense.
--
Jens Axboe
next prev parent reply other threads:[~2009-06-29 10:18 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-25 3:58 REQUEST for new 'topology' metrics to be moved out of the 'queue' sysfs directory Neil Brown
2009-06-25 3:58 ` Neil Brown
2009-06-25 8:00 ` Martin K. Petersen
2009-06-25 8:00 ` [dm-devel] " Martin K. Petersen
2009-06-25 11:07 ` NeilBrown
2009-06-25 11:07 ` NeilBrown
2009-06-25 11:07 ` NeilBrown
2009-06-25 11:36 ` John Robinson
2009-06-25 17:43 ` Martin K. Petersen
2009-06-25 17:43 ` [dm-devel] " Martin K. Petersen
2009-06-25 12:17 ` berthiaume_wayne
2009-06-25 12:17 ` berthiaume_wayne
2009-06-25 12:17 ` [dm-devel] " berthiaume_wayne
2009-06-25 17:38 ` Martin K. Petersen
2009-06-25 17:38 ` [dm-devel] " Martin K. Petersen
2009-06-25 17:46 ` Linus Torvalds
2009-06-25 17:46 ` [dm-devel] " Linus Torvalds
2009-06-25 19:34 ` Jens Axboe
2009-06-25 19:34 ` [dm-devel] " Jens Axboe
2009-06-26 11:58 ` Neil Brown
2009-06-26 14:48 ` Martin K. Petersen
2009-06-26 14:48 ` [dm-devel] " Martin K. Petersen
2009-07-07 1:47 ` Neil Brown
2009-07-07 5:29 ` Martin K. Petersen
2009-07-07 5:29 ` [dm-devel] " Martin K. Petersen
2009-07-09 0:42 ` Neil Brown
2009-07-09 0:42 ` [dm-devel] " Neil Brown
2009-07-07 22:06 ` Bill Davidsen
2009-07-07 22:06 ` [dm-devel] " Bill Davidsen
2009-06-25 19:40 ` Jens Axboe
2009-06-26 12:41 ` Neil Brown
2009-06-26 12:50 ` Jens Axboe
2009-06-26 13:16 ` NeilBrown
2009-06-26 13:16 ` NeilBrown
2009-06-26 13:27 ` Jens Axboe
2009-06-26 13:41 ` NeilBrown
2009-06-26 13:49 ` Jens Axboe
2009-06-27 12:50 ` Neil Brown
2009-06-27 12:50 ` [dm-devel] " Neil Brown
2009-06-26 13:23 ` NeilBrown
2009-06-26 13:23 ` NeilBrown
2009-06-26 13:29 ` Jens Axboe
2009-06-26 13:29 ` [dm-devel] " Jens Axboe
2009-06-27 12:32 ` Neil Brown
2009-06-27 12:32 ` [dm-devel] " Neil Brown
2009-06-29 10:18 ` Jens Axboe [this message]
2009-06-29 10:52 ` NeilBrown
2009-06-29 10:52 ` NeilBrown
2009-06-29 11:41 ` Jens Axboe
2009-06-29 12:45 ` Boaz Harrosh
2009-06-29 12:52 ` Jens Axboe
2009-06-29 23:09 ` Andreas Dilger
2009-07-01 0:29 ` Neil Brown
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=20090629101841.GF23611@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=neilb@suse.de \
--cc=snitzer@redhat.com \
--cc=torvalds@linux-foundation.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.