1. 10 Jul, 2014 37 commits
  2. 01 Jul, 2014 3 commits
    • Ming Lei's avatar
      block: virtio-blk: support multi virt queues per virtio-blk device · 6a27b656
      Ming Lei authored
      Firstly this patch supports more than one virtual queues for virtio-blk
      device.
      
      Secondly this patch maps the virtual queue to blk-mq's hardware queue.
      
      With this approach, both scalability and performance can be improved.
      Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      6a27b656
    • Ming Lei's avatar
      include/uapi/linux/virtio_blk.h: introduce feature of VIRTIO_BLK_F_MQ · cb553215
      Ming Lei authored
      Current virtio-blk spec only supports one virtual queue for transfering
      data between VM and host, and inside VM all kinds of operations on
      the virtual queue needs to hold one lock, so cause below problems:
      
      	- bad scalability
      	- bad throughput
      
      This patch requests to introduce feature of VIRTIO_BLK_F_MQ
      so that more than one virtual queues can be used to virtio-blk
      device, then above problems can be solved or eased.
      Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      cb553215
    • Douglas Gilbert's avatar
      block SG_IO: add SG_FLAG_Q_AT_HEAD flag · d1515613
      Douglas Gilbert authored
      After the SG_IO ioctl was copied into the block layer and
      later into the bsg driver, subtle differences emerged.
      
      One difference is the way injected commands are queued through
      the block layer (i.e. this is not SCSI device queueing nor SATA
      NCQ). Summarizing:
        - SG_IO on block layer device: blk_exec*(at_head=false)
        - sg device SG_IO: at_head=true
        - bsg device SG_IO: at_head=true
      
      Some time ago Boaz Harrosh introduced a sg v4 flag called
      BSG_FLAG_Q_AT_TAIL to override the bsg driver default. A
      recent patch titled: "sg: add SG_FLAG_Q_AT_TAIL flag"
      allowed the sg driver default to be overridden. This patch
      allows a SG_IO ioctl sent to a block layer device to have
      its default overridden.
      
      ChangeLog:
          - introduce SG_FLAG_Q_AT_HEAD flag in sg.h to cause
            commands that are injected via a block layer
            device SG_IO ioctl to set at_head=true
          - make comments clearer about queueing in sg.h since the
            header is used both by the sg device and block layer
            device implementations of the SG_IO ioctl.
          - introduce BSG_FLAG_Q_AT_HEAD in bsg.h for compatibility
            (it does nothing) and update comments.
      Signed-off-by: default avatarDouglas Gilbert <dgilbert@interlog.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      d1515613