Emulate BLKRRPART on device-mapper

Partitions on device-mapper devices are managed by kpartx (if at
all). So if we were just to send out a 'change' event if someone
called BLKRRPART on these devices, kpartx will be triggered via udev
and can manage the partitions accordingly.

Signed-off-by: Hannes Reinecke <hare@suse.de>
DMRAID45 module

X-URL: http://people.redhat.com/~heinzm/sw/dm/dm-raid45/
Patch-mainline: No. https://www.redhat.com/archives/dm-devel/2009-November/msg00270.html
Date: Thu, 26 Nov 2009 14:45:12 +0100

 DM-RAID 45 module.

 This driver is used for "Fake RAID" devices.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
dmraid45: dm_dirty_log_create API fix

 2.6.33 added an optional callback to dm_dirty_log_create for flush
 operations. Eventually raid45 should have one but until then, this is
 to allow it to build.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
dmraid45: dm_get_device takes fewer arguments

 With 2.6.34-rc1, dm_get_device takes 4 args instead of 6.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-by: Jeff Mahoney <jeffm@suse.com>
dm-raid45: API update: Remove dm_put after dm_table_get_md

 Commit ecdb2e257abc33ae6798d3ccba87bdafa40ef6b6, for 2.6.34, removed
 the dm_get() call from dm_table_get_md(). The dm-raid45 code still has
 matching dm_put() calls for the dm_table_get_md() calls. This patch removes
 the dm_put() calls as it's causing too many reference drops and BUG_ONs.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
dm-raid45: api update after removal of barriers

 This patch updates dm-raid45 to deal with the removal of the
 barrier interface.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
dm-raid45: Remove blk_unplug calls

 The recent block layer changes mean that manually unplugging queues
 is no longer necessary from drivers in most cases. The unplugging will
 happen automatically during context switches, which in the cases below
 will happen either while waiting for mutex_lock or the context switch
 when the thread completes.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
dm-raid45: Update for 3.0

dm_io_client_create no longer takes any arguments.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
dm-raid45: split region hash and log, used by mirror and raid45

raid45 depends on dm-region-hash and this dependency was not handled

Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Reattach device handler for multipath devices

The multipath daemon might have specified a different device_handler
than the one a device is attached to by default.
So we should try to re-attach with the user-specified device_handler
and only return an error if that fails.
And we should _not_ detach existing hardware handlers. This will
set the path to failed during failover.

Signed-off-by: Hannes Reinecke <hare@suse.de
Update least-pending-IO dynamic load balancer

Attached patch provides "Least pending IO" dynamic load balancing policy for
bio based device mapper multipath. This load balancing policy considers the
number of unserviced requests pending on a path and selects the path with least
count for pending service request.

We find this policy more useful especially when the SAN environment has
heterogeneous components. Ex, when there is one 8GB HBA and one 2GB HBA
connected to the same server, 8GB HBA could be utilized better with this
algorithm.

This patch includes the update as posted in the bugzilla,
based on the review comments received in the dm-devel mailing list.

Signed-off-by: Sakshi Chaitanya Veni <vsakshi@hp.com>
Signed-off-by: Vijayakumar Balasubramanian <vijayakumar@hp.com>
Signed-off-by: Senthil Kumar V <senthil-kumar.veluswamy@hp.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
dm multipath devices are not getting created for readonly devices

Currently we cannot create device-mapper tables for multipath devices
whenever they are read-only.
This patch modifies the device-mapper to set the 'READ-ONLY' flag
automatically whenever a read-only is added to the table.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Release md->map_lock before set_disk_ro

Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>

Calling set_disk_ro() with irqs disabled triggers a warning.

set_disk_ro() can be called outside the
write_lock_irqsave(&md->map_lock)? And to get the
dm_table_get_mode(md->map), we just need to hold a reference
with dm_get_table() and dm_table_put()
DM-MPIO fails to tresspass LUNs on CLARiiON arrays

On Clariion arrays we fail to send the trespass command correctly.
We're trying to send the trespass command to via an disabled path,
causing the device handler to loop trying to send the command on
an invalid path.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Disable partitions scan for multipathed devices

When multipath devices are being used as disks for VM Guests
any partition scanning / setup should be done within the VM Guest,
not from host. So we need to switch off partitions scanning via
kpartx there.
For this I've implemented a new feature 'no_partitions' which
just serves as a notifier to kpartx to _not_ create partitions
on these devices.

Patch ported to SLES11.

Signed-off-by: Hannes Reinecke <hare@suse.de>
dm-mpath: pgpath->path.pdev -> pgpath->path.dev->name

 2.6.38-rc1 moved the device name from path.pdev to pgpath->path.dev->name.

 This patch addresses that.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Merge remote-tracking branch 'github/3.8/dmraid45' into 3.8/master