osd_uld: Important fix also for 3.2 Stable
cover osd_uld: Important fix also for 3.2 Stable
There was a mine hiding in the osd_uld driver. It was limited by the number of device minors it registers at startup which was 64.
The rest of the code is not limited at all and can hold as many devices as permitted by memory conditions.
The fix is very simple just bump the max number to the maximum minor permitted which is 2^20.
This is a serious BUG because some of the systems that intend to use the 3.2 Kernel to deploy pnfs. (Fedora 17 most probably) are bigger then 64 OSDs and will break.
I have tested this on 64bit platform and user-mode works just fine with this. (Kernel is not an issue). Might there be issues hiding in 32bit ARCHs. From reading the code I could not find any.
James would you like to take this through your tree for the next rc-fixes round or give me an ACK-BY: and I'll push it through the osd tree?
The patch:
[PATCH 1/1] osd_uld: Bump MAX_OSD_DEVICES from 64 to 1,048,576
Thanks
Boaz
PATCH 1/1 osd_uld: Bump MAX_OSD_DEVICES from 64 to 1,048,576
It used to be that minors where 8 bit. But now they are actually 20 bit. So the fix is simplicity itself.
I've tested with 300 devices and all user-mode utils work just fine. I have also mechanically added 10,000 to the ida (so devices are /dev/osd10000, /dev/osd10001 ...) and was able to mkfs an exofs filesystem and access osds from user-mode.
All the open-osd user-mode code uses the same library to access devices through their symbolic names in /dev/osdX so I'd say it's pretty safe. (Well tested)
This patch is very important because some of the systems that will be deploying the 3.2 pnfs-objects code are larger than 64 OSDs and will stop to work properly when reaching that number.
--- drivers/scsi/osd/osd_uld.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/osd/osd_uld.c +2 -2
@@ -69,10 +69,10 @@#ifndef SCSI_OSD_MAJOR # define SCSI_OSD_MAJOR 260#endif -#define SCSI_OSD_MAX_MINOR 64 +#define SCSI_OSD_MAX_MINOR MINORMASKstatic const char osd_name[] ="osd" ; -static const char *osd_version_string ="open-osd 0.2.0" ; +static const char *osd_version_string ="open-osd 0.2.1" ;MODULE_AUTHOR ("Boaz Harrosh <[email protected]>" );MODULE_DESCRIPTION ("open-osd Upper-Layer-Driver osd.ko" );
Signature · 1 line
1.7.2.3
Re: [PATCH 1/1] osd_uld: Bump MAX_OSD_DEVICES from 64 to 1,048,576
Quoted 14 lines · Boaz Harrosh
It used to be that minors where 8 bit. But now they are actually 20 bit. So the fix is simplicity itself.
I've tested with 300 devices and all user-mode utils work just fine. I have also mechanically added 10,000 to the ida (so devices are
/dev/osd10000,/dev/osd10001...) and was able to mkfs an exofs filesystem and access osds from user-mode.All the open-osd user-mode code uses the same library to access devices through their symbolic names in
/dev/osdXso I'd say it's pretty safe. (Well tested)
Quoted 7 lines
This patch is very important because some of the systems that will be deploying the 3.2 pnfs-objects code are larger than 64 OSDs and will stop to work properly when reaching that number.
CC Stable <[email protected]>Signed-off-by Boaz Harrosh <[email protected]>
James Hi
You never came back to me on this patch. It is very important for the setups all this osd stuff is intended for. It is a simple bug right in the middle of the system, which makes it useless. (I'm so embarrassed I made it in the first place)
I have put it in today's linux-next, so it can collect dust there. Please tell me if you want to carry this for this rc-fixes or I should push it through the osd tree.
Thanks
Boaz
Quoted 21 lines
--- drivers/scsi/osd/osd_uld.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)drivers/scsi/osd/osd_uld.c +2
-2@@ -69,10 +69,10 @@#ifndef SCSI_OSD_MAJOR # define SCSI_OSD_MAJOR 260#endif -#define SCSI_OSD_MAX_MINOR 64 +#define SCSI_OSD_MAX_MINOR MINORMASKstatic const char osd_name[] ="osd" ; -static const char *osd_version_string ="open-osd 0.2.0" ; +static const char *osd_version_string ="open-osd 0.2.1" ;MODULE_AUTHOR ("Boaz Harrosh <[email protected]>" );MODULE_DESCRIPTION ("open-osd Upper-Layer-Driver osd.ko" );