From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Hamilton Date: Sun, 15 Feb 2004 02:38:42 +0000 Subject: Re: USB/desktop integration - how to guess /dev/sd* when hotplugging? Message-Id: <200402151538.42685.michael@actrix.gen.nz> List-Id: References: <200402130844.30279.michael@actrix.gen.nz> In-Reply-To: <200402130844.30279.michael@actrix.gen.nz> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org On Fri, 13 Feb 2004 14:31, Greg KH wrote: > On Fri, Feb 13, 2004 at 08:44:30AM +1300, Michael Hamilton wrote: > > How do I systematically determine /dev/sd[abc] when hotplugging? > > Is sg_map from sg3_utils the best/only way? In more detail... > > Looked at devlabel? I did look at devlabel in the past, but the stated need for unique ID's put me off - I have two devices with the same ID - but I don't normally plug them in at the same time, so maybe devlabel would be OK. For my own scripts I had come to the conclusion that it's better not to try and use ID's for usb devices, because, in the end, the ID can be pretty much useless and the only way to tell which device is which is to look at its content. Because of this issue, I decided to use generic handles like usb-device-1, usb-device-2, etc. > > There doesn't seem to be an easy way to figure out the scsi > > /dev/sd* from the hotplug device passed in, for example: > > from /proc/bus/usb/004/002 to what /dev/sd*? > > Why not just catch either the block hotplug events, or the scsi hotplug > events? And why would you ever want to map usb-storage devices to their > usbfs entry? Sorry - I'm a bit out of my depth here. From reading about hotplug from the project website I got the impression that a usb device should be handled by adding code in the usb storage area of hotplug. You seem to be saying this is wrong and I should trap something more general in the block or scsi area. I guess I need a new version of hotplug because mine doesn't seem to have agents for these kind of events. > why would you ever want to map usb-storage devices to their > usbfs entry Under kernel 2.4 the only thing hotplug gives you to go on is /proc/bus/usb/..., but I had no way to translate this to a scsi entry except by trying to match GUID's - but GUID's are not unique, eg I can plug in two usb-flash-drives that have the same GUID. Because of the lack of a mapping, on a hotplug event, I was resorting to mounting every usb-drive listed as attached under /proc/scsi/usb-storage - which actually works quite well - most people only plug in one drive at a time. Under kernel 2.6, your next hint deals with this issue nicely. > > I was hoping there was a easy way to use /proc or /sys, to > > get this info. > > Look at /sys/block/{block_device}/device > > That's the symlink I think you want, right? Yes this is it - this will allow me to find the scsi host number of a device that has been plugged in. I can then use sg_map to find the /dev/sd[abc...] currently assigned to the host number and after that its plain sailing. Because I need to translate the host number to a /dev/sd[abc..] device, I can't see any way around using sg_map - does anyone know a way to get this info out of /proc or /sys? Here is the kind of info I get from sg_map: [root@viking2 root]# sg_map -sd -x /dev/sg0 1 0 0 0 0 /dev/sda /dev/sg1 2 0 0 0 0 /dev/sdb /dev/sg2 3 0 0 0 0 /dev/sdc /dev/sg3 0 0 0 0 5 /dev/sg4 4 0 0 0 0 /dev/sdd /dev/sg5 5 0 0 0 0 /dev/sde Note the skip in the numerical sequence due to the cdrom drive on host number 3 - skips like this are the reason I need a map. Thanks for the help, Michael ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id56&alloc_id438&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel