X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fscsi_id%2Fscsi_serial.c;h=2e9168f9419de2b3c53e880142c4d907d4c5f37d;hb=959e8b5decb32fda0a8c8be21aff8bc17382586d;hp=0f883dc02f19b7c86d14e2611e3f885600d4f922;hpb=c45e22151313878dcce33c788f9eebbd93842008;p=elogind.git diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c index 0f883dc02..2e9168f94 100644 --- a/extras/scsi_id/scsi_serial.c +++ b/extras/scsi_id/scsi_serial.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -846,13 +847,15 @@ int scsi_get_serial(struct udev *udev, memset(dev_scsi->serial, 0, len); dbg(udev, "opening %s\n", devname); while (--cnt) { + const struct timespec duration = { 0, 500 * 1000 * 1000 }; + fd = open(devname, O_RDONLY | O_NONBLOCK); if (fd >= 0) break; info(udev, "%s: cannot open %s: %s\n", dev_scsi->kernel, devname, strerror(errno)); if (errno != EBUSY) break; - usleep(500000 + (rand() % 100000) ); + nanosleep(&duration, NULL); } if (fd < 0) return 1;