]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
11 years agoMerge remote-tracking branch 'ftrace/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:50:33 +0000 (14:50 +1000)]
Merge remote-tracking branch 'ftrace/for-next'

11 years agoMerge remote-tracking branch 'tip/auto-latest'
Stephen Rothwell [Fri, 28 Jun 2013 04:42:11 +0000 (14:42 +1000)]
Merge remote-tracking branch 'tip/auto-latest'

Conflicts:
arch/arm/kernel/Makefile
kernel/futex.c

11 years agoMerge remote-tracking branch 'spi-mb/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:40:09 +0000 (14:40 +1000)]
Merge remote-tracking branch 'spi-mb/for-next'

11 years agoMerge remote-tracking branch 'devicetree/devicetree/next'
Stephen Rothwell [Fri, 28 Jun 2013 04:37:22 +0000 (14:37 +1000)]
Merge remote-tracking branch 'devicetree/devicetree/next'

11 years agoMerge remote-tracking branch 'edac-amd/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:35:45 +0000 (14:35 +1000)]
Merge remote-tracking branch 'edac-amd/for-next'

11 years agoMerge remote-tracking branch 'trivial/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:27:22 +0000 (14:27 +1000)]
Merge remote-tracking branch 'trivial/for-next'

Conflicts:
Documentation/networking/netlink_mmap.txt

11 years agoMerge remote-tracking branch 'vfio/next'
Stephen Rothwell [Fri, 28 Jun 2013 04:25:36 +0000 (14:25 +1000)]
Merge remote-tracking branch 'vfio/next'

11 years agoMerge remote-tracking branch 'iommu/next'
Stephen Rothwell [Fri, 28 Jun 2013 04:24:00 +0000 (14:24 +1000)]
Merge remote-tracking branch 'iommu/next'

Conflicts:
drivers/iommu/Kconfig

11 years agoMerge remote-tracking branch 'watchdog/master'
Stephen Rothwell [Fri, 28 Jun 2013 04:22:22 +0000 (14:22 +1000)]
Merge remote-tracking branch 'watchdog/master'

11 years agoMerge remote-tracking branch 'lblnet/master'
Stephen Rothwell [Fri, 28 Jun 2013 04:17:58 +0000 (14:17 +1000)]
Merge remote-tracking branch 'lblnet/master'

11 years agoMerge remote-tracking branch 'selinux/master'
Stephen Rothwell [Fri, 28 Jun 2013 04:17:56 +0000 (14:17 +1000)]
Merge remote-tracking branch 'selinux/master'

11 years agoMerge remote-tracking branch 'security/next'
Stephen Rothwell [Fri, 28 Jun 2013 04:13:33 +0000 (14:13 +1000)]
Merge remote-tracking branch 'security/next'

Conflicts:
Documentation/kernel-parameters.txt

11 years agoMerge remote-tracking branch 'regulator/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:11:50 +0000 (14:11 +1000)]
Merge remote-tracking branch 'regulator/for-next'

11 years agoMerge remote-tracking branch 'omap_dss2/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:11:47 +0000 (14:11 +1000)]
Merge remote-tracking branch 'omap_dss2/for-next'

11 years agoMerge remote-tracking branch 'fbdev/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:09:43 +0000 (14:09 +1000)]
Merge remote-tracking branch 'fbdev/for-next'

Conflicts:
drivers/video/of_display_timing.c

11 years agoMerge remote-tracking branch 'battery/master'
Stephen Rothwell [Fri, 28 Jun 2013 04:08:05 +0000 (14:08 +1000)]
Merge remote-tracking branch 'battery/master'

11 years agoMerge remote-tracking branch 'mfd/master'
Stephen Rothwell [Fri, 28 Jun 2013 04:06:26 +0000 (14:06 +1000)]
Merge remote-tracking branch 'mfd/master'

11 years agoMerge remote-tracking branch 'md/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 04:04:46 +0000 (14:04 +1000)]
Merge remote-tracking branch 'md/for-next'

11 years agoMerge remote-tracking branch 'slab/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:56:51 +0000 (13:56 +1000)]
Merge remote-tracking branch 'slab/for-next'

11 years agoMerge remote-tracking branch 'kgdb/kgdb-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:56:47 +0000 (13:56 +1000)]
Merge remote-tracking branch 'kgdb/kgdb-next'

11 years agoMerge remote-tracking branch 'mmc/mmc-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:55:06 +0000 (13:55 +1000)]
Merge remote-tracking branch 'mmc/mmc-next'

