Feature changed by: Tejun Heo (teheo)
Feature #305584, revision 15
Title: Do not assume fixed and contiguous device numbers in
installation and management tools for storage
openSUSE-11.2: Rejected by Christoph Thiel (cthiel1)
reject date: 2009-06-03 08:25:13
reject reason: No resources in YaST team for this in 11.2.
Priority
Requester: Mandatory
Projectmanager: Important
openSUSE-11.3: Evaluation
Priority
Requester: Mandatory
Projectmanager: Important
Requested by: Matthias Eckermann (mge1512)
Requested by: Tejun Heo (teheo)
Description:
Subject: [Research] head up on upcoming extended block devt change
From: Tejun Heo
Date: Thu, 18 Dec 2008 12:59:21 +0900
Reply-To: research@suse.de
Hello, all.
From soon to be released 2.6.28, the kernel contains extended block
devt support, which basically allocates block device numbers
dynamically from major number 259 (might expand to other major numbers
if ever necessary). This means that device numbers belonging to the
same device become non-contiguous and can be on different major
numbers.
This will remove the 15 partition limit on /dev/sdX's and increase the
total number of supported SCSI disks considerably. Also, it's used by
md to allow partitioning of /dev/mdX's thus removing the distinction
of partitionable and non-partitionable md devices.
For example, /dev/sda with 60 partitions can look like as follows.
# cat /proc/partitions
major minor #blocks name
8 0 156290904 sda
8 1 8001 sda1
8 2 8032 sda2
8 3 8032 sda3
8 4 1 sda4
...
8 15 8001 sda15
259 0 8001 sda16
259 1 8001 sda17
259 2 8001 sda18
...
259 43 8001 sda59
259 44 8001 sda60
For detailed overview, please take a look at the following message.
http://article.gmane.org/gmane.linux.kernel/701825
As device node creation is completely dynamic these days, installed
systems usually can cope fine with this change; however, in
installation and management tools, there seem to be many places which
assume fixed and contiguous device numbers.
To ease hunting down those areas, a debug option is available which
forces every block device to be allocated on the dynamic major
non-consecutively. With the debug option turned on, the above disk
will look like the following.
# cat /proc/partitions
major minor #blocks name
8 0 156290904 sda
259 262144 8001 sda1
259 786432 8032 sda2
259 131072 8032 sda3
259 655360 1 sda4
259 393216 8001 sda5
259 917504 8001 sda6
259 65536 8001 sda7
...
259 114688 8001 sda55
259 638976 8001 sda56
259 376832 8001 sda57
259 901120 8001 sda58
259 245760 8001 sda59
259 770048 8001 sda60
So, the installation / management tools need to follow
/sys/block/*/device/driver to determine which type of device it is and
use /sys/block/*/dev to determine its device number.
I'll add a kernel parameter (say, block.force_ext_devt) so that this
debug option can be turned on and off during boot so that people who
don't work on related subsystems don't have to suffer.
I'm not sure how and when to proceed with this yet but I definitely
think we'll need plenty of time to sort this out completely. Any
ideas on how to proceed on this?
Thanks.
--
tejun
Discussion:
#1: Tejun Heo (teheo) (2008-12-22 13:31:11)
So... when and how do we proceed with things like this? I wanna enable
it in HEAD but SLES11 hasn't branched out from HEAD yet but I don't
think we should wait till SLES11 is released.
#2: Matthias Eckermann (mge1512) (2008-12-22 10:24:58) (reply to #1)
SLE 11 has precedence over anything else we currently do - with respect
to focus and time spent on it. Thus we should concentrate on SLE 11 and
wait with those changes after release of SLE 11. There are more than
enough P1 and P2 issues with the SLE 11 kernel to work on, ...
Vojtech?
#3: Vojtech Pavlik (vojtech_pavlik) (2008-12-22 12:14:19)
I agree, Matthias, and I see no reason why this couldn't wait until
SLES11 branches out of HEAD.
#4: Tejun Heo (teheo) (2008-12-23 11:52:19)
Alright, then. I'll enable it when SLES11 branches out. Thanks.
#5: Tejun Heo (teheo) (2009-05-29 16:55:23)
Added genhd.mangle_devt parameter and enabled DEBUG_BLOCK_EXT_DEVT for
all configs except for vanilla's and ppc/ps3. Ext major and mangled
minor can be enabled by specifying "genhd.mangle_devt=1" as kernel
parameter. Have fun. :-)
#7: Christoph Thiel (cthiel1) (2009-06-03 08:26:09) (reply to #5)
Tejun, IIUC the options you put in, don't break anything unless genhd.
mangle_devt=1 on kernel cmdline? We won't be able to complete the YaST
part of this for 11.2.
+ #8: Tejun Heo (teheo) (2009-06-03 15:35:12) (reply to #7)
+ Yeap, the kernel will behave exactly the same as before if the
+ parameter isn't specified. Also, we can disable DEBUG_BLOCK_EXT_DEVT
+ when we're nearing SL112 release (maybe when we enter beta). For now,
+ I'll leave it there in case someone wants to play with it. Maybe it's
+ wise to schedule dev resource so that SL113 can have it implemented?
--
openSUSE Feature:
https://features.opensuse.org/305584