From: Eric Sandeen <sandeen@redhat.com>
To: Mike Snitzer <snitzer@gmail.com>
Cc: device-mapper development <dm-devel@redhat.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Srinivasa DS <srinivasa@in.ibm.com>
Subject: Re: [dm-devel] [PATCH 2.6.19 5/5] fs: freeze_bdev with semaphore not mutex
Date: Tue, 07 Nov 2006 14:22:58 -0600 [thread overview]
Message-ID: <4550EB22.9060805@redhat.com> (raw)
In-Reply-To: <170fa0d20611071218t3c145ef9i5413e432597d78a5@mail.gmail.com>
Mike Snitzer wrote:
> On 11/7/06, Alasdair G Kergon <agk@redhat.com> wrote:
>> From: Srinivasa Ds <srinivasa@in.ibm.com>
>>
>> On debugging I found out that,"dmsetup suspend <device name>" calls
>> "freeze_bdev()",which locks "bd_mount_mutex" to make sure that no new mounts
>> happen on bdev until thaw_bdev() is called. This "thaw_bdev()" is getting
>> called when we resume the device through "dmsetup resume <device-name>".
>> Hence we have 2 processes,one of which locks "bd_mount_mutex"(dmsetup
>> suspend) and another(dmsetup resume) unlocks it.
>
> Srinivasa's description of the patch just speaks to how freeze_bdev
> and thaw_bdev are used by DM but completely skips justification for
> switching from mutex to semaphore. Why is it beneficial and/or
> necessary to use a semaphore instead of a mutex here?
Because mutexes are not supposed to be released by anything other than
the thread that took them, as enforced by the various checking code and
noted in the docs...
"The stricter mutex API means you cannot use mutexes the same way you
can use semaphores: e.g. they cannot be used from an interrupt context,
nor can they be unlocked from a different context that which acquired
it."
this particular resource can sometimes be locked & unlocked from 2
different userspace threads.
-Eric
next prev parent reply other threads:[~2006-11-07 20:23 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-07 18:34 [PATCH 2.6.19 5/5] fs: freeze_bdev with semaphore not mutex Alasdair G Kergon
2006-11-07 20:18 ` [dm-devel] " Mike Snitzer
2006-11-07 20:22 ` Eric Sandeen [this message]
2006-11-07 23:34 ` Alasdair G Kergon
2006-11-07 20:28 ` Andrew Morton
2006-11-07 22:45 ` Eric Sandeen
2006-11-07 23:00 ` Andrew Morton
2006-11-08 9:54 ` Arjan van de Ven
2007-01-12 6:23 ` Srinivasa Ds
2007-01-12 10:16 ` Srinivasa Ds
2006-11-07 23:05 ` Rafael J. Wysocki
2006-11-07 23:18 ` Eric Sandeen
2006-11-07 23:42 ` Rafael J. Wysocki
2006-11-08 0:01 ` Alasdair G Kergon
2006-11-08 8:27 ` David Chinner
2006-11-08 14:25 ` Alasdair G Kergon
2006-11-08 14:43 ` Rafael J. Wysocki
2006-11-08 15:25 ` Alasdair G Kergon
2006-11-08 23:06 ` Rafael J. Wysocki
2006-11-07 23:49 ` Alasdair G Kergon
2006-11-08 0:00 ` Rafael J. Wysocki
2006-11-08 3:33 ` David Chinner
2006-11-08 2:30 ` Alasdair G Kergon
2006-11-08 12:10 ` Rafael J. Wysocki
2006-11-08 18:09 ` Pavel Machek
2006-11-09 15:52 ` Rafael J. Wysocki
2006-11-09 16:00 ` Pavel Machek
2006-11-09 19:59 ` Rafael J. Wysocki
2006-11-09 21:17 ` Pavel Machek
2006-11-09 21:18 ` Rafael J. Wysocki
2006-11-09 21:41 ` Pavel Machek
2006-11-09 22:21 ` Rafael J. Wysocki
2006-11-09 23:11 ` Pavel Machek
2006-11-09 23:24 ` Alasdair G Kergon
2006-11-09 23:32 ` Pavel Machek
2006-11-10 12:03 ` Rafael J. Wysocki
2006-11-12 18:43 ` Pavel Machek
2006-11-12 21:53 ` Rafael J. Wysocki
2006-11-12 23:30 ` David Chinner
2006-11-13 16:11 ` Rafael J. Wysocki
2006-11-15 18:50 ` Pavel Machek
2006-11-15 19:56 ` Rafael J. Wysocki
2006-11-15 20:00 ` Rafael J. Wysocki
2006-11-15 20:23 ` Pavel Machek
2006-11-15 21:58 ` Rafael J. Wysocki
2006-11-15 22:49 ` Pavel Machek
2006-11-16 23:20 ` David Chinner
2006-11-16 23:38 ` Pavel Machek
2006-11-13 7:35 ` Stefan Seyfried
2006-11-10 0:57 ` David Chinner
2006-11-10 10:39 ` Pavel Machek
2006-11-12 22:30 ` David Chinner
2006-11-12 22:43 ` Rafael J. Wysocki
2006-11-13 5:43 ` David Chinner
2006-11-13 16:22 ` Rafael J. Wysocki
2006-11-14 0:10 ` David Chinner
2006-11-16 23:23 ` David Chinner
2006-11-16 23:40 ` Pavel Machek
2006-11-17 1:40 ` David Chinner
2006-11-17 15:13 ` Pavel Machek
2006-11-10 0:54 ` David Chinner
2006-11-10 10:24 ` Alan Cox
2006-11-10 10:36 ` Pavel Machek
2006-11-10 0:33 ` David Chinner
2006-11-10 10:38 ` Pavel Machek
2006-11-08 20:48 ` Nigel Cunningham
2006-11-08 21:08 ` Rafael J. Wysocki
2006-11-07 23:23 ` Alasdair G Kergon
2006-11-07 23:39 ` Ingo Molnar
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=4550EB22.9060805@redhat.com \
--to=sandeen@redhat.com \
--cc=akpm@osdl.org \
--cc=dm-devel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=snitzer@gmail.com \
--cc=srinivasa@in.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox