]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
12 years agoMerge remote-tracking branch 'vhost/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:21:57 +0000 (15:21 +1000)]
Merge remote-tracking branch 'vhost/linux-next'

Conflicts:
drivers/net/tun.c

12 years agoMerge remote-tracking branch 'pinctrl/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:20:13 +0000 (15:20 +1000)]
Merge remote-tracking branch 'pinctrl/for-next'

12 years agoMerge remote-tracking branch 'tmem/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:18:29 +0000 (15:18 +1000)]
Merge remote-tracking branch 'tmem/linux-next'

12 years agoMerge remote-tracking branch 'char-misc/char-misc-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:16:50 +0000 (15:16 +1000)]
Merge remote-tracking branch 'char-misc/char-misc-next'

Conflicts:
drivers/misc/mei/interrupt.c

12 years agoMerge remote-tracking branch 'staging/staging-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:15:02 +0000 (15:15 +1000)]
Merge remote-tracking branch 'staging/staging-next'

12 years agoMerge remote-tracking branch 'usb/usb-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:13:17 +0000 (15:13 +1000)]
Merge remote-tracking branch 'usb/usb-next'

12 years agoMerge remote-tracking branch 'tty/tty-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:10:59 +0000 (15:10 +1000)]
Merge remote-tracking branch 'tty/tty-next'

12 years agoMerge remote-tracking branch 'driver-core/driver-core-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:04:00 +0000 (15:04 +1000)]
Merge remote-tracking branch 'driver-core/driver-core-next'

12 years agoMerge remote-tracking branch 'leds/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:02:05 +0000 (15:02 +1000)]
Merge remote-tracking branch 'leds/for-next'

12 years agoMerge remote-tracking branch 'regmap/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 05:00:28 +0000 (15:00 +1000)]
Merge remote-tracking branch 'regmap/for-next'

12 years agoMerge remote-tracking branch 'workqueues/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:44:21 +0000 (14:44 +1000)]
Merge remote-tracking branch 'workqueues/for-next'

Conflicts:
drivers/hid/hid-picolcd.c

12 years agoMerge remote-tracking branch 'xen-two/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:39:41 +0000 (14:39 +1000)]
Merge remote-tracking branch 'xen-two/linux-next'

12 years agoMerge remote-tracking branch 'kvm-ppc/kvm-ppc-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:37:57 +0000 (14:37 +1000)]
Merge remote-tracking branch 'kvm-ppc/kvm-ppc-next'

12 years agoMerge remote-tracking branch 'kvm/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:36:16 +0000 (14:36 +1000)]
Merge remote-tracking branch 'kvm/linux-next'

Conflicts:
arch/s390/include/asm/processor.h

12 years agoMerge remote-tracking branch 'kmemleak/kmemleak'
Stephen Rothwell [Wed, 22 Aug 2012 04:34:33 +0000 (14:34 +1000)]
Merge remote-tracking branch 'kmemleak/kmemleak'

12 years agoMerge remote-tracking branch 'rcu/rcu/next'
Stephen Rothwell [Wed, 22 Aug 2012 04:27:16 +0000 (14:27 +1000)]
Merge remote-tracking branch 'rcu/rcu/next'

Conflicts:
arch/Kconfig
arch/x86/Kconfig
include/linux/sched.h
kernel/rcutree.h
kernel/rcutree_plugin.h

12 years agoMerge remote-tracking branch 'tip/auto-latest'
Stephen Rothwell [Wed, 22 Aug 2012 04:07:45 +0000 (14:07 +1000)]
Merge remote-tracking branch 'tip/auto-latest'

12 years agoMerge remote-tracking branch 'spi-mb/spi-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:06:10 +0000 (14:06 +1000)]
Merge remote-tracking branch 'spi-mb/spi-next'

12 years agoMerge remote-tracking branch 'dt-rh/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:04:09 +0000 (14:04 +1000)]
Merge remote-tracking branch 'dt-rh/for-next'

