From: Neil Brown <neilb@suse.de>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
Mike Snitzer <snitzer@redhat.com>,
linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org,
linux-ide@vger.kernel.org,
device-mapper development <dm-devel@redhat.com>,
linux-scsi@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Alasdair G Kergon <agk@redhat.com>
Subject: Re: REQUEST for new 'topology' metrics to be moved out of the 'queue' sysfs directory.
Date: Sat, 27 Jun 2009 22:32:31 +1000 [thread overview]
Message-ID: <19014.4447.248248.63960@notabene.brown> (raw)
In-Reply-To: message from Jens Axboe on Friday June 26
On Friday June 26, jens.axboe@oracle.com wrote:
> On Fri, Jun 26 2009, NeilBrown wrote:
> > On Fri, June 26, 2009 10:50 pm, Jens Axboe wrote:
> > > On Fri, Jun 26 2009, Neil Brown wrote:
> > >> Every block device has a 'gendisk' (aka generic disk).
> > >> Every block device also (currently) has a request_queue.
> > >
> > > I don't know why you keep saying currently. It has always had a queue,
> > > and I don't see a good reason why that should change for "special" block
> > > devices like md/dm/loop/whatnot.
> >
> > I say "currently" because I'm planning to create patches to make it
> > optional, and I want to get you used to the idea :-)
> >
> > And md/dm/loop/whatnot are not "special" block devices, any more than
> > scsi/ide are "special" block devices. They are all just block devices.
> > They use different mechanisms, but each is just as valid as the other.
>
> That was why I put it in quotes, they are just regular devices.
Ahh... I missed your point. You were saying that they aren't special,
they are just like everything else and so should still have a queue.
Sorry for misunderstanding.
See below for my response.
>
> > The current code makes 'struct request' based block devices in to
> > first-class citizens, and all the rest are second class (having to
> > tag our data structures on ->queue data and/or ->private_data).
>
> ?? How is that different from devices, the ones you refer to as
> first-class citizens? They too store device private data in eg
> ->queue_data.
>
> > I just want all block devices to be equal.
>
> 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.
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).
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.
NeilBrown
next prev parent reply other threads:[~2009-06-27 12:32 UTC|newest]
Thread overview: 33+ 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 8:00 ` Martin K. Petersen
2009-06-25 11:07 ` [dm-devel] " NeilBrown
2009-06-25 11:36 ` John Robinson
2009-06-25 17:43 ` Martin K. Petersen
2009-06-25 12:17 ` berthiaume_wayne
2009-06-25 17:38 ` Martin K. Petersen
2009-06-25 17:46 ` Linus Torvalds
2009-06-25 19:34 ` Jens Axboe
2009-06-26 11:58 ` [dm-devel] " Neil Brown
2009-06-26 14:48 ` Martin K. Petersen
2009-07-07 1:47 ` [dm-devel] " Neil Brown
2009-07-07 5:29 ` Martin K. Petersen
2009-07-09 0:42 ` Neil Brown
2009-07-07 22:06 ` Bill Davidsen
2009-06-25 19:40 ` [dm-devel] " 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: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-26 13:23 ` [dm-devel] " NeilBrown
2009-06-26 13:29 ` Jens Axboe
2009-06-27 12:32 ` Neil Brown [this message]
2009-06-29 10:18 ` [dm-devel] " Jens Axboe
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=19014.4447.248248.63960@notabene.brown \
--to=neilb@suse.de \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=jens.axboe@oracle.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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).