From: Zbigniew Jędrzejewski-Szmek Date: Thu, 15 Apr 2021 05:49:31 +0000 (+0200) Subject: udev/cdrom_id: do not pass ioctl return value to log_debug_errno() X-Git-Tag: v249-rc1~407^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec77d1ab3b9cc156f724515779e9ecb2aa8b4188;p=thirdparty%2Fsystemd.git udev/cdrom_id: do not pass ioctl return value to log_debug_errno() While at it, let's print the tray status in human readable form. --- diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index 60c7b4922ca..f1715a93bc1 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -302,10 +302,23 @@ static int cd_capability_compat(Context *c) { } static int cd_media_compat(Context *c) { + int r; + assert(c); - if (ioctl(c->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) - return log_debug_errno(errno, "CDROM_DRIVE_STATUS != CDS_DISC_OK"); + r = ioctl(c->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); + if (r < 0) + return log_debug_errno(errno, "ioctl(CDROM_DRIVE_STATUS) failed: m"); + if (r != CDS_DISC_OK) { + log_debug("ioctl(CDROM_DRIVE_STATUS) → %d (%s), ignoring", + r, + r == CDS_NO_INFO ? "no info" : + r == CDS_NO_DISC ? "no disc" : + r == CDS_TRAY_OPEN ? "tray open" : + r == CDS_DRIVE_NOT_READY ? "drive not ready" : + "unkown status"); + return -ENOMEDIUM; + } c->has_media = true; return 0;