linux/drivers
Mike Snitzer a58a935d5a dm mpath: add retain_attached_hw_handler feature
A SCSI device handler might get attached to a device during the
initial device scan.  We do not necessarily want to override
this when loading a multipath table, so this patch adds a new
multipath feature argument "retain_attached_hw_handler".

During SCSI device scan all loaded SCSI device handlers will be
consulted for a match (via scsi_dh's provided .match).  If a match is
found that device handler will be attached.  We need a way to have
userspace multipathd's provided 'hw_handler' not override the already
attached hardware handler.

When specifying the new feature 'retain_attached_hw_handler' multipath
will use the currently attached hardware handler instead of trying to
attach the one specified during table load.  If no hardware handler is
attached the specified hardware handler will still be used.

Leverages scsi_dh_attach's ability to increment the scsi_dh's reference
count if the same scsi_dh name is provided when attaching - currently
attached scsi_dh name is determined with scsi_dh_attached_handler_name.

Depends upon commit 7e8a74b177
("[SCSI] scsi_dh: add scsi_dh_attached_handler_name").

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Tested-by: Babu Moger <babu.moger@netapp.com>
Reviewed-by: Chandra Seetharaman <sekharan@us.ibm.com>
Acked-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
2012-07-27 15:08:04 +01:00
..
accessibility
acpi PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
amba
ata
atm
auxdisplay
base SCSI misc on 20120724 2012-07-24 18:11:22 -07:00
bcma
block Power management updates for 3.6 2012-07-22 13:36:52 -07:00
bluetooth
cdrom
char Merge git://www.linux-watchdog.org/linux-watchdog 2012-07-24 13:26:08 -07:00
clk The common clk framework changes for 3.6 include a small number of core 2012-07-24 16:40:57 -07:00
clocksource arm-soc: new SoC support 2012-07-23 16:31:31 -07:00
connector
cpufreq Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
cpuidle
crypto arm-soc: clk changes 2012-07-23 17:51:03 -07:00
dca
devfreq
dio
dma Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-07-24 17:12:54 -07:00
edac
eisa
extcon
firewire
firmware
gpio arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
gpu
hid Merge branch 'uhid' into for-linus 2012-07-24 13:40:06 +02:00
hsi
hv
hwmon Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
hwspinlock
i2c i2c-omap: Add support for I2C_M_STOP message flag 2012-07-24 14:13:59 +02:00
ide
idle
ieee802154
iio
infiniband InfiniBand/RDMA changes for the 3.6 merge window: 2012-07-24 13:56:26 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
iommu IOMMU Updates for Linux v3.6-rc1 2012-07-24 16:24:11 -07:00
isdn
leds
lguest
macintosh
md dm mpath: add retain_attached_hw_handler feature 2012-07-27 15:08:04 +01:00
media Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
memory
memstick
message
mfd
misc PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
mmc Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-07-24 17:12:54 -07:00
mtd Change the default amount of eraseblocks which UBI reserves for bad block 2012-07-23 15:53:06 -07:00
net PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
nfc
nubus
of Devicetree updates for 3.6 2012-07-24 14:07:22 -07:00
oprofile
parisc PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
parport
pci PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
pcmcia
pinctrl Pin control changes for v3.6: 2012-07-24 14:05:46 -07:00
platform Power management updates for 3.6 2012-07-22 13:36:52 -07:00
pnp
power Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
pps
ps3
ptp
rapidio
regulator SCSI misc on 20120724 2012-07-24 18:11:22 -07:00
remoteproc
rpmsg
rtc arm-soc: device tree description updates 2012-07-23 16:17:43 -07:00
s390 KVM updates for the 3.6 merge window 2012-07-24 12:01:20 -07:00
sbus
scsi SCSI misc on 20120724 2012-07-24 18:11:22 -07:00
sfi
sh
sn
spi Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2012-07-24 17:20:51 -07:00
ssb
staging Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2012-07-24 13:44:40 -07:00
target
tc
thermal
tty Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-07-24 17:12:54 -07:00
uio
usb SCSI misc on 20120724 2012-07-24 18:11:22 -07:00
uwb
vhost
video Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
virt
virtio
vlynq
vme
w1
watchdog Merge git://www.linux-watchdog.org/linux-watchdog 2012-07-24 13:26:08 -07:00
xen PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
zorro
Kconfig
Makefile