1. 08 5月, 2007 5 次提交
    • J
      uml: batch I/O requests · a0044bdf
      Jeff Dike 提交于
      Send as many I/O requests to the I/O thread as possible, even though it will
      still only handle one at a time.  This provides an opportunity to reduce
      latency by starting one request before the previous one has been finished in
      the driver.
      
      Request handling is somewhat modernized by requesting sg pieces of a request
      and handling them separately, finishing off the entire request after all the
      pieces are done.
      
      When a request queue stalls, normally because its pipe to the I/O thread is
      full, it is put on the restart list.  This list is processed by starting up
      the queues on it whenever there is some indication that progress might be
      possible again.  Currently, this happens in the driver interrupt routine.
      Some requests have been finished, so there is likely to be room in the pipe
      again.
      
      This almost doubles throughput when copying data between devices, but made no
      noticable difference on anything else I tried.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a0044bdf
    • J
      uml: start fixing os_read_file and os_write_file · 3d564047
      Jeff Dike 提交于
      This patch starts the removal of a very old, very broken piece of code.  This
      stems from the problem of passing a userspace buffer into read() or write() on
      the host.  If that buffer had not yet been faulted in, read and write will
      return -EFAULT.
      
      To avoid this problem, the solution was to fault the buffer in before the
      system call by touching the pages that hold the buffer by doing a copy-user of
      a byte to each page.  This is obviously bogus, but it does usually work, in tt
      mode, since the kernel and process are in the same address space and userspace
      addresses can be accessed directly in the kernel.
      
      In skas mode, where the kernel and process are in separate address spaces, it
      is completely bogus because the userspace address, which is invalid in the
      kernel, is passed into the system call instead of the corresponding physical
      address, which would be valid.  Here, it appears that this code, on every host
      read() or write(), tries to fault in a random process page.  This doesn't seem
      to cause any correctness problems, but there is a performance impact.  This
      patch, and the ones following, result in a 10-15% performance gain on a kernel
      build.
      
      This code can't be immediately tossed out because when it is, you can't log
      in.  Apparently, there is some code in the console driver which depends on
      this somehow.
      
      However, we can start removing it by switching the code which does I/O using
      kernel addresses to using plain read() and write().  This patch introduces
      os_read_file_k and os_write_file_k for use with kernel buffers and converts
      all call locations which use obvious kernel buffers to use them.  These
      include I/O using buffers which are local variables which are on the stack or
      kmalloc-ed.  Later patches will handle the less obvious cases, followed by a
      mass conversion back to the original interface.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3d564047
    • J
      uml: drivers get release methods · 2e3f5251
      Jeff Dike 提交于
      Define release methods for the ubd and net drivers.  They contain as much of
      the remove methods as make sense.  All error checking must have already been
      done as well as anything else that might be holding a reference on the device
      kobject.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2e3f5251
    • J
      uml: remove user_util.h · 9218b171
      Jeff Dike 提交于
      user_util.h isn't needed any more, so delete it and remove all includes of it.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9218b171
    • J
      uml: handle block device hotplug errors · b47d2deb
      Jeff Dike 提交于
      If a disk fails to open, i.e.  its host file doesn't exist, it won't be
      removable because the hot-unplug code checks the existence of its gendisk.
      This won't exist because it is only allocated for successfully opened disks.
      Thus, a typo on the command line can result in a unusable and unfixable disk.
      
      This is fixed by freeing the gendisk if it's there, but not letting that
      affect the removal.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b47d2deb
  2. 29 3月, 2007 1 次提交
  3. 12 2月, 2007 5 次提交
  4. 01 11月, 2006 11 次提交
  5. 09 10月, 2006 1 次提交
  6. 04 10月, 2006 1 次提交
  7. 01 10月, 2006 1 次提交
    • 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
  8. 30 9月, 2006 1 次提交
  9. 11 7月, 2006 1 次提交
  10. 03 7月, 2006 1 次提交
  11. 27 6月, 2006 5 次提交
  12. 01 4月, 2006 1 次提交
  13. 28 3月, 2006 1 次提交
  14. 25 2月, 2006 1 次提交
  15. 19 1月, 2006 2 次提交
  16. 12 1月, 2006 1 次提交
  17. 09 1月, 2006 1 次提交
    • C
      [PATCH] Add block_device_operations.getgeo block device method · a885c8c4
      Christoph Hellwig 提交于
      HDIO_GETGEO is implemented in most block drivers, and all of them have to
      duplicate the code to copy the structure to userspace, as well as getting
      the start sector.  This patch moves that to common code [1] and adds a
      ->getgeo method to fill out the raw kernel hd_geometry structure.  For many
      drivers this means ->ioctl can go away now.
      
      [1] the s390 block drivers are odd in this respect.  xpram sets ->start
          to 4 always which seems more than odd, and the dasd driver shifts
          the start offset around, probably because of it's non-standard
          sector size.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Cc: Jens Axboe <axboe@suse.de>
      Cc: <mike.miller@hp.com>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Paolo Giarrusso <blaisorblade@yahoo.it>
      Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
      Cc: Neil Brown <neilb@cse.unsw.edu.au>
      Cc: Markus Lidel <Markus.Lidel@shadowconnect.com>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: James Bottomley <James.Bottomley@steeleye.com>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a885c8c4