summaryrefslogtreecommitdiff
path: root/drivers/md/dm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r--drivers/md/dm.c47
1 files changed, 3 insertions, 44 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 0704c52..b3e26c7 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -49,11 +49,6 @@ static unsigned int _major = 0;
static DEFINE_IDR(_minor_idr);
static DEFINE_SPINLOCK(_minor_lock);
-
-static void do_deferred_remove(struct work_struct *w);
-
-static DECLARE_WORK(deferred_remove_work, do_deferred_remove);
-
/*
* For bio-based dm.
* One of these is allocated per bio.
@@ -121,7 +116,6 @@ EXPORT_SYMBOL_GPL(dm_get_rq_mapinfo);
#define DMF_DELETING 4
#define DMF_NOFLUSH_SUSPENDING 5
#define DMF_MERGE_IS_OPTIONAL 6
-#define DMF_DEFERRED_REMOVE 7
/*
* A dummy definition to make RCU happy.
@@ -305,8 +299,6 @@ out_free_io_cache:
static void local_exit(void)
{
- flush_scheduled_work();
-
kmem_cache_destroy(_rq_tio_cache);
kmem_cache_destroy(_io_cache);
unregister_blkdev(_major, _name);
@@ -412,10 +404,7 @@ static void dm_blk_close(struct gendisk *disk, fmode_t mode)
spin_lock(&_minor_lock);
- if (atomic_dec_and_test(&md->open_count) &&
- (test_bit(DMF_DEFERRED_REMOVE, &md->flags)))
- schedule_work(&deferred_remove_work);
-
+ atomic_dec(&md->open_count);
dm_put(md);
spin_unlock(&_minor_lock);
@@ -429,18 +418,14 @@ int dm_open_count(struct mapped_device *md)
/*
* Guarantees nothing is using the device before it's deleted.
*/
-int dm_lock_for_deletion(struct mapped_device *md, bool mark_deferred, bool only_deferred)
+int dm_lock_for_deletion(struct mapped_device *md)
{
int r = 0;
spin_lock(&_minor_lock);
- if (dm_open_count(md)) {
+ if (dm_open_count(md))
r = -EBUSY;
- if (mark_deferred)
- set_bit(DMF_DEFERRED_REMOVE, &md->flags);
- } else if (only_deferred && !test_bit(DMF_DEFERRED_REMOVE, &md->flags))
- r = -EEXIST;
else
set_bit(DMF_DELETING, &md->flags);
@@ -449,27 +434,6 @@ int dm_lock_for_deletion(struct mapped_device *md, bool mark_deferred, bool only
return r;
}
-int dm_cancel_deferred_remove(struct mapped_device *md)
-{
- int r = 0;
-
- spin_lock(&_minor_lock);
-
- if (test_bit(DMF_DELETING, &md->flags))
- r = -EBUSY;
- else
- clear_bit(DMF_DEFERRED_REMOVE, &md->flags);
-
- spin_unlock(&_minor_lock);
-
- return r;
-}
-
-static void do_deferred_remove(struct work_struct *w)
-{
- dm_deferred_remove();
-}
-
sector_t dm_get_size(struct mapped_device *md)
{
return get_capacity(md->disk);
@@ -2930,11 +2894,6 @@ int dm_suspended_md(struct mapped_device *md)
return test_bit(DMF_SUSPENDED, &md->flags);
}
-int dm_test_deferred_remove_flag(struct mapped_device *md)
-{
- return test_bit(DMF_DEFERRED_REMOVE, &md->flags);
-}
-
int dm_suspended(struct dm_target *ti)
{
return dm_suspended_md(dm_table_get_md(ti->table));