block: Export I/O topology for block devices and partitions
authorMartin K. Petersen <martin.petersen@oracle.com>
Fri, 22 May 2009 21:17:53 +0000 (17:17 -0400)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 22 May 2009 21:22:55 +0000 (23:22 +0200)
commitc72758f33784e5e2a1a4bb9421ef3e6de8f9fcf3
treea83f7540cc894caafe74db911cba3998d6a9a164
parentcd43e26f071524647e660706b784ebcbefbd2e44
block: Export I/O topology for block devices and partitions

To support devices with physical block sizes bigger than 512 bytes we
need to ensure proper alignment.  This patch adds support for exposing
I/O topology characteristics as devices are stacked.

  logical_block_size is the smallest unit the device can address.

  physical_block_size indicates the smallest I/O the device can write
  without incurring a read-modify-write penalty.

  The io_min parameter is the smallest preferred I/O size reported by
  the device.  In many cases this is the same as the physical block
  size.  However, the io_min parameter can be scaled up when stacking
  (RAID5 chunk size > physical block size).

  The io_opt characteristic indicates the optimal I/O size reported by
  the device.  This is usually the stripe width for arrays.

  The alignment_offset parameter indicates the number of bytes the start
  of the device/partition is offset from the device's natural alignment.
  Partition tools and MD/DM utilities can use this to pad their offsets
  so filesystems start on proper boundaries.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Documentation/ABI/testing/sysfs-block
block/blk-settings.c
block/blk-sysfs.c
block/genhd.c
fs/partitions/check.c
include/linux/blkdev.h
include/linux/genhd.h