12 years agoMerge remote-tracking branch 'edac-amd/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:04:03 +0000 (14:04 +1000)]
Merge remote-tracking branch 'edac-amd/for-next'

Conflicts:
Documentation/edac.txt
drivers/edac/amd64_edac.c

12 years agoMerge remote-tracking branch 'edac/linux_next'
Stephen Rothwell [Wed, 22 Aug 2012 04:03:49 +0000 (14:03 +1000)]
Merge remote-tracking branch 'edac/linux_next'

12 years agoMerge remote-tracking branch 'fsnotify/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 04:02:14 +0000 (14:02 +1000)]
Merge remote-tracking branch 'fsnotify/for-next'

Conflicts:
kernel/audit_tree.c

12 years agoMerge remote-tracking branch 'pm/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:44:27 +0000 (13:44 +1000)]
Merge remote-tracking branch 'pm/linux-next'

12 years agoMerge remote-tracking branch 'trivial/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:38:12 +0000 (13:38 +1000)]
Merge remote-tracking branch 'trivial/for-next'

12 years agoMerge remote-tracking branch 'osd/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:36:36 +0000 (13:36 +1000)]
Merge remote-tracking branch 'osd/linux-next'

12 years agoMerge remote-tracking branch 'iommu/next'
Stephen Rothwell [Wed, 22 Aug 2012 03:34:58 +0000 (13:34 +1000)]
Merge remote-tracking branch 'iommu/next'

12 years agoMerge remote-tracking branch 'watchdog/master'
Stephen Rothwell [Wed, 22 Aug 2012 03:33:18 +0000 (13:33 +1000)]
Merge remote-tracking branch 'watchdog/master'

12 years agoMerge remote-tracking branch 'selinux/master'
Stephen Rothwell [Wed, 22 Aug 2012 03:33:12 +0000 (13:33 +1000)]
Merge remote-tracking branch 'selinux/master'

12 years agoMerge remote-tracking branch 'security/next'
Stephen Rothwell [Wed, 22 Aug 2012 03:31:07 +0000 (13:31 +1000)]
Merge remote-tracking branch 'security/next'

12 years agoMerge remote-tracking branch 'regulator/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:29:28 +0000 (13:29 +1000)]
Merge remote-tracking branch 'regulator/for-next'

12 years agoMerge remote-tracking branch 'md/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:27:37 +0000 (13:27 +1000)]
Merge remote-tracking branch 'md/for-next'

12 years agoMerge remote-tracking branch 'slab/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:25:58 +0000 (13:25 +1000)]
Merge remote-tracking branch 'slab/for-next'

12 years agoMerge remote-tracking branch 'kgdb/kgdb-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:24:20 +0000 (13:24 +1000)]
Merge remote-tracking branch 'kgdb/kgdb-next'

12 years agoMerge remote-tracking branch 'mmc/mmc-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:22:40 +0000 (13:22 +1000)]
Merge remote-tracking branch 'mmc/mmc-next'

12 years agoMerge branch 'quilt/device-mapper'
Stephen Rothwell [Wed, 22 Aug 2012 03:20:55 +0000 (13:20 +1000)]
Merge branch 'quilt/device-mapper'

12 years agoMerge remote-tracking branch 'block/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:18:28 +0000 (13:18 +1000)]
Merge remote-tracking branch 'block/for-next'

12 years agoMerge remote-tracking branch 'cgroup/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 03:18:26 +0000 (13:18 +1000)]
Merge remote-tracking branch 'cgroup/for-next'

12 years agoMerge remote-tracking branch 'input/next'
Stephen Rothwell [Wed, 22 Aug 2012 03:16:49 +0000 (13:16 +1000)]
Merge remote-tracking branch 'input/next'

12 years agoMerge branch 'quilt/rr'
Stephen Rothwell [Wed, 22 Aug 2012 03:11:22 +0000 (13:11 +1000)]
Merge branch 'quilt/rr'

Conflicts:
arch/alpha/Kconfig
arch/mips/kernel/module.c
arch/s390/Kconfig
arch/xtensa/Kconfig

12 years agoMerge remote-tracking branch 'sound-asoc/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:27:35 +0000 (12:27 +1000)]
Merge remote-tracking branch 'sound-asoc/for-next'

12 years agoMerge remote-tracking branch 'sound/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:25:52 +0000 (12:25 +1000)]
Merge remote-tracking branch 'sound/for-next'

12 years agoMerge remote-tracking branch 'drm/drm-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:25:49 +0000 (12:25 +1000)]
Merge remote-tracking branch 'drm/drm-next'

12 years agoMerge remote-tracking branch 'crypto/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:24:07 +0000 (12:24 +1000)]
Merge remote-tracking branch 'crypto/master'

12 years agoMerge remote-tracking branch 'l2-mtd/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:22:32 +0000 (12:22 +1000)]
Merge remote-tracking branch 'l2-mtd/master'

12 years agoMerge remote-tracking branch 'mtd/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:20:53 +0000 (12:20 +1000)]
Merge remote-tracking branch 'mtd/master'

12 years agoMerge remote-tracking branch 'bluetooth/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:19:16 +0000 (12:19 +1000)]
Merge remote-tracking branch 'bluetooth/master'

12 years agoMerge remote-tracking branch 'wireless-next/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:17:22 +0000 (12:17 +1000)]
Merge remote-tracking branch 'wireless-next/master'

12 years agoMerge remote-tracking branch 'net-next/master'
Stephen Rothwell [Wed, 22 Aug 2012 02:10:17 +0000 (12:10 +1000)]
Merge remote-tracking branch 'net-next/master'

12 years agoMerge remote-tracking branch 'slave-dma/next'
Stephen Rothwell [Wed, 22 Aug 2012 02:08:40 +0000 (12:08 +1000)]
Merge remote-tracking branch 'slave-dma/next'

12 years agoMerge remote-tracking branch 'target-updates/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:06:59 +0000 (12:06 +1000)]
Merge remote-tracking branch 'target-updates/for-next'

12 years agoMerge remote-tracking branch 'scsi/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:05:17 +0000 (12:05 +1000)]
Merge remote-tracking branch 'scsi/for-next'

Conflicts:
drivers/ata/libata-core.c

12 years agoMerge remote-tracking branch 'dlm/next'
Stephen Rothwell [Wed, 22 Aug 2012 02:03:41 +0000 (12:03 +1000)]
Merge remote-tracking branch 'dlm/next'

12 years agoMerge remote-tracking branch 'ubi/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:02:02 +0000 (12:02 +1000)]
Merge remote-tracking branch 'ubi/linux-next'

12 years agoMerge remote-tracking branch 'thermal/next'
Stephen Rothwell [Wed, 22 Aug 2012 02:00:27 +0000 (12:00 +1000)]
Merge remote-tracking branch 'thermal/next'

12 years agoMerge remote-tracking branch 'cpuidle/cpuidle-next'
Stephen Rothwell [Wed, 22 Aug 2012 02:00:20 +0000 (12:00 +1000)]
Merge remote-tracking branch 'cpuidle/cpuidle-next'

Conflicts:
drivers/cpuidle/coupled.c

12 years agoMerge remote-tracking branch 'libata/NEXT'
Stephen Rothwell [Wed, 22 Aug 2012 01:58:37 +0000 (11:58 +1000)]
Merge remote-tracking branch 'libata/NEXT'

12 years agoMerge remote-tracking branch 'kconfig/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:56:59 +0000 (11:56 +1000)]
Merge remote-tracking branch 'kconfig/for-next'

12 years agoMerge remote-tracking branch 'kbuild/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:56:49 +0000 (11:56 +1000)]
Merge remote-tracking branch 'kbuild/for-next'

12 years agoMerge remote-tracking branch 'v4l-dvb/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:54:55 +0000 (11:54 +1000)]
Merge remote-tracking branch 'v4l-dvb/master'

12 years agoMerge remote-tracking branch 'hwmon-staging/hwmon-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:53:29 +0000 (11:53 +1000)]
Merge remote-tracking branch 'hwmon-staging/hwmon-next'

12 years agoMerge branch 'quilt/jdelvare-hwmon'
Stephen Rothwell [Wed, 22 Aug 2012 01:51:59 +0000 (11:51 +1000)]
Merge branch 'quilt/jdelvare-hwmon'

12 years agoMerge remote-tracking branch 'i2c-embedded/i2c-embedded/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:50:34 +0000 (11:50 +1000)]
Merge remote-tracking branch 'i2c-embedded/i2c-embedded/for-next'

12 years agoMerge branch 'quilt/i2c'
Stephen Rothwell [Wed, 22 Aug 2012 01:49:03 +0000 (11:49 +1000)]
Merge branch 'quilt/i2c'

12 years agoMerge remote-tracking branch 'hid/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:47:33 +0000 (11:47 +1000)]
Merge remote-tracking branch 'hid/for-next'

12 years agoMerge remote-tracking branch 'vfs/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:40:36 +0000 (11:40 +1000)]
Merge remote-tracking branch 'vfs/for-next'

12 years agoMerge remote-tracking branch 'xfs/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:39:00 +0000 (11:39 +1000)]
Merge remote-tracking branch 'xfs/for-next'

12 years agoMerge remote-tracking branch 'ubifs/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:37:33 +0000 (11:37 +1000)]
Merge remote-tracking branch 'ubifs/linux-next'

12 years agoMerge remote-tracking branch 'ocfs2/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:35:57 +0000 (11:35 +1000)]
Merge remote-tracking branch 'ocfs2/linux-next'

12 years agoMerge remote-tracking branch 'nfs/linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:34:24 +0000 (11:34 +1000)]
Merge remote-tracking branch 'nfs/linux-next'

12 years agoMerge remote-tracking branch 'logfs/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:32:55 +0000 (11:32 +1000)]
Merge remote-tracking branch 'logfs/master'

12 years agoMerge remote-tracking branch 'gfs2/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:31:26 +0000 (11:31 +1000)]
Merge remote-tracking branch 'gfs2/master'

12 years agoMerge remote-tracking branch 'ext4/dev'
Stephen Rothwell [Wed, 22 Aug 2012 01:29:56 +0000 (11:29 +1000)]
Merge remote-tracking branch 'ext4/dev'

12 years agoMerge remote-tracking branch 'ext3/for_next'
Stephen Rothwell [Wed, 22 Aug 2012 01:28:30 +0000 (11:28 +1000)]
Merge remote-tracking branch 'ext3/for_next'

12 years agoMerge remote-tracking branch 'cifs/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:27:01 +0000 (11:27 +1000)]
Merge remote-tracking branch 'cifs/for-next'

12 years agoMerge remote-tracking branch 'xtensa/for_next'
Stephen Rothwell [Wed, 22 Aug 2012 01:25:34 +0000 (11:25 +1000)]
Merge remote-tracking branch 'xtensa/for_next'

12 years agoMerge remote-tracking branch 'unicore32/unicore32'
Stephen Rothwell [Wed, 22 Aug 2012 01:24:09 +0000 (11:24 +1000)]
Merge remote-tracking branch 'unicore32/unicore32'

12 years agoMerge remote-tracking branch 'sparc-next/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:22:40 +0000 (11:22 +1000)]
Merge remote-tracking branch 'sparc-next/master'

12 years agoMerge remote-tracking branch 'sh/sh-latest'
Stephen Rothwell [Wed, 22 Aug 2012 01:21:11 +0000 (11:21 +1000)]
Merge remote-tracking branch 'sh/sh-latest'

12 years agoMerge remote-tracking branch 's390/features'
Stephen Rothwell [Wed, 22 Aug 2012 01:19:47 +0000 (11:19 +1000)]
Merge remote-tracking branch 's390/features'

12 years agoMerge remote-tracking branch 'galak/next'
Stephen Rothwell [Wed, 22 Aug 2012 01:17:19 +0000 (11:17 +1000)]
Merge remote-tracking branch 'galak/next'

12 years agoMerge remote-tracking branch 'mpc5xxx/next'
Stephen Rothwell [Wed, 22 Aug 2012 01:15:51 +0000 (11:15 +1000)]
Merge remote-tracking branch 'mpc5xxx/next'

12 years agoMerge remote-tracking branch 'parisc/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:14:24 +0000 (11:14 +1000)]
Merge remote-tracking branch 'parisc/for-next'

12 years agoMerge remote-tracking branch 'mips/mips-for-linux-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:12:51 +0000 (11:12 +1000)]
Merge remote-tracking branch 'mips/mips-for-linux-next'

12 years agoMerge remote-tracking branch 'm68knommu/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:11:25 +0000 (11:11 +1000)]
Merge remote-tracking branch 'm68knommu/for-next'

12 years agoMerge remote-tracking branch 'm68k/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:09:52 +0000 (11:09 +1000)]
Merge remote-tracking branch 'm68k/for-next'

12 years agoMerge remote-tracking branch 'cris/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:08:24 +0000 (11:08 +1000)]
Merge remote-tracking branch 'cris/for-next'

12 years agoMerge remote-tracking branch 'arm-perf/for-next/perf'
Stephen Rothwell [Wed, 22 Aug 2012 01:06:55 +0000 (11:06 +1000)]
Merge remote-tracking branch 'arm-perf/for-next/perf'

12 years agoMerge remote-tracking branch 'arm/for-next'
Stephen Rothwell [Wed, 22 Aug 2012 01:05:28 +0000 (11:05 +1000)]
Merge remote-tracking branch 'arm/for-next'

12 years agoMerge remote-tracking branch 'spi-current/spi/merge'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:53 +0000 (11:03 +1000)]
Merge remote-tracking branch 'spi-current/spi/merge'

12 years agoMerge remote-tracking branch 'devicetree-current/devicetree/merge'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:52 +0000 (11:03 +1000)]
Merge remote-tracking branch 'devicetree-current/devicetree/merge'

12 years agoMerge remote-tracking branch 'ide/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:45 +0000 (11:03 +1000)]
Merge remote-tracking branch 'ide/master'

12 years agoMerge remote-tracking branch 'crypto-current/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:44 +0000 (11:03 +1000)]
Merge remote-tracking branch 'crypto-current/master'

12 years agoMerge remote-tracking branch 'wireless/master'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:40 +0000 (11:03 +1000)]
Merge remote-tracking branch 'wireless/master'

12 years agoMerge remote-tracking branch 'pci-current/for-linus'
Stephen Rothwell [Wed, 22 Aug 2012 01:03:39 +0000 (11:03 +1000)]
Merge remote-tracking branch 'pci-current/for-linus'

12 years agovirtio-blk: Add REQ_FLUSH and REQ_FUA support to bio path
Asias He [Wed, 8 Aug 2012 08:07:05 +0000 (16:07 +0800)]
virtio-blk: Add REQ_FLUSH and REQ_FUA support to bio path

We need to support both REQ_FLUSH and REQ_FUA for bio based path since
it does not get the sequencing of REQ_FUA into REQ_FLUSH that request
based drivers can request.

REQ_FLUSH is emulated by:
A) If the bio has no data to write:
1. Send VIRTIO_BLK_T_FLUSH to device,
2. In the flush I/O completion handler, finish the bio

B) If the bio has data to write:
1. Send VIRTIO_BLK_T_FLUSH to device
2. In the flush I/O completion handler, send the actual write data to device
3. In the write I/O completion handler, finish the bio

REQ_FUA is emulated by:
1. Send the actual write data to device
2. In the write I/O completion handler, send VIRTIO_BLK_T_FLUSH to device
3. In the flush I/O completion handler, finish the bio

Changes in v7:
- Using vbr->flags to trace request type
- Dropped unnecessary struct virtio_blk *vblk parameter
- Reuse struct virtblk_req in bio done function

