1. 09 Jun, 2008 1 commit
    • Linus Torvalds's avatar
      Fix invalid access errors in blk_lookup_devt · d5791d13
      Linus Torvalds authored
      Commit 30f2f0eb ("block: do_mounts -
      accept root=<non-existant partition>") extended blk_lookup_devt() to be
      able to look up partitions that had not yet been registered, but in the
      process made the assumption that the '&block_class.devices' list only
      contains disk devices and that you can do 'dev_to_disk(dev)' on them.
      
      That isn't actually true.  The block_class device list also contains the
      partitions we've discovered so far, and you can't just do a
      'dev_to_disk()' on those.
      
      So make sure to only work on devices that block/genhd.c has registered
      itself, something we can test by checking the 'dev->type' member.  This
      makes the loop in blk_lookup_devt() match the other such loops in this
      file.
      
      [ We may want to do an alternate version that knows to handle _either_
        whole-disk devices or partitions, but for now this is the minimal fix
        for a series of crashes reported by Mariusz Kozlowski in
      
      	http://lkml.org/lkml/2008/5/25/25
      
        and Ingo in
      
      	http://lkml.org/lkml/2008/6/9/39
      
       ]
      Reported-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Reported-by: default avatarIngo Molnar <mingo@elte.hu>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Joao Luis Meloni Assirati <assirati@nonada.if.usp.br>
      Acked-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d5791d13
  2. 14 May, 2008 1 commit
  3. 30 Apr, 2008 1 commit
  4. 12 Mar, 2008 1 commit
  5. 04 Mar, 2008 2 commits
  6. 08 Feb, 2008 1 commit
  7. 29 Jan, 2008 1 commit
  8. 24 Jan, 2008 3 commits
    • Kay Sievers's avatar
      Driver core: convert block from raw kobjects to core devices · edfaa7c3
      Kay Sievers authored
      
      
      This moves the block devices to /sys/class/block. It will create a
      flat list of all block devices, with the disks and partitions in one
      directory. For compatibility /sys/block is created and contains symlinks
      to the disks.
      
        /sys/class/block
        |-- sda -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda
        |-- sda1 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1
        |-- sda10 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10
        |-- sda5 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5
        |-- sda6 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6
        |-- sda7 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7
        |-- sda8 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8
        |-- sda9 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9
        `-- sr0 -> ../../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sr0
      
        /sys/block/
        |-- sda -> ../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda
        `-- sr0 -> ../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sr0
      Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      edfaa7c3
    • Greg Kroah-Hartman's avatar
      kset: convert block_subsys to use kset_create · 830d3cfb
      Greg Kroah-Hartman authored
      
      
      Dynamically create the kset instead of declaring it statically.  We also
      rename block_subsys to block_kset to catch all users of this symbol
      with a build error instead of an easy-to-ignore build warning.
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      830d3cfb
    • Greg Kroah-Hartman's avatar
      kobject: remove struct kobj_type from struct kset · 3514faca
      Greg Kroah-Hartman authored
      
      
      We don't need a "default" ktype for a kset.  We should set this
      explicitly every time for each kset.  This change is needed so that we
      can make ksets dynamic, and cleans up one of the odd, undocumented
      assumption that the kset/kobject/ktype model has.
      
      This patch is based on a lot of help from Kay Sievers.
      
      Nasty bug in the block code was found by Dave Young
      <hidave.darkstar@gmail.com>
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Dave Young <hidave.darkstar@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3514faca
  9. 27 Nov, 2007 1 commit
  10. 12 Oct, 2007 1 commit
    • Kay Sievers's avatar
      Driver core: change add_uevent_var to use a struct · 7eff2e7a
      Kay Sievers authored
      
      
      This changes the uevent buffer functions to use a struct instead of a
      long list of parameters. It does no longer require the caller to do the
      proper buffer termination and size accounting, which is currently wrong
      in some places. It fixes a known bug where parts of the uevent
      environment are overwritten because of wrong index calculations.
      
      Many thanks to Mathieu Desnoyers for finding bugs and improving the
      error handling.
      Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      7eff2e7a
  11. 17 Jul, 2007 3 commits
  12. 23 May, 2007 2 commits
  13. 09 May, 2007 1 commit
  14. 02 May, 2007 1 commit
  15. 04 Apr, 2007 1 commit
  16. 20 Feb, 2007 1 commit
  17. 12 Feb, 2007 1 commit
  18. 08 Dec, 2006 1 commit
    • Akinobu Mita's avatar
      [PATCH] fault-injection capability for disk IO · c17bb495
      Akinobu Mita authored
      
      
      This patch provides fault-injection capability for disk IO.
      
      Boot option:
      
      fail_make_request=<probability>,<interval>,<space>,<times>
      
      	<interval> -- specifies the interval of failures.
      
      	<probability> -- specifies how often it should fail in percent.
      
      	<space> -- specifies the size of free space where disk IO can be issued
      		   safely in bytes.
      
      	<times> -- specifies how many times failures may happen at most.
      
      Debugfs:
      
      /debug/fail_make_request/interval
      /debug/fail_make_request/probability
      /debug/fail_make_request/specifies
      /debug/fail_make_request/times
      
      Example:
      
      	fail_make_request=10,100,0,-1
      	echo 1 > /sys/blocks/hda/hda1/make-it-fail
      
      generic_make_request() on /dev/hda1 fails once per 10 times.
      
      Cc: Jens Axboe <axboe@suse.de>
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c17bb495
  19. 29 Sep, 2006 1 commit
  20. 30 Jun, 2006 1 commit
  21. 21 Jun, 2006 1 commit
  22. 12 May, 2006 1 commit
    • Linus Torvalds's avatar
      Revert "[BLOCK] Fix oops on removal of SD/MMC card" · 1a2acc9e
      Linus Torvalds authored
      This reverts commit 56cf6504
      
      .
      
      Both Erik Mouw and Andrew Vasquez independently pinpointed this commit
      as causing problems, where the slab cache for a driver is never released
      (most obviously causing problems when immediately re-loading that
      driver, resulting in a "kmem_cache_create: duplicate cache <xyz>"
      message, but it can also cause other trouble).
      
      James Bottomley dug into it, and reports:
      
        "OK, here's the scoop.  The problem patch adds a get of driverfs_dev in
         add_disk(), but doesn't put it again until disk_release() (which occurs
         on final put_disk() of the gendisk).
      
         However, in SCSI, the driverfs_dev is the sdev_gendev.  That means
         there's a reference held on sdev_gendev  until final disk put.
         Unfortunately, we use the driver model driver_remove to trigger
         del_gendisk (which removes the gendisk from visibility and decrements
         the refcount), so we've introduced an unbreakable deadlock in the
         reference counting with this.
      
         I suggest simply reversing this patch at the moment.  If Russell and
         Jens can tell me what they're trying to do I'll see if there's another
         way to do it."
      
      so hereby the patch gets reverted, waiting for a better fix.
      
      Cc: Jens Axboe <axboe@suse.de>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: James Bottomley <James.Bottomley@SteelEye.com>
      Cc: Erik Mouw <erik@harddisk-recovery.com>
      Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      1a2acc9e
  23. 05 May, 2006 1 commit
    • Russell King's avatar
      [BLOCK] Fix oops on removal of SD/MMC card · 56cf6504
      Russell King authored
      
      
      The block layer keeps a reference (driverfs_dev) to the struct
      device associated with the block device, and uses it internally
      for generating uevents in block_uevent.
      
      Block device uevents include umounting the partition, which can
      occur after the backing device has been removed.
      
      Unfortunately, this reference is not counted.  This means that
      if the struct device is removed from the device tree, the block
      layers reference will become stale.
      
      Guard against this by holding a reference to the struct device
      in add_disk(), and only drop the reference when we're releasing
      the gendisk kobject - in other words when we can be sure that no
      further uevents will be generated for this block device.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarJens Axboe <axboe@suse.de>
      56cf6504
  24. 31 Mar, 2006 1 commit
  25. 27 Mar, 2006 1 commit
    • Ben Woodard's avatar
      [BLOCK] increase size of disk stat counters · 837c7878
      Ben Woodard authored
      
      
      The kernel's representation of the disk statistics uses the type unsigned
      which is 32b on both 32b and 64b platforms.  Unfortunately, most system
      tools that work with these numbers that are exported in /proc/diskstats
      including iostat read these numbers into unsigned longs.  This works fine
      on 32b platforms and when the number of IO transactions are small on 64b
      platforms.  However, when the numbers wrap on 64b platforms & you read the
      numbers into unsigned longs, and compare the numbers to previous readings,
      then you get an unsigned representation of a negative number.  This looks
      like a very large 64b number & gives you bizarre readouts in iostat:
      
      ilc4: Device:    rrqm/s wrqm/s r/s    w/s  rsec/s  wsec/s    rkB/s wkB/s avgrq-sz avgqu-sz   await  svctm  %util
      ilc4: sda        5.50   0.00   143.96 0.00 307496983987862656.00 0.00 153748491993931328.00     0.00 2136028725038430.00     7.94   55.12    5.59  80.42
      
      Though fixing iostat in user space is possible, and a quick survey
      indicates that several other similar tools also use unsigned longs when
      processing /proc/diskstats.  Therefore, it seems like a better approach
      would be to extend the length of the disk_stats structure on 64b
      architectures to 64b.  The following patch does that.  It should not affect
      the operation on 32b platforms.
      Signed-off-by: default avatarBen Woodard <woodard@redhat.com>
      Cc: Rick Lindsley <ricklind@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      837c7878
  26. 20 Mar, 2006 1 commit
  27. 14 Jan, 2006 1 commit
  28. 04 Jan, 2006 1 commit
  29. 12 Nov, 2005 1 commit
  30. 04 Nov, 2005 1 commit
  31. 01 Nov, 2005 1 commit
    • Jens Axboe's avatar
      [BLOCK] Unify the seperate read/write io stat fields into arrays · a362357b
      Jens Axboe authored
      
      
      Instead of having ->read_sectors and ->write_sectors, combine the two
      into ->sectors[2] and similar for the other fields. This saves a branch
      several places in the io path, since we don't have to care for what the
      actual io direction is. On my x86-64 box, that's 200 bytes less text in
      just the core (not counting the various drivers).
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      a362357b
  32. 28 Oct, 2005 1 commit
  33. 07 Sep, 2005 1 commit
  34. 23 Jun, 2005 1 commit