From: Tejun Heo <tj@kernel.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: axboe@kernel.dk, linux-kernel@vger.kernel.org, petero2@telia.com,
schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, jack@suse.cz,
akpm@linux-foundation.org, adilger.kernel@dilger.ca,
tytso@mit.edu, mfasheh@suse.com, joel.becker@oracle.com,
aelder@sgi.com, dm-devel@redhat.com, drbd-dev@lists.linbit.com,
neilb@suse.de, leochen@broadcom.com, sbranden@broadcom.com,
chris.mason@oracle.com, swhiteho@redhat.com,
shaggy@linux.vnet.ibm.com, joern@logfs.org,
konishi.ryusuke@lab.ntt.co.jp, reiserfs-devel@vger.kernel.org,
viro@zeniv.linux.org.uk
Subject: Re: [PATCH 4/5] block: make blkdev_get/put() handle exclusive access
Date: Tue, 09 Nov 2010 11:34:06 +0100 [thread overview]
Message-ID: <4CD9239E.2080209@kernel.org> (raw)
In-Reply-To: <20101103161059.GA13621@infradead.org>
Hello,
On 11/03/2010 05:10 PM, Christoph Hellwig wrote:
> On Mon, Nov 01, 2010 at 05:15:28PM +0100, Tejun Heo wrote:
>> * blkdev_get() is extended to include exclusive access management.
>> @holder argument is added and, if is @FMODE_EXCL specified, it will
>> gain exclusive access atomically w.r.t. other exclusive accesses.
>>
>> * blkdev_put() is similarly extended. It now takes @mode argument and
>> if @FMODE_EXCL is set, it releases an exclusive access. Also, when
>> the last exclusive claim is released, the holder/slave symlinks are
>> removed automatically.
>
> Could we get rid of FMODE_EXCL and just make a non-NULL holder field
> mean to open it exlusively (and pass a holder to the blkdev_put to
> release it)?
Yeah, I agree it's a bit awkward. I'd really like to force one way or
the other tho. ie. if non-NULL holder is gonna be required, I'll add
WARN_ON_ONCE(mode & FMODE_EXCL). There are several issues to
consider.
* As Jan suggested, @mode in blkdev_put() isn't too useful. I decided
to keep it and use FMODE_EXCL for exclusive releases as that it is
at least useful for something. If we're gonna add @holder to
blkdev_put(), it would make more sense to drop @mode. It's not like
there's a way to enforce restrictions according to open @mode during
device access if there are mixed r/w opens.
* Some users don't keep @holder easily accessible until blkdev_put()
is called, so the conversion will take a bit more effort. No big
deal in itself.
* What if @holder on blkdev_put() mismatches the current holder?
Probably WARN_ON_ONCE() is the only recourse. At that point, it's a
bit silly to have to keep @holder around till blkdev_put(). Holders
and opners counting already provide meaningful warning mechanism
against spurious or missing exclusive releases. Maybe we can have
blkdev_put() and blkdev_put_exclusive()? Or make it take boolean
@excl?
So, after the above points, I decided to keep @mode. It is a bit
awkward but the other way didn't seem too hip either. Any better
ideas?
>> * bd_link_disk_holder() remains the same but bd_unlink_disk_holder()
>> is no longer necessary and removed.
>
> That's a rather asymetric interface. What about having
> blkdev_get_stacked that require a gendisk as holder and set up the
> links underneath?
That will make the number of functions multiplied by two -
blkdev_get_by_path_stacked() and blkdev_get_by_dev_stacked(). The
symlinking for stacked drivers is an oddball feature which is and will
be only used by md and dm. So, I think it's better to keep it
separate and oddball.
>> open_bdev_exclusive() and open_by_devnum() can use further cleanup -
>> rename to blkdev_get_by_path() and blkdev_get_by_devt() and drop
>> special features. Well, let's leave them for another day.
>
> s/blkdev_get_by_devt/blkdev_get_by_dev/
>
> And yes, that rename is a good idea and should go in ASAP after this
> patch.
Alright, will do it.
Thanks.
--
tejun
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: jack@suse.cz, leochen@broadcom.com, neilb@suse.de,
heiko.carstens@de.ibm.com, dm-devel@redhat.com,
adilger.kernel@dilger.ca, konishi.ryusuke@lab.ntt.co.jp,
shaggy@linux.vnet.ibm.com, drbd-dev@lists.linbit.com,
joel.becker@oracle.com, aelder@sgi.com, mfasheh@suse.com,
joern@logfs.org, reiserfs-devel@vger.kernel.org,
viro@zeniv.linux.org.uk, swhiteho@redhat.com,
chris.mason@oracle.com, axboe@kernel.dk, tytso@mit.edu,
sbranden@broadcom.com, petero2@telia.com,
linux-kernel@vger.kernel.org, schwidefsky@de.ibm.com,
akpm@linux-foundation.org
Subject: Re: [Drbd-dev] [PATCH 4/5] block: make blkdev_get/put() handle exclusive access
Date: Tue, 09 Nov 2010 11:34:06 +0100 [thread overview]
Message-ID: <4CD9239E.2080209@kernel.org> (raw)
In-Reply-To: <20101103161059.GA13621@infradead.org>
Hello,
On 11/03/2010 05:10 PM, Christoph Hellwig wrote:
> On Mon, Nov 01, 2010 at 05:15:28PM +0100, Tejun Heo wrote:
>> * blkdev_get() is extended to include exclusive access management.
>> @holder argument is added and, if is @FMODE_EXCL specified, it will
>> gain exclusive access atomically w.r.t. other exclusive accesses.
>>
>> * blkdev_put() is similarly extended. It now takes @mode argument and
>> if @FMODE_EXCL is set, it releases an exclusive access. Also, when
>> the last exclusive claim is released, the holder/slave symlinks are
>> removed automatically.
>
> Could we get rid of FMODE_EXCL and just make a non-NULL holder field
> mean to open it exlusively (and pass a holder to the blkdev_put to
> release it)?
Yeah, I agree it's a bit awkward. I'd really like to force one way or
the other tho. ie. if non-NULL holder is gonna be required, I'll add
WARN_ON_ONCE(mode & FMODE_EXCL). There are several issues to
consider.
* As Jan suggested, @mode in blkdev_put() isn't too useful. I decided
to keep it and use FMODE_EXCL for exclusive releases as that it is
at least useful for something. If we're gonna add @holder to
blkdev_put(), it would make more sense to drop @mode. It's not like
there's a way to enforce restrictions according to open @mode during
device access if there are mixed r/w opens.
* Some users don't keep @holder easily accessible until blkdev_put()
is called, so the conversion will take a bit more effort. No big
deal in itself.
* What if @holder on blkdev_put() mismatches the current holder?
Probably WARN_ON_ONCE() is the only recourse. At that point, it's a
bit silly to have to keep @holder around till blkdev_put(). Holders
and opners counting already provide meaningful warning mechanism
against spurious or missing exclusive releases. Maybe we can have
blkdev_put() and blkdev_put_exclusive()? Or make it take boolean
@excl?
So, after the above points, I decided to keep @mode. It is a bit
awkward but the other way didn't seem too hip either. Any better
ideas?
>> * bd_link_disk_holder() remains the same but bd_unlink_disk_holder()
>> is no longer necessary and removed.
>
> That's a rather asymetric interface. What about having
> blkdev_get_stacked that require a gendisk as holder and set up the
> links underneath?
That will make the number of functions multiplied by two -
blkdev_get_by_path_stacked() and blkdev_get_by_dev_stacked(). The
symlinking for stacked drivers is an oddball feature which is and will
be only used by md and dm. So, I think it's better to keep it
separate and oddball.
>> open_bdev_exclusive() and open_by_devnum() can use further cleanup -
>> rename to blkdev_get_by_path() and blkdev_get_by_devt() and drop
>> special features. Well, let's leave them for another day.
>
> s/blkdev_get_by_devt/blkdev_get_by_dev/
>
> And yes, that rename is a good idea and should go in ASAP after this
> patch.
Alright, will do it.
Thanks.
--
tejun
next prev parent reply other threads:[~2010-11-09 10:34 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-01 16:15 [PATCHSET] block: clean up bdev claim/release handling Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] " Tejun Heo
2010-11-01 16:15 ` [PATCH 1/5] mtd: fix bdev exclusive open bugs in block2mtd::add_device() Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] " Tejun Heo
2010-11-13 10:38 ` Artem Bityutskiy
2010-11-13 10:38 ` Artem Bityutskiy
2010-11-13 10:38 ` Artem Bityutskiy
2010-11-13 10:42 ` Tejun Heo
2010-11-13 10:42 ` [Drbd-dev] " Tejun Heo
2010-11-13 10:42 ` Tejun Heo
2010-11-13 11:10 ` Artem Bityutskiy
2010-11-13 11:10 ` Artem Bityutskiy
2010-11-13 11:10 ` Artem Bityutskiy
2010-11-13 10:59 ` [PATCH UPDATED " Tejun Heo
2010-11-13 10:59 ` [Drbd-dev] " Tejun Heo
2010-11-13 10:59 ` Tejun Heo
2010-11-13 11:14 ` Artem Bityutskiy
2010-11-13 11:14 ` Artem Bityutskiy
2010-11-13 11:14 ` Artem Bityutskiy
2010-11-13 11:18 ` Tejun Heo
2010-11-13 11:18 ` [Drbd-dev] " Tejun Heo
2010-11-13 11:18 ` Tejun Heo
2010-11-01 16:15 ` [PATCH " Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] [PATCH 2/5] btrfs: close_bdev_exclusive() should use the same @flags as the matching open_bdev_exclusive() Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [PATCH 3/5] block: simplify holder symlink handling Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] " Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-04 15:06 ` Mike Snitzer
2010-11-04 15:06 ` Mike Snitzer
2010-11-04 15:06 ` [Drbd-dev] " Mike Snitzer
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [PATCH 4/5] block: make blkdev_get/put() handle exclusive access Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] " Tejun Heo
2010-11-03 15:06 ` Jan Kara
2010-11-03 15:06 ` [Drbd-dev] " Jan Kara
2010-11-09 10:18 ` Tejun Heo
2010-11-09 10:18 ` [Drbd-dev] " Tejun Heo
2010-11-03 16:10 ` Christoph Hellwig
2010-11-03 16:10 ` [Drbd-dev] " Christoph Hellwig
2010-11-04 15:04 ` Mike Snitzer
2010-11-04 15:04 ` Mike Snitzer
2010-11-04 15:04 ` [Drbd-dev] " Mike Snitzer
2010-11-09 10:34 ` Tejun Heo [this message]
2010-11-09 10:34 ` Tejun Heo
2010-11-09 10:36 ` Christoph Hellwig
2010-11-09 10:36 ` [Drbd-dev] " Christoph Hellwig
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [PATCH 5/5] block: reorganize claim/release implementation Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 16:15 ` [Drbd-dev] " Tejun Heo
2010-11-01 16:15 ` Tejun Heo
2010-11-01 19:49 ` [PATCHSET] block: clean up bdev claim/release handling Neil Brown
2010-11-01 19:49 ` [Drbd-dev] " Neil Brown
2010-11-03 15:53 ` Philipp Reisner
2010-11-03 15:53 ` Philipp Reisner
2010-11-11 17:10 ` [PATCH 6/5] block: check bdev_read_only() from blkdev_get() Tejun Heo
2010-11-11 17:10 ` Tejun Heo
2010-11-11 17:10 ` [Drbd-dev] " Tejun Heo
2010-11-11 17:10 ` Tejun Heo
2010-11-11 17:11 ` [PATCH 7/5] block: clean up blkdev_get() wrappers and their users Tejun Heo
2010-11-11 17:11 ` Tejun Heo
2010-11-11 17:11 ` [Drbd-dev] " Tejun Heo
2010-11-11 19:19 ` Steven Whitehouse
2010-11-11 17:11 ` Tejun Heo
2010-11-11 17:14 ` [PATCHSET] block: clean up bdev claim/release handling Tejun Heo
2010-11-11 17:14 ` Tejun Heo
2010-11-11 17:14 ` [Drbd-dev] " Tejun Heo
2010-11-27 16:01 ` Tejun Heo
2010-11-27 16:01 ` Tejun Heo
2010-11-27 16:01 ` [Drbd-dev] " Tejun Heo
2010-11-27 18:47 ` Jens Axboe
2010-11-27 18:47 ` [Drbd-dev] " Jens Axboe
2010-11-27 16:01 ` Tejun Heo
2010-11-11 17:14 ` Tejun Heo
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=4CD9239E.2080209@kernel.org \
--to=tj@kernel.org \
--cc=adilger.kernel@dilger.ca \
--cc=aelder@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=chris.mason@oracle.com \
--cc=dm-devel@redhat.com \
--cc=drbd-dev@lists.linbit.com \
--cc=hch@infradead.org \
--cc=heiko.carstens@de.ibm.com \
--cc=jack@suse.cz \
--cc=joel.becker@oracle.com \
--cc=joern@logfs.org \
--cc=konishi.ryusuke@lab.ntt.co.jp \
--cc=leochen@broadcom.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mfasheh@suse.com \
--cc=neilb@suse.de \
--cc=petero2@telia.com \
--cc=reiserfs-devel@vger.kernel.org \
--cc=sbranden@broadcom.com \
--cc=schwidefsky@de.ibm.com \
--cc=shaggy@linux.vnet.ibm.com \
--cc=swhiteho@redhat.com \
--cc=tytso@mit.edu \
--cc=viro@zeniv.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.