projects
/
wrapfs-2.6.32.y.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
231f900
)
dm: hold suspend_lock while suspending device during device deletion
author
Mikulas Patocka
<mpatocka@redhat.com>
Fri, 27 Feb 2015 19:04:27 +0000
(14:04 -0500)
committer
Ben Hutchings
<ben@decadent.org.uk>
Sat, 9 May 2015 22:16:25 +0000
(23:16 +0100)
commit
ab7c7bb6f4ab95dbca96fcfc4463cd69843e3e24
upstream.
__dm_destroy() must take the suspend_lock so that its presuspend and
postsuspend calls do not race with an internal suspend.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/md/dm.c
patch
|
blob
|
history
diff --git
a/drivers/md/dm.c
b/drivers/md/dm.c
index d38d5248c23e09849006b871aa9c44e592468988..c00bcdcd36de1f1ce86a5788e6fb2add2e86431e 100644
(file)
--- a/
drivers/md/dm.c
+++ b/
drivers/md/dm.c
@@
-2295,10
+2295,16
@@
static void __dm_destroy(struct mapped_device *md, bool wait)
set_bit(DMF_FREEING, &md->flags);
spin_unlock(&_minor_lock);
+ /*
+ * Take suspend_lock so that presuspend and postsuspend methods
+ * do not race with internal suspend.
+ */
+ mutex_lock(&md->suspend_lock);
if (!dm_suspended_md(md)) {
dm_table_presuspend_targets(map);
dm_table_postsuspend_targets(map);
}
+ mutex_unlock(&md->suspend_lock);
/*
* Rare, but there may be I/O requests still going to complete,