1. 30 4月, 2007 1 次提交
  2. 12 2月, 2007 1 次提交
  3. 19 12月, 2006 2 次提交
  4. 12 12月, 2006 1 次提交
    • B
      [PATCH] remove blk_queue_activity_fn · 2b02a179
      Boaz Harrosh 提交于
      While working on bidi support at struct request level
      I have found that blk_queue_activity_fn is actually never used.
      The only user is in ide-probe.c with this code:
      
      	/* enable led activity for disk drives only */
      	if (drive->media == ide_disk && hwif->led_act)
      		blk_queue_activity_fn(q, hwif->led_act, drive);
      
      And led_act is never initialized anywhere.
      (Looking back at older kernels it was used in the PPC arch, but was removed around 2.6.18)
      Unless it is all for future use off course.
      (this patch is against linux-2.6-block.git as off 2006/12/4)
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      2b02a179
  5. 01 12月, 2006 1 次提交
  6. 21 10月, 2006 2 次提交
  7. 12 10月, 2006 1 次提交
  8. 05 10月, 2006 1 次提交
  9. 01 10月, 2006 16 次提交
    • A
      [PATCH] CONFIG_BLOCK: blk_congestion_wait() fix · bcfd8d36
      Andrew Morton 提交于
      Don't just do nothing: it'll cause busywaits all over writeback and page
      reclaim.
      
      For now, take a fixed-length nap.  Will improve when NFS starts waking up
      throttled processes.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      bcfd8d36
    • D
      [PATCH] BLOCK: Make it possible to disable the block layer [try #6] · 9361401e
      David Howells 提交于
      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: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      9361401e
    • J
      [PATCH] Allow file systems to differentiate between data and meta reads · 5404bc7a
      Jens Axboe 提交于
      We can use this information for making more intelligent priority
      decisions, and it will also be useful for blktrace.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      5404bc7a
    • J
      [PATCH] Add blk_start_queueing() helper · dc72ef4a
      Jens Axboe 提交于
      CFQ implements this on its own now, but it's really block layer
      knowledge. Tells a device queue to start dispatching requests to
      the driver, taking care to unplug if needed. Also fixes the issue
      where as/cfq will invoke a stopped queue, which we really don't
      want.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      dc72ef4a
    • J
      [PATCH] Make sure all block/io scheduler setups are node aware · b5deef90
      Jens Axboe 提交于
      Some were kmalloc_node(), some were still kmalloc(). Change them all to
      kmalloc_node().
      Signed-off-by: NJens Axboe <axboe@suse.de>
      b5deef90
    • J
      a3b05e8f
    • J
      [PATCH] cfq-iosched: kill cfq_exit_lock · fc46379d
      Jens Axboe 提交于
      cfq_exit_lock is protecting two things now:
      
      - The per-ioc rbtree of cfq_io_contexts
      
      - The per-cfqd linked list of cfq_io_contexts
      
      The per-cfqd linked list can be protected by the queue lock, as it is (by
      definition) per cfqd as the queue lock is.
      
      The per-ioc rbtree is mainly used and updated by the process itself only.
      The only outside use is the io priority changing. If we move the
      priority changing to not browsing the rbtree, we can remove any locking
      from the rbtree updates and lookup completely. Let the sys_ioprio syscall
      just mark processes as having the iopriority changed and lazily update
      the private cfq io contexts the next time io is queued, and we can
      remove this locking as well.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      fc46379d
    • J
      [PATCH] struct request: shrink and optimize some more · e6a1c874
      Jens Axboe 提交于
      Move some members around and unionize completion_data and rb_node since
      they cannot ever be used at the same time.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      e6a1c874
    • J
      [PATCH] Remove ->rq_status from struct request · cdd60262
      Jens Axboe 提交于
      After Christophs SCSI change, the only usage left is RQ_ACTIVE
      and RQ_INACTIVE. The block layer sets RQ_INACTIVE right before freeing
      the request, so any check for RQ_INACTIVE in a driver is a bug and
      indicates use-after-free.
      
      So kill/clean the remaining users, straight forward.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      cdd60262
    • J
      [PATCH] Remove struct request_list from struct request · 49171e5c
      Jens Axboe 提交于
      It is always identical to &q->rq, and we only use it for detecting
      whether this request came out of our mempool or not. So replace it
      with an additional ->flags bit flag.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      49171e5c
    • J
      [PATCH] Remove ->waiting member from struct request · c00895ab
      Jens Axboe 提交于
      As the comments indicates in blkdev.h, we can fold it into ->end_io_data
      usage as that is really what ->waiting is. Fixup the users of
      blk_end_sync_rq().
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      c00895ab
    • J
      [PATCH] Add one more pointer to struct request for IO scheduler usage · ff7d145f
      Jens Axboe 提交于
      Then we have enough room in the request to get rid of the dynamic
      allocations in CFQ/AS.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      ff7d145f
    • J
      [PATCH] as-iosched: remove arq->is_sync member · 9e2585a8
      Jens Axboe 提交于
      We can track this in struct request.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      Signed-off-by: NNick Piggin <npiggin@suse.de>
      9e2585a8
    • J
      [PATCH] elevator: abstract out the rbtree sort handling · 2e662b65
      Jens Axboe 提交于
      The rbtree sort/lookup/reposition logic is mostly duplicated in
      cfq/deadline/as, so move it to the elevator core. The io schedulers
      still provide the actual rb root, as we don't want to impose any sort
      of specific handling on the schedulers.
      
      Introduce the helpers and rb_node in struct request to help migrate the
      IO schedulers.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      2e662b65
    • J
      [PATCH] elevator: move the backmerging logic into the elevator core · 9817064b
      Jens Axboe 提交于
      Right now, every IO scheduler implements its own backmerging (except for
      noop, which does no merging). That results in duplicated code for
      essentially the same operation, which is never a good thing. This patch
      moves the backmerging out of the io schedulers and into the elevator
      core. We save 1.6kb of text and as a bonus get backmerging for noop as
      well. Win-win!
      Signed-off-by: NJens Axboe <axboe@suse.de>
      9817064b
    • J
      [PATCH] Split struct request ->flags into two parts · 4aff5e23
      Jens Axboe 提交于
      Right now ->flags is a bit of a mess: some are request types, and
      others are just modifiers. Clean this up by splitting it into
      ->cmd_type and ->cmd_flags. This allows introduction of generic
      Linux block message types, useful for sending generic Linux commands
      to block devices.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      4aff5e23
  10. 30 9月, 2006 1 次提交
  11. 23 9月, 2006 1 次提交
  12. 31 8月, 2006 1 次提交
  13. 23 6月, 2006 3 次提交
  14. 11 6月, 2006 1 次提交
    • C
      [SCSI] remove RQ_SCSI_* flags · 8d7feac3
      Christoph Hellwig 提交于
      The RQ_SCSI_* flags are a vestiage of a long past history.  The EH code
      still sets them but we never make use of that information.  The other
      users is pluto.c which never had a chance to work but needs to be kept
      compiling to keep Davem happy, so copy over the definition there.
      
      We could probably get rid of RQ_ACTIVE/RQ_INACTIVE aswell with some
      work, there's only two more or less bogus looking uses in ubd and scsi.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      8d7feac3
  15. 26 4月, 2006 1 次提交
  16. 13 4月, 2006 1 次提交
    • C
      [SCSI] unify SCSI_IOCTL_SEND_COMMAND implementations · 21b2f0c8
      Christoph Hellwig 提交于
      We currently have two implementations of this obsolete ioctl, one in
      the block layer and one in the scsi code.  Both of them have drawbacks.
      
      This patch kills the scsi layer version after updating the block version
      with the missing bits:
      
       - argument checking
       - use scatterlist I/O
       - set number of retries based on the submitted command
      
      This is the last user of non-S/G I/O except for the gdth driver, so
      getting this in ASAP and through the scsi tree would be nie to kill
      the non-S/G I/O path.  Jens, what do you think about adding a check
      for non-S/G I/O in the midlayer?
      
      Thanks to  Or Gerlitz for testing this patch.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      21b2f0c8
  17. 28 3月, 2006 2 次提交
    • J
      [BLOCK] cfq-iosched: seek and async performance fixes · 206dc69b
      Jens Axboe 提交于
      Detect whether a given process is seeky and if so disable (mostly) the
      idle window if it is. We still allow just a little idle time, just enough
      to allow that process to submit a new request. That is needed to maintain
      fairness across priority groups.
      
      In some cases, we could setup several async queues. This is not optimal
      from a performance POV, since we want all async io in one queue to perform
      good sorting on it. It also impacted sync queues, as async io got too much
      slice time.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      206dc69b
    • J
      [PATCH] [BLOCK] cfq-iosched: change cfq io context linking from list to tree · e2d74ac0
      Jens Axboe 提交于
      On setups with many disks, we spend a considerable amount of time
      looking up the process-disk mapping on each queue of io. Testing with
      a NULL based block driver, this costs 40-50% reduction in throughput
      for 1000 disks.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      e2d74ac0
  18. 24 3月, 2006 1 次提交
  19. 19 3月, 2006 2 次提交