From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harald Hoyer Date: Wed, 11 Jun 2008 09:55:26 +0000 Subject: scsi_id - EBUSY and serialization Message-Id: <484FA10E.9010303@redhat.com> MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------ms090303050403020300030006" List-Id: To: linux-hotplug@vger.kernel.org This is a cryptographically signed message in MIME format. --------------ms090303050403020300030006 Content-Type: multipart/mixed; boundary="------------090405080907030301050105" This is a multi-part message in MIME format. --------------090405080907030301050105 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit We have a customer, who misses some symlinks for some of his scsi devices. Because of limited access and debugging facilities, I could only guess a fix. The first patch retries opening the scsi device, if it is EBUSY. The second patch serializes access with flock. With these patches it seems to work. I don't know if the flock patch is really necessary. Any help and comments appreciated. Harald --------------090405080907030301050105 Content-Type: text/plain; name="0001-retry-open-on-EBUSY.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-retry-open-on-EBUSY.patch" >From b7d94db71475a92efc11351cfd621e081b6c8bce Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 11 Jun 2008 11:32:34 +0200 Subject: [PATCH] retry open on EBUSY --- extras/scsi_id/scsi_serial.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c index c5cacfa..ec72c7d 100644 --- a/extras/scsi_id/scsi_serial.c +++ b/extras/scsi_id/scsi_serial.c @@ -822,10 +822,17 @@ int scsi_get_serial (struct scsi_id_device *dev_scsi, const char *devname, int fd; int ind; int retval; + int cnt = 10; memset(dev_scsi->serial, 0, len); dbg("opening %s\n", devname); - fd = open(devname, O_RDONLY | O_NONBLOCK); + while (((fd = open(devname, O_RDONLY | O_NONBLOCK)) != 0) && (cnt > 0) && errno == EBUSY) { + info("%s: cannot open %s: %s", + dev_scsi->kernel_name, devname, strerror(errno)); + info("retrying in 0.5 seconds"); + usleep(500000 + (rand() % 100000) ); + cnt--; + } if (fd < 0) { info("%s: cannot open %s: %s\n", dev_scsi->kernel, devname, strerror(errno)); -- 1.5.5.1 --------------090405080907030301050105 Content-Type: text/plain; name="0002-serialize-scsi_id-access-with-flock.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0002-serialize-scsi_id-access-with-flock.patch" >From ec3abdfd0b2e4f596c4cc988d5b7e6714cdb264e Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 11 Jun 2008 11:42:00 +0200 Subject: [PATCH] serialize scsi_id access with flock --- extras/scsi_id/scsi_id.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c index 5eb95e8..04ae676 100644 --- a/extras/scsi_id/scsi_id.c +++ b/extras/scsi_id/scsi_id.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "../../udev.h" #include "scsi_id.h" @@ -601,6 +602,17 @@ static int scsi_id(char *maj_min_dev) int page_code; char serial_short[MAX_SERIAL_LEN] = ""; + char flock_path[MAX_PATH_LEN]; + int flock_fd = -1; + + strncpy(flock_path, "/sys/", MAX_PATH_LEN-1); + strncat(flock_path, devpath, MAX_PATH_LEN-1); + flock_path[MAX_PATH_LEN-1] = 0; + + flock_fd = open(flock_path, O_RDONLY); + if (flock_fd >= 0) + flock(flock_fd, LOCK_EX); + set_inq_values(&dev_scsi, maj_min_dev); /* get per device (vendor + model) options from the config file */ @@ -636,6 +648,11 @@ static int scsi_id(char *maj_min_dev) retval = 0; } + if (flock_fd >= 0) { + flock(flock_fd, LOCK_UN); + close(flock_fd); + } + return retval; } -- 1.5.5.1 --------------090405080907030301050105-- --------------ms090303050403020300030006 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIKYjCC BS0wggMVoAMCAQICAwOoWjANBgkqhkiG9w0BAQUFADB5MRAwDgYDVQQKEwdSb290IENBMR4w HAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNBIENlcnQgU2lnbmlu ZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRAY2FjZXJ0Lm9yZzAeFw0wNzA2 MDYwNjQ5MDNaFw0wOTA2MDUwNjQ5MDNaMDkxFTATBgNVBAMTDEhhcmFsZCBIb3llcjEgMB4G CSqGSIb3DQEJARYRaGFyYWxkQHJlZGhhdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDcYRNZNcpUzmHaTtZXCPoLNJW7g0iD9Oo8BgGQDmLQPEIw05SINqk5f+YvIvoo a85lze7+bfhDg3MJmcTu5C8OKnej+GfZV8qVnLLg0F1d2pSc1oKTarasUN+BSNTn8mc+BlKM jEF5I4faGGATEgM/1pkscRofiQoWDvMAHsD/UVErVTKzLT03vczQutUYfHJuGJohXdJubQdJ C2AyXqLJBkvns+0pNGB7qMHTVPWm9+v1I18iz0sXe5hOsTMIJFFCkia41ZVpGkwU/9ITVLtY E+UmW897Tpi4uUE5YsPVoA3u5YIFlQFkwW1Zp9bAlmFGNlUUe2UEvpTAWWVte+qBAgMBAAGj gf0wgfowDAYDVR0TAQH/BAIwADBWBglghkgBhvhCAQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNl cnRpZmljYXRlIGZvciBGUkVFIGhlYWQgb3ZlciB0byBodHRwOi8vd3d3LkNBY2VydC5vcmcw QAYDVR0lBDkwNwYIKwYBBQUHAwQGCCsGAQUFBwMCBgorBgEEAYI3CgMEBgorBgEEAYI3CgMD BglghkgBhvhCBAEwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC5j YWNlcnQub3JnMBwGA1UdEQQVMBOBEWhhcmFsZEByZWRoYXQuY29tMA0GCSqGSIb3DQEBBQUA A4ICAQAyKBirdOIjYdzfQAhpme6t2gg/cAzxITk4Vq+DpoxSJ8JD8f6mlQoMblC9zCFAWk7X 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 FWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhv cml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9ydEBjYWNlcnQub3JnAgMDqFowCQYFKw4DAhoF AKCCAegwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDgwNjEx MDk1NTI2WjAjBgkqhkiG9w0BCQQxFgQUNZFAbGuHL/aaxZ5+SBR0wcA4pgcwXwYJKoZIhvcN AQkPMVIwUDALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqG SIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGRBgkrBgEEAYI3EAQxgYMwgYAw eTEQMA4GA1UEChMHUm9vdCBDQTEeMBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIw IAYDVQQDExlDQSBDZXJ0IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBw b3J0QGNhY2VydC5vcmcCAwOoWjCBkwYLKoZIhvcNAQkQAgsxgYOggYAweTEQMA4GA1UEChMH Um9vdCBDQTEeMBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBD ZXJ0IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2VydC5v cmcCAwOoWjANBgkqhkiG9w0BAQEFAASCAQADQaNbOKCq5dIdR38/qq2OK/TrEZz1wUCi0H7J JCYxDM+fFI22r8XGceqUsXpW22etEITat1vNj//p1jlG51GVaDyveOlrkQXVjxLZJiiUoNzy YqMMMh+0iIDv2dPn6eI9B+gssFHaUPgjfkXNHxQ02+DlUpqTKD0A/PNWItnxzTj7WEB1iRNl 9YJnFgvrtFZSBMk87RhEIitF/BACI5kR1EvI/Gtj5FTusVu2LYWFie/DHIppKVIHcJupWNF8 N8ljqJDSckk+PKv9o/suaUYBvdL7HrNNKRW7bCs6Km3IVEetkKZpiU7ZJNvW0E7+xKxc/TvI /BiPd50WICkTGXUnAAAAAAAA --------------ms090303050403020300030006--