Cahnges in v6:
- Reworked REQ_FLUSH and REQ_FUA emulatation order

Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Tejun Heo <tj@kernel.org>
Cc: Shaohua Li <shli@kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Asias He <asias@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agovirtio-blk: Add bio-based IO path for virtio-blk
Asias He [Wed, 8 Aug 2012 08:07:04 +0000 (16:07 +0800)]
virtio-blk: Add bio-based IO path for virtio-blk

This patch introduces bio-based IO path for virtio-blk.

Compared to request-based IO path, bio-based IO path uses driver
provided ->make_request_fn() method to bypasses the IO scheduler. It
handles the bio to device directly without allocating a request in block
layer. This reduces the IO path in guest kernel to achieve high IOPS
and lower latency. The downside is that guest can not use the IO
scheduler to merge and sort requests. However, this is not a big problem
if the backend disk in host side uses faster disk device.

When the bio-based IO path is not enabled, virtio-blk still uses the
original request-based IO path, no performance difference is observed.

Using a slow device e.g. normal SATA disk, the bio-based IO path for
sequential read and write are slower than req-based IO path due to lack
of merge in guest kernel. So we make the bio-based path optional.

Performance evaluation:
-----------------------------
1) Fio test is performed in a 8 vcpu guest with ramdisk based guest using
kvm tool.

Short version:
 With bio-based IO path, sequential read/write, random read/write
 IOPS boost         : 28%, 24%, 21%, 16%
 Latency improvement: 32%, 17%, 21%, 16%

Long version:
 With bio-based IO path:
  seq-read  : io=2048.0MB, bw=116996KB/s, iops=233991 , runt= 17925msec
  seq-write : io=2048.0MB, bw=100829KB/s, iops=201658 , runt= 20799msec
  rand-read : io=3095.7MB, bw=112134KB/s, iops=224268 , runt= 28269msec
  rand-write: io=3095.7MB, bw=96198KB/s,  iops=192396 , runt= 32952msec
    clat (usec): min=0 , max=2631.6K, avg=58716.99, stdev=191377.30
    clat (usec): min=0 , max=1753.2K, avg=66423.25, stdev=81774.35
    clat (usec): min=0 , max=2915.5K, avg=61685.70, stdev=120598.39
    clat (usec): min=0 , max=1933.4K, avg=76935.12, stdev=96603.45
  cpu : usr=74.08%, sys=703.84%, ctx=29661403, majf=21354, minf=22460954
  cpu : usr=70.92%, sys=702.81%, ctx=77219828, majf=13980, minf=27713137
  cpu : usr=72.23%, sys=695.37%, ctx=88081059, majf=18475, minf=28177648
  cpu : usr=69.69%, sys=654.13%, ctx=145476035, majf=15867, minf=26176375
 With request-based IO path:
  seq-read  : io=2048.0MB, bw=91074KB/s, iops=182147 , runt= 23027msec
  seq-write : io=2048.0MB, bw=80725KB/s, iops=161449 , runt= 25979msec
  rand-read : io=3095.7MB, bw=92106KB/s, iops=184211 , runt= 34416msec
  rand-write: io=3095.7MB, bw=82815KB/s, iops=165630 , runt= 38277msec
    clat (usec): min=0 , max=1932.4K, avg=77824.17, stdev=170339.49
    clat (usec): min=0 , max=2510.2K, avg=78023.96, stdev=146949.15
    clat (usec): min=0 , max=3037.2K, avg=74746.53, stdev=128498.27
    clat (usec): min=0 , max=1363.4K, avg=89830.75, stdev=114279.68
  cpu : usr=53.28%, sys=724.19%, ctx=37988895, majf=17531, minf=23577622
  cpu : usr=49.03%, sys=633.20%, ctx=205935380, majf=18197, minf=27288959
  cpu : usr=55.78%, sys=722.40%, ctx=101525058, majf=19273, minf=28067082
  cpu : usr=56.55%, sys=690.83%, ctx=228205022, majf=18039, minf=26551985

