linux-stable-rt/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
..
Kconfig dm: raid456 basic support 2011-01-13 20:00:02 +00:00
Makefile dm: raid456 basic support 2011-01-13 20:00:02 +00: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
dm-bio-record.h
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-exception-store.h
dm-io.c
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-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.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-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c dm: raid456 basic support 2011-01-13 20:00:02 +00:00
dm-raid1.c dm: use non reentrant workqueues if equivalent 2011-01-13 19:59:58 +00:00
dm-region-hash.c
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c dm snapshot: persistent make metadata_wq multithreaded 2011-01-13 19:59:59 +00:00
dm-snap-transient.c
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
dm-table.c block: restore multiple bd_link_disk_holder() support 2011-01-14 18:44:22 +01:00
dm-target.c
dm-uevent.c
dm-uevent.h
dm-zero.c
dm.c dm: remove superfluous irq disablement in dm_request_fn 2011-01-13 20:00:00 +00:00
dm.h
faulty.c
linear.c
linear.h
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
multipath.h
raid0.c
raid0.h
raid1.c md-new-param-to_sync_page_io 2011-01-14 09:14:33 +11:00
raid1.h
raid5.c md/raid5: handle manually-added spares in start_reshape. 2011-01-14 09:14:34 +11:00
raid5.h
raid10.c md-new-param-to_sync_page_io 2011-01-14 09:14:33 +11:00
raid10.h