1. 04 1月, 2012 1 次提交
  2. 09 5月, 2011 1 次提交
  3. 17 6月, 2010 1 次提交
  4. 22 5月, 2010 1 次提交
    • T
      block,ide: simplify bdops->set_capacity() to ->unlock_native_capacity() · c3e33e04
      Tejun Heo 提交于
      bdops->set_capacity() is unnecessarily generic.  All that's required
      is a simple one way notification to lower level driver telling it to
      try to unlock native capacity.  There's no reason to pass in target
      capacity or return the new capacity.  The former is always the
      inherent native capacity and the latter can be handled via the usual
      device resize / revalidation path.  In fact, the current API is always
      used that way.
      
      Replace ->set_capacity() with ->unlock_native_capacity() which take
      only @disk and doesn't return anything.  IDE which is the only current
      user of the API is converted accordingly.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      c3e33e04
  5. 15 4月, 2010 1 次提交
  6. 01 4月, 2010 1 次提交
    • H
      ide: Requeue request after DMA timeout · 6072f749
      Herbert Xu 提交于
      I noticed that my KVM virtual machines were experiencing IDE
      issues resulting in processes stuck on waiting for buffers to
      complete.
      
      The root cause is of course race conditions in the ancient qemu
      backend that I'm using.  However, the fact that the guest isn't
      recovering is a bug.
      
      I've tracked it down to the change made last year to dequeue
      requests at the start rather than at the end in the IDE layer.
      
      commit 8f6205cd
      Author: Tejun Heo <tj@kernel.org>
      Date:   Fri May 8 11:53:59 2009 +0900
      
          ide: dequeue in-flight request
      
      The problem is that the function ide_dma_timeout_retry does not
      requeue the current request, causing one request to be lost for
      each DMA timeout.
      
      This patch fixes this by requeueing the request.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6072f749
  7. 19 1月, 2010 5 次提交
  8. 03 12月, 2009 1 次提交
  9. 02 9月, 2009 1 次提交
  10. 08 8月, 2009 2 次提交
  11. 30 6月, 2009 1 次提交
  12. 26 6月, 2009 1 次提交
  13. 24 6月, 2009 1 次提交
    • B
      ide: relax DMA info validity checking · 346c17a6
      Bartlomiej Zolnierkiewicz 提交于
      There are some broken devices that report multiple DMA xfer modes
      enabled at once (ATA spec doesn't allow it) but otherwise work fine
      with DMA so just delete ide_id_dma_bug().
      
      [ As discovered by detective work by Frans and Bart, due to how
        handling of the ID block was handled before commit c4199930
        ("ide-iops: only clear DMA words on setting DMA mode") this
        check was always seeing zeros in the fields or other similar
        garbage.  Therefore this check wasn't actually checking anything.
        Now that the tests actually check the real bits, all we see are
        devices that trigger the check yet work perfectly fine, therefore
        killing this useless check is the best thing to do. -DaveM ]
      Reported-by: NFrans Pop <elendil@planet.nl>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      346c17a6
  14. 16 6月, 2009 4 次提交
  15. 07 6月, 2009 4 次提交
    • B
      ide: add IDE_DFLAG_NIEN_QUIRK device flag · 734affdc
      Bartlomiej Zolnierkiewicz 提交于
      Add IDE_DFLAG_NIEN_QUIRK device flag and use it instead of
      drive->quirk_list.
      
      There should be no functional changes caused by this patch.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      734affdc
    • B
      ide: respect quirk_drives[] list on all controllers · 8bc1e5aa
      Bartlomiej Zolnierkiewicz 提交于
      * Add ide_check_nien_quirk_list() helper to the core code
        and then use it in ide_port_tune_devices().
      
      * Remove no longer needed ->quirkproc methods from hpt366.c
        and pdc202xx_{new,old}.c.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      8bc1e5aa
    • B
      ide: preserve Host Protected Area by default (v2) · 075affcb
      Bartlomiej Zolnierkiewicz 提交于
      From the perspective of most users of recent systems, disabling Host
      Protected Area (HPA) can break vendor RAID formats, GPT partitions and
      risks corrupting firmware or overwriting vendor system recovery tools.
      
      Unfortunately the original (kernels < 2.6.30) behavior (unconditionally
      disabling HPA and using full disk capacity) was introduced at the time
      when the main use of HPA was to make the drive look small enough for the
      BIOS to allow the system to boot with large capacity drives.
      
      Thus to allow the maximum compatibility with the existing setups (using
      HPA and partitioned with HPA disabled) we automically disable HPA if
      any partitions overlapping HPA are detected.  Additionally HPA can also
      be disabled using the "nohpa" module parameter (i.e. "ide_core.nohpa=0.0"
      to disable HPA on /dev/hda).
      
      v2:
      Fix ->resume HPA support.
      
      While at it:
      - remove stale "idebus=" entry from Documentation/kernel-parameters.txt
      
      Cc: Robert Hancock <hancockrwd@gmail.com>
      Cc: Frans Pop <elendil@planet.nl>
      Cc: "Andries E. Brouwer" <Andries.Brouwer@cwi.nl>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      [patch description was based on input from Alan Cox and Frans Pop]
      Emphatically-Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      075affcb
    • B
      ide-gd: implement block device ->set_capacity method (v2) · e957b60d
      Bartlomiej Zolnierkiewicz 提交于
      * Use ->probed_capacity to store native device capacity for ATA disks.
      
      * Add ->set_capacity method to struct ide_disk_ops.
      
      * Implement disk device ->set_capacity method for ATA disks.
      
      * Implement block device ->set_capacity method.
      
      v2:
      * Check if LBA and HPA are supported in ide_disk_set_capacity().
      
      * According to the spec the SET MAX ADDRESS command shall be
        immediately preceded by a READ NATIVE MAX ADDRESS command.
      
      * Add ide_disk_hpa_{get_native,set}_capacity() helpers.
      
      Together with the previous patch adding ->set_capacity block device
      method this allows automatic disabling of Host Protected Area (HPA)
      if any partitions overlapping HPA are detected.
      
      Cc: Robert Hancock <hancockrwd@gmail.com>
      Cc: Frans Pop <elendil@planet.nl>
      Cc: "Andries E. Brouwer" <Andries.Brouwer@cwi.nl>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Emphatically-Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      e957b60d
  16. 22 5月, 2009 1 次提交
  17. 18 5月, 2009 4 次提交
  18. 15 5月, 2009 5 次提交
  19. 28 4月, 2009 4 次提交
    • T
      ide-atapi: kill unused fields and callbacks · 29d1a437
      Tejun Heo 提交于
      Impact: remove fields and code paths which are no longer necessary
      
      Now that ide-tape uses standard mechanisms to transfer data, special
      case handling for bh handling can be dropped from ide-atapi.  Drop the
      followings.
      
      * pc->cur_pos, b_count, bh and b_data
      * drive->pc_update_buffers() and pc_io_buffers().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      29d1a437
    • T
      ide-cd,atapi: use bio for internal commands · 02e7cf8f
      Tejun Heo 提交于
      Impact: unify request data buffer handling
      
      rq->data is used mostly to pass kernel buffer through request queue
      without using bio.  There are only a couple of places which still do
      this in kernel and converting to bio isn't difficult.
      
      This patch converts ide-cd and atapi to use bio instead of rq->data
      for request sense and internal pc commands.  With previous change to
      unify sense request handling, this is relatively easily achieved by
      adding blk_rq_map_kern() during sense_rq prep and PC issue.
      
      If blk_rq_map_kern() fails for sense, the error is deferred till sense
      issue and aborts the failed command which triggered the sense.  Note
      that this is a slim possibility as sense prep is done on each command
      issue, so for the above condition to actually trigger, all preps since
      the last sense issue till the issue of the request which would require
      a sense should fail.
      
      * do_request functions might sleep now.  This should be okay as ide
        request_fn - do_ide_request() - is invoked only from make_request
        and plug work.  Make sure this is the case by adding might_sleep()
        to do_ide_request().
      
      * Functions which access the read sense data before the sense request
        is complete now should access bio_data(sense_rq->bio) as the sense
        buffer might have been copied during blk_rq_map_kern().
      
      * ide-tape updated to map sg.
      
      * cdrom_do_block_pc() now doesn't have to deal with REQ_TYPE_ATA_PC
        special case.  Simplified.
      
      * tp_ops->output/input_data path dropped from ide_pc_intr().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      02e7cf8f
    • B
      ide-atapi: convert ide-{floppy,tape} to using preallocated sense buffer · 06875320
      Borislav Petkov 提交于
      Since we're issuing REQ_TYPE_SENSE now we need to allow those types of
      rqs in the ->do_request callbacks. As a future improvement, sense_len
      assignment might be unified across all ATAPI devices. Borislav to
      check with specs and test.
      
      As a result, get rid of ide_queue_pc_head() and
      drive->request_sense_rq.
      
      tj: * Init request sense ide_atapi_pc from sense request.  In the
            longer timer, it would probably better to fold
            ide_create_request_sense_cmd() into its only current user -
            ide_floppy_get_format_progress().
      
          * ide_retry_pc() no longer takes @disk.
      
      CC: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      CC: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: NBorislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      06875320
    • B
      ide: add helpers for preparing sense requests · e69d800f
      Borislav Petkov 提交于
      This is in preparation of removing the queueing of a sense request out
      of the IRQ handler path.
      
      Use struct request_sense as a general sense buffer for all ATAPI
      devices ide-{floppy,tape,cd}.
      
      tj: * blk_get_request(__GFP_WAIT) can't be called from do_request() as
            it can cause deadlock.  Converted to use inline struct request
            and blk_rq_init().
      
          * Added xfer / cdb len selection depending on device type.
      
          * All sense prep logics folded into ide_prep_sense() which never
            fails.
      
          * hwif->rq clearing and sense_rq used handling moved into
            ide_queue_sense_rq().
      
          * blk_rq_map_kern() conversion is moved to later patch.
      
      CC: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      CC: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: NBorislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      e69d800f