[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] Re: dm: bind new table before destroying old
- From: Alasdair G Kergon <agk redhat com>
- To: Mike Snitzer <snitzer redhat com>
- Cc: Kiyoshi Ueda <k-ueda ct jp nec com>, Heinz Mauelshagen <mauelshagen redhat com>, dm-devel redhat com, Mikulas Patocka <mpatocka redhat com>, Zdenek Kabelac <zkabelac redhat com>, Jun'ichi Nomura <j-nomura ce jp nec com>, Milan Broz <mbroz redhat com>
- Subject: [dm-devel] Re: dm: bind new table before destroying old
- Date: Thu, 19 Nov 2009 00:50:36 +0000
On Wed, Nov 11, 2009 at 06:45:55PM -0500, Mike Snitzer wrote:
> After further testing I've hit a lockdep trace. My testing was with
> handing over on the same device. I had the snapshot (of an ext3 FS)
> mounted and I was doing a sequential direct-io write to a file in the
> FS. While writing I triggered a handover with the following:
> =======================================================
> [ INFO: possible circular locking dependency detected ]
> 2.6.32-rc6-snitm #8
> -------------------------------------------------------
> dmsetup/1827 is trying to acquire lock:
> (&md->suspend_lock){+.+...}, at: [<ffffffffa00678d8>] dm_swap_table+0x2d/0x249 [dm_mod]
>
> but task is already holding lock:
> (&journal->j_barrier){+.+...}, at: [<ffffffff8119192d>] journal_lock_updates+0xe1/0xf0
>
> which lock already depends on the new lock.
I'm going to assume this is bogus - and I can't spot any annotations
available to suppress it, so people will just have to ignore it.
Suspend involves:
get suspend lock
if dev is not already suspended
get journal lock
set state "dev is suspended"
release suspend lock
Resume involves
[journal lock is held]
get suspend lock
if dev is suspended
release journal lock
set state "dev is not suspended"
release suspend lock
It looks as if lockdep sees that as a problem:
Imagine those two sections running in parallel without the "Is dev
suspended?" check, of which lockdep has no knowledge.
Alasdair
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]