aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm.h
diff options
context:
space:
mode:
authorAlasdair G Kergon <agk@redhat.com>2006-06-26 03:27:34 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-26 12:58:36 -0400
commit5c6bd75d06db512515a3781aa97e42df2faf0815 (patch)
tree43d68c6d3174e1ae8a778acd834665c122f8b2a4 /drivers/md/dm.h
parentc2ade42dd35466d90aa6fc7cc717f396e165492f (diff)
[PATCH] dm: prevent removal if open
If you misuse the device-mapper interface (or there's a bug in your userspace tools) it's possible to end up with 'unlinked' mapped devices that cannot be removed until you reboot (along with uninterruptible processes). This patch prevents you from removing a device that is still open. It introduces dm_lock_for_deletion() which is called when a device is about to be removed to ensure that nothing has it open and nothing further can open it. It uses a private open_count for this which also lets us remove one of the problematic bdget_disk() calls elsewhere. Signed-off-by: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/md/dm.h')
-rw-r--r--drivers/md/dm.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/dm.h b/drivers/md/dm.h
index 71ddd1e23007..9ebb24b037bc 100644
--- a/drivers/md/dm.h
+++ b/drivers/md/dm.h
@@ -123,5 +123,7 @@ void dm_stripe_exit(void);
123 123
124void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); 124void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size);
125union map_info *dm_get_mapinfo(struct bio *bio); 125union map_info *dm_get_mapinfo(struct bio *bio);
126int dm_open_count(struct mapped_device *md);
127int dm_lock_for_deletion(struct mapped_device *md);
126 128
127#endif 129#endif