[PATCHSET 2.6.26] block: unify disk/part handling and improve ext devt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello, again.

This is the first take of unify-disk-part-handling patchset.

The block code represented a disk with struct genhd and a partition
with struct hd_struct.  The whole disk (a.k.a partition 0) has a lot
in common with other partitions but genhd and hd_struct had their own
versions for the same things.  This led to good number of duplicate
similar code paths and branches to deal with them separately.  Also,
the partition array disk->part[] is indexed by partno - 1 which gets
quite confusing at times.

This patchset introduces partition 0 and unifies handling of the whole
disk and other partitions and, on top of those changes, improves ext
devt handling such that increasing the number of allowed partitions
can be done without much overhead and the disk device itself can be
allocated an extended devt.

This patchset contains the following 13 patches.

  0001-block-implement-and-use-disk-part-_to_dev.patch
  0002-block-introduce-partition-0.patch
  0003-block-move-capacity-from-disk-to-part0.patch
  0004-block-move-__dev-from-disk-to-part0.patch
  0005-block-unify-sysfs-size-node-handling.patch
  0006-block-move-policy-from-disk-to-part0.patch
  0007-block-move-holder_dir-from-disk-to-part0.patch
  0008-block-always-set-bdev-bd_part.patch
  0009-block-kill-GENHD_FL_FAIL-and-use-part0-make_it_fai.patch
  0010-block-move-stats-from-disk-to-part0.patch
  0011-block-make-partition-array-dynamic.patch
  0012-block-replace-ext_minors-with-GENHD_FL_EXT_DEVT.patch
  0013-block-allow-disk-to-have-extended-device-number.patch

0001-0002: preps and introduces part0
0003-0009: moves what's common from disk to part0 and unifies code
	   paths
0010     : simplifies stats handling
0011	 : make partition array dynamic
0012	 : ext_minors restriction isn't necessary anymore.  simplify
           ext devt interface
0013     : allow disk (part0) to have extended devt

After this patchset, partition number is only limited by the number of
entries in struct parsed_partitions which is used by actual partition
scan code.  The limit is currently 256 but it can be increased by
changing MAX_PART.

A block driver now can simply set GENHD_FL_EXT_DEVT and skip
specifying disk->minors to tell block layer to use extended devt for
the disk and its partitions.  There's no need to allocate fixed
regions and worry about the device number availability.

If CONFIG_DEBUG_BLOCK_EXT_DEVT is turned on, sd and ide-disk use ext
devt for everything.

This patchset is on top of

  v2.6.26 (bce7f793daec3e65ec5c5705d2457b81fe7b5725)
+ [1] RCU-implement-rcu_read_[un]lock_preempt
+ [2] block-fix-block_class-iteration-locking
+ [3] block-allow-deleting-zero-lenght-partition
+ [4] block-update-add_partition-error-handling
+ [5] sd-update-index-allocation-and-use-ida
+ [6] block-extended-devt patchset, take #2

and available in the following git tree.

  http://git.kernel.org/?p=linux/kernel/git/tj/misc.git;a=shortlog;h=block-unify-disk-part
  git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git block-unify-disk-part

Even with the added feature and comments, this patchset reduces code
by 40 lines.  ;-)

 block/blk-core.c           |   84 +++------
 block/blk-merge.c          |    8 
 block/blk-sysfs.c          |    4 
 block/genhd.c              |  402 ++++++++++++++++++++++-----------------------
 block/ioctl.c              |    4 
 drivers/block/aoe/aoeblk.c |    6 
 drivers/block/aoe/aoecmd.c |   12 -
 drivers/block/aoe/aoedev.c |    2 
 drivers/block/nbd.c        |    4 
 drivers/ide/ide-cd.c       |    2 
 drivers/ide/ide-disk.c     |   16 -
 drivers/ide/ide-probe.c    |    2 
 drivers/md/dm-ioctl.c      |    2 
 drivers/md/dm.c            |   19 +-
 drivers/md/linear.c        |    4 
 drivers/md/md.c            |   15 -
 drivers/md/multipath.c     |    4 
 drivers/md/raid0.c         |    4 
 drivers/md/raid1.c         |    4 
 drivers/md/raid10.c        |    4 
 drivers/md/raid5.c         |    4 
 drivers/scsi/sd.c          |   83 ++++++---
 fs/block_dev.c             |   79 +++-----
 fs/partitions/check.c      |  160 +++++++++--------
 fs/partitions/check.h      |    4 
 include/linux/genhd.h      |  238 +++++++++++---------------
 26 files changed, 565 insertions(+), 605 deletions(-)

--
tejun

[1] http://article.gmane.org/gmane.linux.kernel/706149
[2] http://article.gmane.org/gmane.linux.kernel/706152
[3] http://article.gmane.org/gmane.linux.kernel/706153
[4] http://article.gmane.org/gmane.linux.kernel/706154
[5] http://article.gmane.org/gmane.linux.scsi/43109
[6] http://thread.gmane.org/gmane.linux.kernel/706175
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux