From: Jens Axboe <axboe@suse.de>
To: Anton Altaparmakov <aia21@cantab.net>
Cc: Martin Dalecki <dalecki@evision-ventures.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Neil Conway <nconway.list@ukaea.org.uk>,
Russell King <rmk@arm.linux.org.uk>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] 2.5.15 IDE 61
Date: Wed, 15 May 2002 08:16:54 +0200 [thread overview]
Message-ID: <20020515061654.GC11948@suse.de> (raw)
In-Reply-To: <E177dYp-00083c-00@the-village.bc.nu> <5.1.0.14.2.20020514202811.01fcc1d0@pop.cus.cam.ac.uk>
On Tue, May 14 2002, Anton Altaparmakov wrote:
> At 15:30 14/05/02, Martin Dalecki wrote:
> >Uz.ytkownik Alan Cox napisa?:
> >>I think you are way off base. If you have a single queue for both hda and
> >>hdb then requests will get dumped into that in a way that processing that
> >>queue implicitly does the ordering you require.
> >>From an abstract hardware point of view each ide controller is a queue not
> >>each device. Not following that is I think the cause of much of the
> >>existing
> >>pain and suffering.
> >
> >Yes thinking about it longer and longer I tend to the same conclusion,
> >that we just shouldn't have per device queue but per channel queues
> >instead.
> >The only problem here is the fact that some device properties
> >are attached to the queue right now. Like for example sector size and
> >friends.
> >
> >I didn't have a too deep look in to the generic blk layer. But I would
> >rather expect that since the lower layers are allowed to pass
> >an spin lock up to the queue intialization, sharing a spin lock
> >between two request queues should just serialize them with respect to
> >each other. And this is precisely what 63 does.
>
> Hi Martin,
>
> instead of having per channel queue, you could have per device queue, but
> use the same lock for both, i.e. don't make the lock part of "struct queue"
> (or whatever it is called) but instead make the address of the lock be
> attached to "struct queue".
See request_queue_t, the lock can already be shared. And in fact the ide
layer used a global ide_lock shared between all queues until just
recently.
> Further if a controller is truly broken and you need to synchronize
> multiple channels you could share the lock among those.
Again, this is not enough! The lock will only, at best, serialize direct
queue actions. So I can share a lock between queue A and B and only one
of them will start a request at any given time, but as soon as request X
is started for queue A, then we can happily start request Y for queue B.
This is what the hwgroup busy flag protects right now, only one queue is
allowed to mark the hwgroup busy naturally. So only when request X for
queue A completes will the hwgroup busy flag be cleared, and queue B can
start request Y.
--
Jens Axboe
next prev parent reply other threads:[~2002-05-15 6:18 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-14 9:49 [PATCH] 2.5.15 IDE 61 Neil Conway
2002-05-14 8:52 ` Martin Dalecki
2002-05-14 10:12 ` Neil Conway
2002-05-14 9:30 ` Martin Dalecki
2002-05-14 11:10 ` Neil Conway
2002-05-14 10:21 ` Martin Dalecki
2002-05-14 11:38 ` Russell King
2002-05-14 10:49 ` Martin Dalecki
2002-05-14 12:10 ` Alan Cox
2002-05-14 11:11 ` Martin Dalecki
2002-05-14 12:47 ` Alan Cox
2002-05-14 12:30 ` Martin Dalecki
2002-05-15 14:43 ` Pavel Machek
2002-05-14 12:00 ` Russell King
2002-05-14 11:03 ` Martin Dalecki
2002-05-14 13:03 ` Neil Conway
2002-05-14 13:27 ` Andre Hedrick
2002-05-14 14:45 ` Alan Cox
2002-05-14 14:30 ` Martin Dalecki
2002-05-14 16:20 ` Neil Conway
2002-05-14 16:32 ` Jens Axboe
2002-05-14 16:47 ` Neil Conway
2002-05-14 16:51 ` Jens Axboe
2002-05-15 11:37 ` Neil Conway
2002-05-14 22:51 ` Mike Fedyk
2002-05-14 16:26 ` Jens Axboe
2002-05-14 19:34 ` Anton Altaparmakov
2002-05-15 6:16 ` Jens Axboe [this message]
2002-05-15 8:32 ` Anton Altaparmakov
2002-05-15 9:42 ` Martin Dalecki
2002-05-15 9:32 ` Martin Dalecki
2002-05-15 11:44 ` Neil Conway
2002-05-15 11:02 ` Martin Dalecki
2002-05-15 13:10 ` Alan Cox
2002-05-15 13:34 ` Neil Conway
2002-05-15 13:04 ` Martin Dalecki
2002-05-15 14:08 ` benh
2002-05-15 16:40 ` Denis Vlasenko
2002-05-15 11:55 ` Neil Conway
2002-05-17 7:07 ` Mike Fedyk
2002-05-17 11:06 ` Neil Conway
2002-05-17 10:12 ` Martin Dalecki
2002-05-14 16:03 ` Neil Conway
2002-05-14 16:46 ` Alan Cox
2002-05-14 12:52 ` Daniela Engert
-- strict thread matches above, loose matches on Subject: below --
2002-05-06 3:53 Linux-2.5.14 Linus Torvalds
2002-05-13 9:48 ` [PATCH] 2.5.15 IDE 61 Martin Dalecki
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=20020515061654.GC11948@suse.de \
--to=axboe@suse.de \
--cc=aia21@cantab.net \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=dalecki@evision-ventures.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nconway.list@ukaea.org.uk \
--cc=rmk@arm.linux.org.uk \
/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.