11 years agoMerge branch 'device-mapper/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:53:10 +0000 (13:53 +1000)]
Merge branch 'device-mapper/master'

11 years agoMerge remote-tracking branch 'block/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:48:37 +0000 (13:48 +1000)]
Merge remote-tracking branch 'block/for-next'

Conflicts:
include/linux/cgroup.h

11 years agoMerge remote-tracking branch 'cgroup/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:44:02 +0000 (13:44 +1000)]
Merge remote-tracking branch 'cgroup/for-next'

11 years agoMerge remote-tracking branch 'input-mt/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:42:26 +0000 (13:42 +1000)]
Merge remote-tracking branch 'input-mt/for-next'

11 years agoMerge remote-tracking branch 'input/next'
Stephen Rothwell [Fri, 28 Jun 2013 03:40:47 +0000 (13:40 +1000)]
Merge remote-tracking branch 'input/next'

11 years agoMerge remote-tracking branch 'virtio/virtio-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:39:06 +0000 (13:39 +1000)]
Merge remote-tracking branch 'virtio/virtio-next'

11 years agoMerge remote-tracking branch 'modules/modules-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:37:30 +0000 (13:37 +1000)]
Merge remote-tracking branch 'modules/modules-next'

11 years agoMerge remote-tracking branch 'sound-asoc/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:35:44 +0000 (13:35 +1000)]
Merge remote-tracking branch 'sound-asoc/for-next'

11 years agoMerge remote-tracking branch 'sound/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:33:42 +0000 (13:33 +1000)]
Merge remote-tracking branch 'sound/for-next'

11 years agoMerge remote-tracking branch 'drm-tegra/drm/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:32:06 +0000 (13:32 +1000)]
Merge remote-tracking branch 'drm-tegra/drm/for-next'

11 years agoMerge remote-tracking branch 'drm-intel/for-linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:30:27 +0000 (13:30 +1000)]
Merge remote-tracking branch 'drm-intel/for-linux-next'

Conflicts:
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_fb.c
drivers/gpu/drm/i915/intel_sdvo.c

11 years agoMerge remote-tracking branch 'drm/drm-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:22:09 +0000 (13:22 +1000)]
Merge remote-tracking branch 'drm/drm-next'

Conflicts:
drivers/gpu/drm/drm_vm.c

11 years agoMerge remote-tracking branch 'crypto/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:20:29 +0000 (13:20 +1000)]
Merge remote-tracking branch 'crypto/master'

11 years agoMerge remote-tracking branch 'l2-mtd/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:18:52 +0000 (13:18 +1000)]
Merge remote-tracking branch 'l2-mtd/master'

11 years agoMerge remote-tracking branch 'infiniband/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 03:13:55 +0000 (13:13 +1000)]
Merge remote-tracking branch 'infiniband/for-next'

11 years agoMerge remote-tracking branch 'bluetooth/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:12:19 +0000 (13:12 +1000)]
Merge remote-tracking branch 'bluetooth/master'

11 years agoMerge remote-tracking branch 'wireless-next/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:10:15 +0000 (13:10 +1000)]
Merge remote-tracking branch 'wireless-next/master'

Conflicts:
net/wireless/nl80211.c

11 years agoMerge remote-tracking branch 'net-next/master'
Stephen Rothwell [Fri, 28 Jun 2013 03:01:49 +0000 (13:01 +1000)]
Merge remote-tracking branch 'net-next/master'

Conflicts:
drivers/net/ethernet/freescale/fec_main.c
drivers/net/ethernet/renesas/sh_eth.c
fs/select.c

11 years agoMerge remote-tracking branch 'slave-dma/next'
Stephen Rothwell [Fri, 28 Jun 2013 03:00:10 +0000 (13:00 +1000)]
Merge remote-tracking branch 'slave-dma/next'

11 years agoMerge remote-tracking branch 'target-updates/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:58:24 +0000 (12:58 +1000)]
Merge remote-tracking branch 'target-updates/for-next'

11 years agoMerge remote-tracking branch 'scsi/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:56:17 +0000 (12:56 +1000)]
Merge remote-tracking branch 'scsi/for-next'

11 years agoMerge remote-tracking branch 'dlm/next'
Stephen Rothwell [Fri, 28 Jun 2013 02:54:40 +0000 (12:54 +1000)]
Merge remote-tracking branch 'dlm/next'

11 years agoMerge remote-tracking branch 'ubi/linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:53:03 +0000 (12:53 +1000)]
Merge remote-tracking branch 'ubi/linux-next'

