1. 25 Dec, 2015 2 commits
    • Arianna Avanzini's avatar
      block: cgroups, kconfig, build bits for BFQ-v7r8-3.4 · 1cf4ee3b
      Arianna Avanzini authored
      
      Update Kconfig.iosched and do the related Makefile changes to include
      kernel configuration options for BFQ. Also add the bfqio controller
      to the cgroups subsystem.
      Signed-off-by: default avatarPaolo Valente <paolo.valente@unimore.it>
      Signed-off-by: default avatarArianna Avanzini <avanzini.arianna@gmail.com>
      1cf4ee3b
    • Shaohua Li's avatar
      block: fiops ioscheduler core · 9d13807d
      Shaohua Li authored
      
      FIOPS (Fair IOPS) ioscheduler is IOPS based ioscheduler, so only targets
      for drive without I/O seek. It's quite similar like CFQ, but the dispatch
      decision is made according to IOPS instead of slice.
      
      The algorithm is simple. Drive has a service tree, and each task lives in
      the tree. The key into the tree is called vios (virtual I/O). Every request
      has vios, which is calculated according to its ioprio, request size and so
      on. Task's vios is the sum of vios of all requests it dispatches. FIOPS
      always selects task with minimum vios in the service tree and let the task
      dispatch request. The dispatched request's vios is then added to the task's
      vios and the task is repositioned in the sevice tree.
      
      Unlike CFQ, FIOPS doesn't have separate sync/async queues, because with I/O
      less writeback, usually a task can only dispatch either sync or async requests.
      Bias read or write request can still be done with read/write scale.
      
      One issue is if workload iodepth is lower than drive queue_depth, IOPS
      share of a task might not be strictly according to its priority, request
      size and so on. In this case, the drive is in idle actually. Solving the
      problem need make drive idle, so impact performance. I believe CFQ isn't
      completely fair between tasks in such case too.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops read/write request scale
      
      read/write speed of Flash based storage usually is different. For example,
      in my SSD maxium thoughput of read is about 3 times faster than that of
      write. Add a scale to differenate read and write. Also add a tunable, so
      user can assign different scale for read and write.
      
      By default, the scale is 1:1, which means the scale is a noop.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops sync/async scale
      
      CFQ gives 2.5 times more share to sync workload. This matches CFQ.
      
      Note this is different with the read/write scale. We have 3 types of
      requests:
      1. read
      2. sync write
      3. write
      CFQ doesn't differentitate type 1 and 2, but request cost of 1 and 2
      are usually different for flash based storage. So we have both sync/async
      and read/write scale here.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops add ioprio support
      
      Add CFQ-like ioprio support. Priority A will get 20% more share than priority
      A+1, which matches CFQ.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops preserve vios key for deep queue depth workload
      
      If the task has running request, even it's added into service tree newly,
      we preserve its vios key, so it will not lost its share. This should work
      for task driving big queue depth. For single depth task, there is no approach
      to preserve its vios key.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops bias sync workload
      
      If there are async requests running, delay async workload. Otherwise
      async workload (usually very deep iodepth) will use all queue iodepth
      and later sync requests will get long delayed. The idea is from CFQ.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      
      block: fiops add some trace information
      
      Add some trace information, which is helpful when I do debugging.
      
      Change-Id: I971fcef95e7fdb6360b0e07cffefc0b51a6fbbc0
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      9d13807d
  2. 19 Dec, 2012 1 commit
  3. 22 Nov, 2012 1 commit
    • Maya Erez's avatar
      mmc: Enable eMMC unit-tests · 58e59c7d
      Maya Erez authored
      
      Enable the compilation of eMMC4.5 unit-tests, required by APT team.
      This will allow the APT team to test the storage activity on released
      builds.
      The storage tests are disabled in normal operation and in order to
      activate them a test I/O scheduler should be chosen and the test should
      be triggered via debugfs. Therefore they have no effect on normal eMMC
      driver operation.
      
      Change-Id: I179c567f67cc8fab9ed1edab8246483de18bc76a
      Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
      58e59c7d
  4. 20 Sep, 2012 1 commit
  5. 27 Jun, 2012 1 commit
    • Maya Erez's avatar
      block: Add test-iosched scheduler · 6018155a
      Maya Erez authored
      
      The test scheduler allows testing a block device by dispatching
      specific requests according to the test case and declare PASS/FAIL
      according to the requests completion error code
      
      Change-Id: Ief91f9fed6e3c3c75627d27264d5252ea14f10ad
      Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
      6018155a
  6. 26 Apr, 2010 1 commit
    • Vivek Goyal's avatar
      blk-cgroup: config options re-arrangement · afc24d49
      Vivek Goyal authored
      
      This patch fixes few usability and configurability issues.
      
      o All the cgroup based controller options are configurable from
        "Genral Setup/Control Group Support/" menu. blkio is the only exception.
        Hence make this option visible in above menu and make it configurable from
        there to bring it inline with rest of the cgroup based controllers.
      
      o Get rid of CONFIG_DEBUG_CFQ_IOSCHED.
      
        This option currently does two things.
      
        - Enable printing of cgroup paths in blktrace
        - Enables CONFIG_DEBUG_BLK_CGROUP, which in turn displays additional stat
          files in cgroup.
      
        If we are using group scheduling, blktrace data is of not really much use
        if cgroup information is not present. To get this data, currently one has to
        also enable CONFIG_DEBUG_CFQ_IOSCHED, which in turn brings the overhead of
        all the additional debug stat files which is not desired.
      
        Hence, this patch moves printing of cgroup paths under
        CONFIG_CFQ_GROUP_IOSCHED.
      
        This allows us to get rid of CONFIG_DEBUG_CFQ_IOSCHED completely. Now all
        the debug stat files are controlled only by CONFIG_DEBUG_BLK_CGROUP which
        can be enabled through config menu.
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Acked-by: default avatarDivyesh Shah <dpshah@google.com>
      Reviewed-by: default avatarGui Jianfeng <guijianfeng@cn.fujitsu.com>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      afc24d49
  7. 12 Mar, 2010 1 commit
    • Ben Blum's avatar
      cgroups: blkio subsystem as module · 67523c48
      Ben Blum authored
      
      Modify the Block I/O cgroup subsystem to be able to be built as a module.
      As the CFQ disk scheduler optionally depends on blk-cgroup, config options
      in block/Kconfig, block/Kconfig.iosched, and block/blk-cgroup.h are
      enhanced to support the new module dependency.
      Signed-off-by: default avatarBen Blum <bblum@andrew.cmu.edu>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Paul Menage <menage@google.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      67523c48
  8. 04 Dec, 2009 2 commits
  9. 03 Dec, 2009 3 commits
  10. 03 Oct, 2009 2 commits
  11. 17 Feb, 2007 1 commit
  12. 30 Sep, 2006 1 commit
    • David Howells's avatar
      [PATCH] BLOCK: Make it possible to disable the block layer [try #6] · 9361401e
      David Howells authored
      
      Make it possible to disable the block layer.  Not all embedded devices require
      it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
      the block layer to be present.
      
      This patch does the following:
      
       (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
           support.
      
       (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
           an item that uses the block layer.  This includes:
      
           (*) Block I/O tracing.
      
           (*) Disk partition code.
      
           (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.
      
           (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the
           	 block layer to do scheduling.  Some drivers that use SCSI facilities -
           	 such as USB storage - end up disabled indirectly from this.
      
           (*) Various block-based device drivers, such as IDE and the old CDROM
           	 drivers.
      
           (*) MTD blockdev handling and FTL.
      
           (*) JFFS - which uses set_bdev_super(), something it could avoid doing by
           	 taking a leaf out of JFFS2's book.
      
       (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
           linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,
           however, still used in places, and so is still available.
      
       (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
           parts of linux/fs.h.
      
       (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.
      
       (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.
      
       (*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
           is not enabled.
      
       (*) fs/no-block.c is created to hold out-of-line stubs and things that are
           required when CONFIG_BLOCK is not set:
      
           (*) Default blockdev file operations (to give error ENODEV on opening).
      
       (*) Makes some /proc changes:
      
           (*) /proc/devices does not list any blockdevs.
      
           (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.
      
       (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.
      
       (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
           given command other than Q_SYNC or if a special device is specified.
      
       (*) In init/do_mounts.c, no reference is made to the blockdev routines if
           CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.
      
       (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
           error ENOSYS by way of cond_syscall if so).
      
       (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
           CONFIG_BLOCK is not set, since they can't then happen.
      Signed-Off-By: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      9361401e
  13. 23 Jun, 2006 1 commit
  14. 04 Nov, 2005 2 commits
  15. 30 Oct, 2005 1 commit
  16. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4