2) Fio test is performed in a 8 vcpu guest with Fusion-IO based guest using
kvm tool.

Short version:
 With bio-based IO path, sequential read/write, random read/write
 IOPS boost         : 11%, 11%, 13%, 10%
 Latency improvement: 10%, 10%, 12%, 10%
Long Version:
 With bio-based IO path:
  read : io=2048.0MB, bw=58920KB/s, iops=117840 , runt= 35593msec
  write: io=2048.0MB, bw=64308KB/s, iops=128616 , runt= 32611msec
  read : io=3095.7MB, bw=59633KB/s, iops=119266 , runt= 53157msec
  write: io=3095.7MB, bw=62993KB/s, iops=125985 , runt= 50322msec
    clat (usec): min=0 , max=1284.3K, avg=128109.01, stdev=71513.29
    clat (usec): min=94 , max=962339 , avg=116832.95, stdev=65836.80
    clat (usec): min=0 , max=1846.6K, avg=128509.99, stdev=89575.07
    clat (usec): min=0 , max=2256.4K, avg=121361.84, stdev=82747.25
  cpu : usr=56.79%, sys=421.70%, ctx=147335118, majf=21080, minf=19852517
  cpu : usr=61.81%, sys=455.53%, ctx=143269950, majf=16027, minf=24800604
  cpu : usr=63.10%, sys=455.38%, ctx=178373538, majf=16958, minf=24822612
  cpu : usr=62.04%, sys=453.58%, ctx=226902362, majf=16089, minf=23278105
 With request-based IO path:
  read : io=2048.0MB, bw=52896KB/s, iops=105791 , runt= 39647msec
  write: io=2048.0MB, bw=57856KB/s, iops=115711 , runt= 36248msec
  read : io=3095.7MB, bw=52387KB/s, iops=104773 , runt= 60510msec
  write: io=3095.7MB, bw=57310KB/s, iops=114619 , runt= 55312msec
    clat (usec): min=0 , max=1532.6K, avg=142085.62, stdev=109196.84
    clat (usec): min=0 , max=1487.4K, avg=129110.71, stdev=114973.64
    clat (usec): min=0 , max=1388.6K, avg=145049.22, stdev=107232.55
    clat (usec): min=0 , max=1465.9K, avg=133585.67, stdev=110322.95
  cpu : usr=44.08%, sys=590.71%, ctx=451812322, majf=14841, minf=17648641
  cpu : usr=48.73%, sys=610.78%, ctx=418953997, majf=22164, minf=26850689
  cpu : usr=45.58%, sys=581.16%, ctx=714079216, majf=21497, minf=22558223
  cpu : usr=48.40%, sys=599.65%, ctx=656089423, majf=16393, minf=23824409

3) Fio test is performed in a 8 vcpu guest with normal SATA based guest
using kvm tool.

Short version:
 With bio-based IO path, sequential read/write, random read/write
 IOPS boost         : -10%, -10%, 4.4%, 0.5%
 Latency improvement: -12%, -15%, 2.5%, 0.8%