11 years agoMerge remote-tracking branch 'ieee1394/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:51:27 +0000 (12:51 +1000)]
Merge remote-tracking branch 'ieee1394/for-next'

11 years agoMerge remote-tracking branch 'thermal/next'
Stephen Rothwell [Fri, 28 Jun 2013 02:49:49 +0000 (12:49 +1000)]
Merge remote-tracking branch 'thermal/next'

11 years agoMerge remote-tracking branch 'cpuidle/cpuidle-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:49:45 +0000 (12:49 +1000)]
Merge remote-tracking branch 'cpuidle/cpuidle-next'

Conflicts:
drivers/acpi/processor_driver.c
drivers/base/power/qos.c

11 years agoMerge remote-tracking branch 'idle/next'
Stephen Rothwell [Fri, 28 Jun 2013 02:48:04 +0000 (12:48 +1000)]
Merge remote-tracking branch 'idle/next'

11 years agoMerge remote-tracking branch 'pm/linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:39:52 +0000 (12:39 +1000)]
Merge remote-tracking branch 'pm/linux-next'

Conflicts:
MAINTAINERS

11 years agoMerge remote-tracking branch 'libata/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:38:07 +0000 (12:38 +1000)]
Merge remote-tracking branch 'libata/for-next'

11 years agoMerge remote-tracking branch 'kbuild/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:36:25 +0000 (12:36 +1000)]
Merge remote-tracking branch 'kbuild/for-next'

11 years agoMerge remote-tracking branch 'v4l-dvb/master'
Stephen Rothwell [Fri, 28 Jun 2013 02:34:22 +0000 (12:34 +1000)]
Merge remote-tracking branch 'v4l-dvb/master'

11 years agoMerge remote-tracking branch 'hwmon-staging/hwmon-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:32:46 +0000 (12:32 +1000)]
Merge remote-tracking branch 'hwmon-staging/hwmon-next'

11 years agoMerge remote-tracking branch 'i2c/i2c/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:31:10 +0000 (12:31 +1000)]
Merge remote-tracking branch 'i2c/i2c/for-next'

11 years agoMerge remote-tracking branch 'hid/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:29:09 +0000 (12:29 +1000)]
Merge remote-tracking branch 'hid/for-next'

11 years agoMerge remote-tracking branch 'pci/next'
Stephen Rothwell [Fri, 28 Jun 2013 02:25:19 +0000 (12:25 +1000)]
Merge remote-tracking branch 'pci/next'

Conflicts:
arch/ia64/sn/kernel/io_init.c
drivers/acpi/pci_root.c
drivers/pci/probe.c
include/linux/aer.h

11 years agoMerge remote-tracking branch 'vfs/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:17:13 +0000 (12:17 +1000)]
Merge remote-tracking branch 'vfs/for-next'

11 years agoMerge remote-tracking branch 'xfs/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:15:33 +0000 (12:15 +1000)]
Merge remote-tracking branch 'xfs/for-next'

Conflicts:
fs/xfs/xfs_log_cil.c
fs/xfs/xfs_log_recover.c

11 years agoMerge remote-tracking branch 'v9fs/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:12:27 +0000 (12:12 +1000)]
Merge remote-tracking branch 'v9fs/for-next'

11 years agoMerge remote-tracking branch 'ocfs2/linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:10:17 +0000 (12:10 +1000)]
Merge remote-tracking branch 'ocfs2/linux-next'

11 years agoMerge remote-tracking branch 'nfsd/nfsd-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:08:41 +0000 (12:08 +1000)]
Merge remote-tracking branch 'nfsd/nfsd-next'

11 years agoMerge remote-tracking branch 'nfs/linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:04:23 +0000 (12:04 +1000)]
Merge remote-tracking branch 'nfs/linux-next'

11 years agoMerge remote-tracking branch 'logfs/master'
Stephen Rothwell [Fri, 28 Jun 2013 02:02:27 +0000 (12:02 +1000)]
Merge remote-tracking branch 'logfs/master'

11 years agoMerge remote-tracking branch 'jfs/jfs-next'
Stephen Rothwell [Fri, 28 Jun 2013 02:00:51 +0000 (12:00 +1000)]
Merge remote-tracking branch 'jfs/jfs-next'

11 years agoMerge remote-tracking branch 'gfs2/master'
Stephen Rothwell [Fri, 28 Jun 2013 01:59:16 +0000 (11:59 +1000)]
Merge remote-tracking branch 'gfs2/master'

11 years agoMerge remote-tracking branch 'fscache/fscache'
Stephen Rothwell [Fri, 28 Jun 2013 01:51:08 +0000 (11:51 +1000)]
Merge remote-tracking branch 'fscache/fscache'

11 years agoMerge remote-tracking branch 'f2fs/dev'
Stephen Rothwell [Fri, 28 Jun 2013 01:49:34 +0000 (11:49 +1000)]
Merge remote-tracking branch 'f2fs/dev'

11 years agoMerge remote-tracking branch 'ext4/dev'
Stephen Rothwell [Fri, 28 Jun 2013 01:41:48 +0000 (11:41 +1000)]
Merge remote-tracking branch 'ext4/dev'

11 years agoMerge remote-tracking branch 'ext3/for_next'
Stephen Rothwell [Fri, 28 Jun 2013 01:40:14 +0000 (11:40 +1000)]
Merge remote-tracking branch 'ext3/for_next'

11 years agoMerge remote-tracking branch 'ecryptfs/next'
Stephen Rothwell [Fri, 28 Jun 2013 01:38:40 +0000 (11:38 +1000)]
Merge remote-tracking branch 'ecryptfs/next'

11 years agoMerge remote-tracking branch 'cifs/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:37:01 +0000 (11:37 +1000)]
Merge remote-tracking branch 'cifs/for-next'

11 years agoMerge remote-tracking branch 'ceph/master'
Stephen Rothwell [Fri, 28 Jun 2013 01:35:27 +0000 (11:35 +1000)]
Merge remote-tracking branch 'ceph/master'

Conflicts:
drivers/block/rbd.c

11 years agoMerge remote-tracking branch 'xtensa/for_next'
Stephen Rothwell [Fri, 28 Jun 2013 01:33:48 +0000 (11:33 +1000)]
Merge remote-tracking branch 'xtensa/for_next'

11 years agoMerge remote-tracking branch 'sh/sh-latest'
Stephen Rothwell [Fri, 28 Jun 2013 01:32:12 +0000 (11:32 +1000)]
Merge remote-tracking branch 'sh/sh-latest'

Conflicts:
arch/sh/kernel/cpu/sh2a/Makefile

11 years agoMerge remote-tracking branch 's390/features'
Stephen Rothwell [Fri, 28 Jun 2013 01:28:31 +0000 (11:28 +1000)]
Merge remote-tracking branch 's390/features'

11 years agoMerge remote-tracking branch 'mpc5xxx/next'
Stephen Rothwell [Fri, 28 Jun 2013 01:26:55 +0000 (11:26 +1000)]
Merge remote-tracking branch 'mpc5xxx/next'

11 years agoMerge remote-tracking branch 'powerpc/next'
Stephen Rothwell [Fri, 28 Jun 2013 01:19:36 +0000 (11:19 +1000)]
Merge remote-tracking branch 'powerpc/next'

11 years agoMerge remote-tracking branch 'mips/mips-for-linux-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:17:59 +0000 (11:17 +1000)]
Merge remote-tracking branch 'mips/mips-for-linux-next'

11 years agoMerge remote-tracking branch 'microblaze/next'
Stephen Rothwell [Fri, 28 Jun 2013 01:16:26 +0000 (11:16 +1000)]
Merge remote-tracking branch 'microblaze/next'

11 years agoMerge remote-tracking branch 'metag/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:14:53 +0000 (11:14 +1000)]
Merge remote-tracking branch 'metag/for-next'

11 years agoMerge remote-tracking branch 'm68k/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:13:19 +0000 (11:13 +1000)]
Merge remote-tracking branch 'm68k/for-next'

Conflicts:
arch/cris/arch-v32/drivers/Kconfig

11 years agoMerge remote-tracking branch 'ia64/next'
Stephen Rothwell [Fri, 28 Jun 2013 01:11:45 +0000 (11:11 +1000)]
Merge remote-tracking branch 'ia64/next'

11 years agoMerge remote-tracking branch 'cris/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:10:06 +0000 (11:10 +1000)]
Merge remote-tracking branch 'cris/for-next'

11 years agoMerge remote-tracking branch 'arm64/upstream'
Stephen Rothwell [Fri, 28 Jun 2013 01:08:26 +0000 (11:08 +1000)]
Merge remote-tracking branch 'arm64/upstream'

Conflicts:
include/uapi/linux/kvm.h

11 years agoMerge remote-tracking branch 'xilinx/arm-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:08:24 +0000 (11:08 +1000)]
Merge remote-tracking branch 'xilinx/arm-next'

Conflicts:
arch/arm/mach-highbank/highbank.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-spear/spear13xx.c
arch/arm/mach-vexpress/v2m.c
arch/arm/mach-zynq/platsmp.c
drivers/clocksource/Makefile
drivers/clocksource/tegra20_timer.c

11 years agoMerge remote-tracking branch 'arm-perf/for-next/perf'
Stephen Rothwell [Fri, 28 Jun 2013 01:08:18 +0000 (11:08 +1000)]
Merge remote-tracking branch 'arm-perf/for-next/perf'

11 years agoMerge remote-tracking branch 'arm/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:06:44 +0000 (11:06 +1000)]
Merge remote-tracking branch 'arm/for-next'

11 years agoMerge remote-tracking branch 'arc/for-next'
Stephen Rothwell [Fri, 28 Jun 2013 01:05:11 +0000 (11:05 +1000)]
Merge remote-tracking branch 'arc/for-next'

11 years agoMerge remote-tracking branch 'ide/master'
Stephen Rothwell [Fri, 28 Jun 2013 01:03:28 +0000 (11:03 +1000)]
Merge remote-tracking branch 'ide/master'

11 years agoMerge remote-tracking branch 'crypto-current/master'
Stephen Rothwell [Fri, 28 Jun 2013 01:03:26 +0000 (11:03 +1000)]
Merge remote-tracking branch 'crypto-current/master'

11 years agoMerge remote-tracking branch 'sound-current/for-linus'
Stephen Rothwell [Fri, 28 Jun 2013 01:03:20 +0000 (11:03 +1000)]
Merge remote-tracking branch 'sound-current/for-linus'

11 years agoMerge remote-tracking branch 'arc-current/for-curr'
Stephen Rothwell [Fri, 28 Jun 2013 01:03:18 +0000 (11:03 +1000)]
Merge remote-tracking branch 'arc-current/for-curr'

11 years agoMerge remote-tracking branch 'origin/master'
Stephen Rothwell [Fri, 28 Jun 2013 00:55:05 +0000 (10:55 +1000)]
Merge remote-tracking branch 'origin/master'

11 years agodm-switch is a new target that maps IO to underlying block devices
Jim Ramsay [Fri, 28 Jun 2013 00:53:27 +0000 (10:53 +1000)]
dm-switch is a new target that maps IO to underlying block devices
efficiently when there are a large number of fixed-sized address regions
but there is no simple pattern to allow for a compact mapping
representation such as dm-stripe.

Motivation
----------

Dell EqualLogic and some other iSCSI storage arrays use a distributed
frameless architecture.  In this architecture, the storage group
consists of a number of distinct storage arrays ("members"), each having
independent controllers, disk storage and network adapters.  When a LUN
is created it is spread across multiple members.  The details of the
spreading are hidden from initiators connected to this storage system.
The storage group exposes a single target discovery portal, no matter
how many members are being used.  When iSCSI sessions are created, each
session is connected to an eth port on a single member.  Data to a LUN
can be sent on any iSCSI session, and if the blocks being accessed are
stored on another member the IO will be forwarded as required.  This
forwarding is invisible to the initiator.  The storage layout is also
dynamic, and the blocks stored on disk may be moved from member to
member as needed to balance the load.

This architecture simplifies the management and configuration of both
the storage group and initiators.  In a multipathing configuration, it
is possible to set up multiple iSCSI sessions to use multiple network
interfaces on both the host and target to take advantage of the
increased network bandwidth.  An initiator could use a simple round robin
algorithm to send IO across all paths and let the storage array members
forward it as necessary, but there is a performance advantage to
sending data directly to the correct member.

The Device Mapper table architecture already supports designating different
address regions with different targets, but in our architecture the LUN
is spread with an address region size on the order of 10s of MBs, which
means the resulting DM table could have more than a million entries
and consume far too much memory.

Solution
--------
Based on earlier discussion with the dm-devel contributors, we have
solved this problem by using Device Mapper to build a two-layer device
hierarchy:

    Upper Tier – Determine which array member the IO should be sent to.
    Lower Tier – Load balance amongst paths to a particular member.

The lower tier consists of a single dm multipath device for each member.
Each of these multipath devices contains the set of paths directly to
the array member in one priority group, and leverages existing path
selectors to load balance amongst these paths.  We also build a
non-preferred priority group containing paths to other array members for
failover reasons.

