1. 30 10月, 2011 2 次提交
  2. 24 8月, 2011 1 次提交
  3. 03 8月, 2011 2 次提交
  4. 27 7月, 2011 1 次提交
  5. 24 7月, 2011 1 次提交
    • S
      [S390] dasd: add enhanced DASD statistics interface · 4fa52aa7
      Stefan Weinhuber 提交于
      This patch extends the DASD statistics to allow for a more detailed
      analysis of DASD I/O operations. In particular we want the statistics
      to provide answers to the following questions:
      - How many requests used a PAV alias?
      - How many requests used High Performance FICON?
      - How do read request perform versus write requests?
      
      The existing DASD statistics interface has several shortcomings
      - The interface for global data is a formatted text table in procfs
        (/proc/dasd/statistics). The layout is meant for human readers and
        is not to easy to parse. If values get to large for the table
        layout, they get scaled down.
      - The statistics which are collected per block device can be
        accessed via an ioctl interface, which can only be extended by
        defining a new ioctl.
      - There is no statistics interface for individual PAV base and alias
        devices.
      
      To overcome theses shortcomings we create a new DASD statistics
      interface in debugfs. This interface will contain one entry for global
      data, one per DASD block device, and one per DASD base and alias
      device. Each file contains the statistic data in easy to parse
      name/value and name/array pairs. The existing interfaces will remain
      functional, but they will not be extended.
      Signed-off-by: NStefan Weinhuber <wein@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      4fa52aa7
  6. 26 5月, 2011 2 次提交
  7. 23 5月, 2011 2 次提交
  8. 10 5月, 2011 1 次提交
  9. 29 4月, 2011 1 次提交
  10. 20 4月, 2011 2 次提交
    • S
      [S390] dasd: check sense type in device change handler · c7a29e56
      Stefan Weinhuber 提交于
      When evaluating sense data in dasd_eckd_check_for_device_change, we
      must always check for the type of sense data in byte 27, bit 0, to
      make sure that the rest of the sense data is interpreted correctly.
      Signed-off-by: NStefan Weinhuber <wein@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c7a29e56
    • S
      [S390] dasd: fix race between open and offline · 65f8da47
      Stefan Weinhuber 提交于
      The dasd_open function uses the private_data pointer of the gendisk to
      find the dasd_block structure that matches the gendisk. When a DASD
      device is set offline, we set the private_data pointer of the gendisk
      to NULL and later remove the dasd_block structure, but there is still
      a small race window, in which dasd_open could first read a pointer
      from the private_data field and then try to use it, after the structure
      has already been freed.
      To close this race window, we will store a pointer to the dasd_devmap
      structure of the base device in the private_data field. The devmap
      entries are not deleted, and we already have proper locking and
      reference counting in place, so that we can safely get from a devmap
      pointer to the dasd_device and dasd_block structures of the device.
      Signed-off-by: NStefan Weinhuber <wein@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      65f8da47
  11. 31 3月, 2011 1 次提交
  12. 23 3月, 2011 1 次提交
  13. 16 3月, 2011 1 次提交
  14. 10 3月, 2011 1 次提交
  15. 04 3月, 2011 1 次提交
  16. 17 2月, 2011 1 次提交
  17. 31 1月, 2011 1 次提交
  18. 05 1月, 2011 9 次提交
  19. 18 11月, 2010 1 次提交
  20. 13 11月, 2010 1 次提交
    • T
      block: make blkdev_get/put() handle exclusive access · e525fd89
      Tejun Heo 提交于
      Over time, block layer has accumulated a set of APIs dealing with bdev
      open, close, claim and release.
      
      * blkdev_get/put() are the primary open and close functions.
      
      * bd_claim/release() deal with exclusive open.
      
      * open/close_bdev_exclusive() are combination of open and claim and
        the other way around, respectively.
      
      * bd_link/unlink_disk_holder() to create and remove holder/slave
        symlinks.
      
      * open_by_devnum() wraps bdget() + blkdev_get().
      
      The interface is a bit confusing and the decoupling of open and claim
      makes it impossible to properly guarantee exclusive access as
      in-kernel open + claim sequence can disturb the existing exclusive
      open even before the block layer knows the current open if for another
      exclusive access.  Reorganize the interface such that,
      
      * blkdev_get() is extended to include exclusive access management.
        @holder argument is added and, if is @FMODE_EXCL specified, it will
        gain exclusive access atomically w.r.t. other exclusive accesses.
      
      * blkdev_put() is similarly extended.  It now takes @mode argument and
        if @FMODE_EXCL is set, it releases an exclusive access.  Also, when
        the last exclusive claim is released, the holder/slave symlinks are
        removed automatically.
      
      * bd_claim/release() and close_bdev_exclusive() are no longer
        necessary and either made static or removed.
      
      * bd_link_disk_holder() remains the same but bd_unlink_disk_holder()
        is no longer necessary and removed.
      
      * open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()
        and blkdev_get().  It also has an unexpected extra bdev_read_only()
        test which probably should be moved into blkdev_get().
      
      * open_by_devnum() is modified to take @holder argument and pass it to
        blkdev_get().
      
      Most of bdev open/close operations are unified into blkdev_get/put()
      and most exclusive accesses are tested atomically at the open time (as
      it should).  This cleans up code and removes some, both valid and
      invalid, but unnecessary all the same, corner cases.
      
      open_bdev_exclusive() and open_by_devnum() can use further cleanup -
      rename to blkdev_get_by_path() and blkdev_get_by_devt() and drop
      special features.  Well, let's leave them for another day.
      
      Most conversions are straight-forward.  drbd conversion is a bit more
      involved as there was some reordering, but the logic should stay the
      same.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NNeil Brown <neilb@suse.de>
      Acked-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Acked-by: NMike Snitzer <snitzer@redhat.com>
      Acked-by: NPhilipp Reisner <philipp.reisner@linbit.com>
      Cc: Peter Osterlund <petero2@telia.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Jan Kara <jack@suse.cz>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andreas Dilger <adilger.kernel@dilger.ca>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Joel Becker <joel.becker@oracle.com>
      Cc: Alex Elder <aelder@sgi.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: dm-devel@redhat.com
      Cc: drbd-dev@lists.linbit.com
      Cc: Leo Chen <leochen@broadcom.com>
      Cc: Scott Branden <sbranden@broadcom.com>
      Cc: Chris Mason <chris.mason@oracle.com>
      Cc: Steven Whitehouse <swhiteho@redhat.com>
      Cc: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
      Cc: Joern Engel <joern@logfs.org>
      Cc: reiserfs-devel@vger.kernel.org
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      e525fd89
  21. 29 10月, 2010 1 次提交
  22. 25 10月, 2010 6 次提交