Long Version:
 With bio-based IO path:
  read : io=124812KB, bw=36537KB/s, iops=9060 , runt=  3416msec
  write: io=169180KB, bw=24406KB/s, iops=6065 , runt=  6932msec
  read : io=256200KB, bw=2089.3KB/s, iops=520 , runt=122630msec
  write: io=257988KB, bw=1545.7KB/s, iops=384 , runt=166910msec
    clat (msec): min=1 , max=1527 , avg=28.06, stdev=89.54
    clat (msec): min=2 , max=344 , avg=41.12, stdev=38.70
    clat (msec): min=8 , max=1984 , avg=490.63, stdev=207.28
    clat (msec): min=33 , max=4131 , avg=659.19, stdev=304.71
  cpu          : usr=4.85%, sys=17.15%, ctx=31593, majf=0, minf=7
  cpu          : usr=3.04%, sys=11.45%, ctx=39377, majf=0, minf=0
  cpu          : usr=0.47%, sys=1.59%, ctx=262986, majf=0, minf=16
  cpu          : usr=0.47%, sys=1.46%, ctx=337410, majf=0, minf=0

 With request-based IO path:
  read : io=150120KB, bw=40420KB/s, iops=10037 , runt=  3714msec
  write: io=194932KB, bw=27029KB/s, iops=6722 , runt=  7212msec
  read : io=257136KB, bw=2001.1KB/s, iops=498 , runt=128443msec
  write: io=258276KB, bw=1537.2KB/s, iops=382 , runt=168028msec
    clat (msec): min=1 , max=1542 , avg=24.84, stdev=32.45
    clat (msec): min=3 , max=628 , avg=35.62, stdev=39.71
    clat (msec): min=8 , max=2540 , avg=503.28, stdev=236.97
    clat (msec): min=41 , max=4398 , avg=653.88, stdev=302.61
  cpu          : usr=3.91%, sys=15.75%, ctx=26968, majf=0, minf=23
  cpu          : usr=2.50%, sys=10.56%, ctx=19090, majf=0, minf=0
  cpu          : usr=0.16%, sys=0.43%, ctx=20159, majf=0, minf=16
  cpu          : usr=0.18%, sys=0.53%, ctx=81364, majf=0, minf=0

How to use:
-----------------------------
Add 'virtio_blk.use_bio=1' to kernel cmdline or 'modprobe virtio_blk
use_bio=1' to enable ->make_request_fn() based I/O path.

Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Tejun Heo <tj@kernel.org>
Cc: Shaohua Li <shli@kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
Signed-off-by: Asias He <asias@redhat.com>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agoblock: Add blk_bio_map_sg() helper
Asias He [Thu, 2 Aug 2012 21:42:04 +0000 (23:42 +0200)]
block: Add blk_bio_map_sg() helper

Add a helper to map a bio to a scatterlist, modelled after
blk_rq_map_sg.

This helper is useful for any driver that wants to create
a scatterlist from its ->make_request_fn method.

Changes in v2:
 - Use __blk_segment_map_sg to avoid duplicated code
 - Add cocbook style function comment

Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Tejun Heo <tj@kernel.org>
Cc: Shaohua Li <shli@kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
Signed-off-by: Asias He <asias@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agoblock: Introduce __blk_segment_map_sg() helper
Asias He [Thu, 2 Aug 2012 21:42:03 +0000 (23:42 +0200)]
block: Introduce __blk_segment_map_sg() helper

Split the mapping code in blk_rq_map_sg() to a helper
__blk_segment_map_sg(), so that other mapping function, e.g.
blk_bio_map_sg(), can share the code.

Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Tejun Heo <tj@kernel.org>
Cc: Shaohua Li <shli@kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Suggested-by: Jens Axboe <axboe@kernel.dk>
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Asias He <asias@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agotools: Add guest trace agent as a user tool
Yoshihiro YUNOMAE [Thu, 9 Aug 2012 12:31:30 +0000 (21:31 +0900)]
tools: Add guest trace agent as a user tool

This patch adds a user tool, "trace agent" for sending trace data of a guest to
a Host in low overhead. This agent has the following functions:
 - splice a page of ring-buffer to read_pipe without memory copying
 - splice the page from write_pipe to virtio-console without memory copying
 - write trace data to stdout by using -o option
 - controlled by start/stop orders from a Host

Changes in v2:
 - Cleanup (change fprintf() to pr_err() and an include guard)

Signed-off-by: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agovirtio/console: Allocate scatterlist according to the current pipe size
Masami Hiramatsu [Thu, 9 Aug 2012 12:31:20 +0000 (21:31 +0900)]
virtio/console: Allocate scatterlist according to the current pipe size

Allocate scatterlist according to the current pipe size.
This allows splicing bigger buffer if the pipe size has
been changed by fcntl.

Changes in v2:
 - Just a minor fix for avoiding a confliction with previous patch.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>