linux/drivers/md
Tejun Heo 49731baa41 block: restore multiple bd_link_disk_holder() support
Commit e09b457b (block: simplify holder symlink handling) incorrectly
assumed that there is only one link at maximum.  dm may use multiple
links and expects block layer to track reference count for each link,
which is different from and unrelated to the exclusive device holder
identified by @holder when the device is opened.

Remove the single holder assumption and automatic removal of the link
and revive the per-link reference count tracking.  The code
essentially behaves the same as before commit e09b457b sans the
unnecessary kobject reference count dancing.

While at it, note that this facility should not be used by anyone else
than the current ones.  Sysfs symlinks shouldn't be abused like this
and the whole thing doesn't belong in the block layer at all.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Milan Broz <mbroz@redhat.com>
Cc: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Cc: Neil Brown <neilb@suse.de>
Cc: linux-raid@vger.kernel.org
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2011-01-14 18:44:22 +01:00
..
bitmap.c md: Don't let implementation detail of curr_resync leak out through sysfs. 2011-01-14 09:14:34 +11:00
bitmap.h md: use sector_t in bitmap_get_counter 2010-10-28 17:32:26 +11:00
dm-bio-record.h dm: preserve bi_io_vec when resubmitting bios 2009-04-02 19:55:23 +01:00
dm-crypt.c dm crypt: add loop aes iv generator 2011-01-13 19:59:55 +00:00
dm-delay.c dm: convert workqueues to alloc_ordered 2011-01-13 19:59:57 +00:00
dm-exception-store.c dm snapshot: test chunk size against both origin and snapshot 2010-08-12 04:13:51 +01:00
dm-exception-store.h dm snapshot: test chunk size against both origin and snapshot 2010-08-12 04:13:51 +01:00
dm-io.c dm: implement REQ_FLUSH/FUA support for bio-based dm 2010-09-10 12:35:38 +02:00
dm-ioctl.c dm ioctl: suppress needless warning messages 2011-01-13 19:59:55 +00:00
dm-kcopyd.c dm: use non reentrant workqueues if equivalent 2011-01-13 19:59:58 +00:00
dm-linear.c dm: use dm_target_offset macro 2010-08-12 04:14:11 +01:00
dm-log-userspace-base.c dm log userspace: add version number to comms 2011-01-13 19:59:52 +00:00
dm-log-userspace-transfer.c dm log userspace: add version number to comms 2011-01-13 19:59:52 +00:00
dm-log-userspace-transfer.h dm log: userspace add luid to distinguish between concurrent log instances 2009-09-04 20:40:34 +01:00
dm-log.c dm log: use PTR_ERR value instead of ENOMEM 2011-01-13 20:00:00 +00:00
dm-mpath.c dm mpath: delay activate_path retry on SCSI_DH_RETRY 2011-01-13 20:00:01 +00:00
dm-mpath.h dm mpath: remove is_active from struct dm_path 2008-10-10 13:36:58 +01:00
dm-path-selector.c dm: path selector use module refcount directly 2009-04-02 19:55:27 +01:00
dm-path-selector.h dm mpath: add start_io and nr_bytes to path selectors 2009-06-22 10:12:27 +01:00
dm-queue-length.c dm mpath: add queue length load balancer 2009-06-22 10:12:27 +01:00
dm-raid1.c dm: use non reentrant workqueues if equivalent 2011-01-13 19:59:58 +00:00
dm-raid.c dm: raid456 basic support 2011-01-13 20:00:02 +00:00
dm-region-hash.c dm: implement REQ_FLUSH/FUA support for bio-based dm 2010-09-10 12:35:38 +02:00
dm-round-robin.c dm mpath: add start_io and nr_bytes to path selectors 2009-06-22 10:12:27 +01:00
dm-service-time.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
dm-snap-persistent.c dm snapshot: persistent make metadata_wq multithreaded 2011-01-13 19:59:59 +00:00
dm-snap-transient.c dm snapshot: move cow ref from exception store to snap core 2009-12-10 23:52:12 +00:00
dm-snap.c dm snapshot: avoid storing private suspended state 2011-01-13 19:59:59 +00:00
dm-stripe.c dm stripe: switch from local workqueue to system_wq 2011-01-13 19:59:57 +00:00
dm-sysfs.c Driver core: Constify struct sysfs_ops in struct kobj_type 2010-03-07 17:04:49 -08:00
dm-table.c block: restore multiple bd_link_disk_holder() support 2011-01-14 18:44:22 +01:00
dm-target.c dm: error return error for discards 2010-08-12 04:14:14 +01:00
dm-uevent.c dm table: remove dm_get from dm_table_get_md 2010-03-06 02:29:52 +00:00
dm-uevent.h dm: uevent generate events 2007-10-20 02:01:26 +01:00
dm-zero.c dm: zero silently drop discards 2010-08-12 04:14:12 +01:00
dm.c dm: remove superfluous irq disablement in dm_request_fn 2011-01-13 20:00:00 +00:00
dm.h dm: linear support discard 2010-08-12 04:14:08 +01:00
faulty.c md: use separate bio pool for each md device. 2010-10-28 17:36:15 +11:00
Kconfig dm: raid456 basic support 2011-01-13 20:00:02 +00:00
linear.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
linear.h md/linear: use call_rcu to free obsolete 'conf' structures. 2009-06-18 08:49:42 +10:00
Makefile dm: raid456 basic support 2011-01-13 20:00:02 +00:00
md.c block: restore multiple bd_link_disk_holder() support 2011-01-14 18:44:22 +01:00
md.h md: separate meta and data devs 2011-01-14 09:14:34 +11:00
multipath.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
multipath.h md: remove mddev_to_conf "helper" macro 2009-06-16 16:54:21 +10:00
raid0.c md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid0.h md: fix handling of array level takeover that re-arranges devices. 2010-06-24 13:33:24 +10:00
raid1.c md-new-param-to_sync_page_io 2011-01-14 09:14:33 +11:00
raid1.h md/raid1: discard unused variable. 2010-10-29 16:40:33 +11:00
raid5.c md/raid5: handle manually-added spares in start_reshape. 2011-01-14 09:14:34 +11:00
raid5.h md: implment REQ_FLUSH/FUA support 2010-09-10 12:35:38 +02:00
raid10.c md-new-param-to_sync_page_io 2011-01-14 09:14:33 +11:00
raid10.h md: fix handling of array level takeover that re-arranges devices. 2010-06-24 13:33:24 +10:00