The upper tier consists of a single dm switch device, using the new DM
target module.  This device uses a bitmap to look up the location of the
IO and choose the appropriate lower tier device to route the IO.  By
using a bitmap we are able to use 4 bits for each address range in a 16
member group (which is very large for us).  This is a much denser
representation than the DM table B-tree can achieve.

Though we have developed this target for a specific storage device, we
have made an effort to keep it as general purpose as possible in the hope
that others may benefit.

Originally developed by Jim Ramsay. Simplified by Mikulas Patocka.

Signed-off-by: Jim Ramsay <jim_ramsay@dell.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
11 years agoMerge branches 'af_ib', 'cxgb4', 'misc', 'ocrdma', 'qib' and 'srp' into for-next
Roland Dreier [Thu, 27 Jun 2013 23:46:18 +0000 (16:46 -0700)]
Merge branches 'af_ib', 'cxgb4', 'misc', 'ocrdma', 'qib' and 'srp' into for-next

11 years agoIB/srp: Skip host settle delay
Bart Van Assche [Wed, 12 Jun 2013 13:24:25 +0000 (15:24 +0200)]
IB/srp: Skip host settle delay

The SRP initiator implements host reset by reconnecting to the SRP
target.  That means that communication with the target is possible as
soon as host reset finished. Hence skip the host settle delay.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Sebastian Riemer <sebastian.riemer@profitbricks.com>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Acked-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <roland@purestorage.com>
11 years agoIB/srp: Avoid skipping srp_reset_host() after a transport error
Bart Van Assche [Wed, 12 Jun 2013 13:23:04 +0000 (15:23 +0200)]
IB/srp: Avoid skipping srp_reset_host() after a transport error

The SCSI error handler assumes that the transport layer is operational
if an eh_abort_handler() returns SUCCESS.  Hence srp_abort() only
should return SUCCESS if sending the ABORT TASK task management
function succeeded.  This patch avoids the SCSI error handler skipping
the srp_reset_host() call after a transport layer error.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <roland@purestorage.com>
11 years agoIB/srp: Fix remove_one crash due to resource exhaustion
Dotan Barak [Wed, 12 Jun 2013 13:20:36 +0000 (15:20 +0200)]
IB/srp: Fix remove_one crash due to resource exhaustion

If the add_one callback fails during driver load no resources are
allocated so there isn't a need to release any resources. Trying
to clean the resource may lead to the following kernel panic:

    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [<ffffffffa0132331>] srp_remove_one+0x31/0x240 [ib_srp]
    RIP: 0010:[<ffffffffa0132331>]  [<ffffffffa0132331>] srp_remove_one+0x31/0x240 [ib_srp]
    Process rmmod (pid: 4562, threadinfo ffff8800dd738000, task ffff8801167e60c0)
    Call Trace:
     [<ffffffffa024500e>] ib_unregister_client+0x4e/0x120 [ib_core]
     [<ffffffffa01361bd>] srp_cleanup_module+0x15/0x71 [ib_srp]
     [<ffffffff810ac6a4>] sys_delete_module+0x194/0x260
     [<ffffffff8100b0f2>] system_call_fastpath+0x16/0x1b

Signed-off-by: Dotan Barak <dotanb@dev.mellanox.co.il>
Reviewed-by: Eli Cohen <eli@mellanox.co.il>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Sebastian Riemer <sebastian.riemer@profitbricks.com>
Acked-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <roland@purestorage.com>
11 years agodrm/qxl: add support for cursor hotspot.
Dave Airlie [Thu, 20 Jun 2013 01:48:53 +0000 (11:48 +1000)]
drm/qxl: add support for cursor hotspot.

This uses the cursor hotspot info from userspace and passes
it to the qxl hw layer.

Signed-off-by: Dave Airlie <airlied@redhat.com>
11 years agodrm: add hotspot support for cursors.
Dave Airlie [Thu, 20 Jun 2013 01:48:52 +0000 (11:48 +1000)]
drm: add hotspot support for cursors.

So it looks like for virtual hw cursors on QXL we need to inform
the "hw" device what the cursor hotspot parameters are. This
makes sense if you think the host has to draw the cursor and interpret
clicks from it. However the current modesetting interface doesn't support
passing the hotspot information from userspace.

This implements a new cursor ioctl, that takes the hotspot info as well,
userspace can try calling the new interface and if it gets -ENOSYS it means
its on an older kernel and can just fallback.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>