diff options
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 47 |
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)); |