1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-06 08:26:52 +03:00
Commit Graph

78 Commits

Author SHA1 Message Date
Martin Pitt
30e3b1a0d3 cdrom_id: Swap media state and TOC info probing
Blank CDs do not have a TOC, thus will fail cd_media_toc() (at least with the
"Do not ignore errors from scsi_cmd_run()" fix). Thus probe the media state
first, so that we can properly detect blank media.
2010-04-15 21:29:18 +02:00
Martin Pitt
58e178894b cdrom_id: Do not ignore errors from scsi_cmd_run()
scsi_cmd_run() can return positive error messages if we have CHECK_CONDITION
set and get the error code from the SCSI command result. So check the result
for non-zero, not for being negative.

This should fix another cause for "phantom" media in empty CD-ROM drives.

Thanks to Mike Brudevold <mike@brudevold.com> for spotting this!

https://launchpad.net/bugs/562978
2010-04-15 21:29:17 +02:00
Kay Sievers
a60b077a46 cdrom_id: debug - print feature values in hex 2010-04-15 21:22:38 +02:00
Kay Sievers
140647ad1a cdrom_id: debug - print feature values in hex 2010-04-15 21:18:21 +02:00
Kay Sievers
2e9df19818 cdrom_id: print more debug messages 2010-04-15 20:48:04 +02:00
Kay Sievers
0413a47ebf cdrom_id: rework feature/profiles buffer parsing 2010-04-15 20:07:07 +02:00
Kay Sievers
c1b7f60dea update NEWS 2010-04-14 17:00:57 +02:00
Martin Pitt
2b861dc927 cdrom_id: Fix uninitialized buffers
Commit 5c6954f is actually a no-op, since static variables are already zero'ed
by default anyway (but we keep it for clarity). The real difference was that a
build with -O0 wor while a build with -O2 didn't.

Turns out that some ioctls do not actually touch the result buffer in some
cases, so we need to zero the result buffers to avoid interpreting random da as
CD properties.

https://launchpad.net/bugs/559723
https://launchpad.net/bugs/561585
2010-04-13 15:25:48 +02:00
Martin Pitt
816e6bf0fb cdrom_id: Fix uninitialized variables
In cases where cdrom_id does not go through the entire code path and one of the
probing functions returns -1 or exits early, the remaining variables were never
initialized. This caused effects like "phantom" audio CDs on empty drives, or
bogus data like ID_CDROM_MEDIA_TRACK_COUNT=22528.

Initialize the variables right away to avoid that.

Bug-Ubuntu: https://launchpad.net/bugs/559723
2010-04-13 10:49:24 +02:00
Kay Sievers
4b06c40935 replace "add|change" with "!remove" 2010-04-12 16:52:41 +02:00
Kay Sievers
5c5ebde711 cdrom_id: always set ID_CDROM regardless if we can run cdrom_id 2010-04-12 01:12:23 +02:00
Kay Sievers
d45c8c8b01 cdrom_id: check mount state in retry loop
Based on a patch from Harald Hoyer.
2010-04-07 11:32:22 +02:00
Kay Sievers
cccfffbe04 cdrom_id: retry to open the device, if EBUSY
We might fight about the device with polling processes, or other
users who probe the device. Retry a few times if the other one goes
away in the meantime.

Based on a patch from Harald Hoyer.
2010-04-07 09:24:25 +02:00
Harald Hoyer
36a07a8c34 cdrom_id: remove debugging code 2010-04-07 09:23:46 +02:00
Kay Sievers
38a3cde11b cdrom_id: open non-mounted optical media with O_EXCL
This should prevent confusing drives during CD burning sessions. Based
on a patch from Harald Hoyer.
2010-03-18 11:14:32 +01:00
Kay Sievers
63480d01aa cdrom_id: remove deprecated device matches 2009-12-15 16:15:33 +01:00
David Zeuthen
7505831b7e cdrom_id: Still check profiles even if there is no media
Even when there is no medium in the drive, we should still check the
profiles supported by the drive. Otherwise we fail to detect things
like Blu-ray drives. See

 https://bugzilla.gnome.org/show_bug.cgi?id=600273

for more information.

Signed-off-by: David Zeuthen <davidz@redhat.com>
2009-11-10 12:32:38 -05:00
Alan Jenkins
214a6c791c fix spelling
Fix spelling in docbook comments, code comments, and a local variable
name.  Thanks to "ispell -h" for docbook HTML and "scspell" for source
code.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2009-08-08 15:42:05 +02:00
Diego Elio 'Flameeyes' Pettenò
59d93adb29 Merge libudev, udev, and the unconditional extras in a single Makefile.am.
Instead of using multiple recursive Makefile.am files, use a single
Makefile.am that sets and builds all the basic suite of libraries and
binaries for udev. This reduces the number of files in the source tree, and
also reduces drastically the build time when using parallel-make.

With this setup, all the compile steps will be executed in parallel, and
just the linking stage will be (partially) serialised on the libraries
creation.
2009-08-07 19:15:28 +02:00
Kay Sievers
2a827c959a make: build internal tools against libudev-private.la 2009-07-25 20:37:45 +02:00
Kay Sievers
bcee964977 extras: delete man pages for private udev tools
These are mostly dummy man pages, without real content, some even
outdated. None of these tools are part of any offered public interface,
and they should not pretend to be by offering a man page.
2009-06-17 21:57:40 +02:00
Kay Sievers
6133f3432f cleanup ./configure installation directory options 2009-06-17 02:25:07 +02:00
Kay Sievers
9060b066d9 move syslog wrapper to libudev 2009-06-09 22:47:48 +02:00
Kay Sievers
48a9b173e8 libudev: move to top-level directory 2009-06-08 21:36:06 +02:00
Kay Sievers
e91ac78ffc cdrom_id: add error message if open() fails 2009-05-29 13:21:38 +02:00
Kay Sievers
d3c8231e73 cdrom_id: suppress ID_CDROM_MEDIA_STATE=blank for plain non-writable CDROM media
Some broken fake cdrom drives return ID_CDROM_MEDIA_STATE=blank.

  $ /lib/udev/cdrom_id -d /dev/sr1
  main: probing: '/dev/sr1'
  cd_inquiry: INQUIRY: [Nokia   ][S60             ][1.0 ]
  cd_profiles: GET CONFIGURATION: number of profiles 76
  cd_profiles: current profile 0x08
  cd_media_toc: READ TOC: len: 12
  cd_media_toc: last track 1 starts at block 0
  cd_media_info: disk type 00
  ID_CDROM=1
  ID_CDROM_MRW=1
  ID_CDROM_MRW_W=1
  ID_CDROM_MEDIA=1
  ID_CDROM_MEDIA_CD=1
  ID_CDROM_MEDIA_STATE=blank

Others work fine, but ID_CDROM_MEDIA_STATE is not needed for non-writable CDROM media:

  $ /lib/udev/cdrom_id -d /dev/sr1
  main: probing: '/dev/sr1'
  cd_inquiry: INQUIRY: [SanDisk ][U3 Cruzer Micro ][8.02]
  cd_profiles: GET CONFIGURATION: number of profiles 72
  cd_profiles: current profile 0x08
  cd_media_toc: READ TOC: len: 20
  cd_media_toc: track=1 info=0x4(data) start_block=0
  cd_media_toc: last track 1 starts at block 0
  cd_media_info: disk type 00
  ID_CDROM=1
  ID_CDROM_MRW=1
  ID_CDROM_MRW_W=1
  ID_CDROM_MEDIA=1
  ID_CDROM_MEDIA_CD=1
  ID_CDROM_MEDIA_STATE=complete
  ID_CDROM_MEDIA_SESSION_COUNT=1
  ID_CDROM_MEDIA_TRACK_COUNT=1
  ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
2009-05-26 00:50:45 +02:00
Kay Sievers
d6f0b22d57 cdrom_id: skip media tests if CDROM_DRIVE_STATUS != CDS_DISC_OK 2009-04-23 15:04:16 +02:00
Kay Sievers
f907449eee cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
Some broken mobile phones offer a faked cdrom drive with a media
without any tracks.
2009-04-21 03:27:14 +02:00
Kay Sievers
55d8f5e208 cdrom_id: add Xen cdrom support 2009-04-17 00:29:56 +02:00
Adam Buchbinder
57a9e68eb7 cdrom_id: update manpage
Include usage information on the -d/--debug flag. Also bump the date.

Signed-off-by: Adam Buchbinder <adam.buchbinder@gmail.com>
2009-03-16 23:09:52 +01:00
Kay Sievers
5d89ef7bf9 make: do not delete autotools generated file with distclean
[...] running the command
`make maintainer-clean' should not delete `configure' even if
`configure' can be remade using a rule in the Makefile.  More
generally, `make maintainer-clean' should not delete anything that
needs to exist in order to run `configure' and then begin to build
the program.  This is the only exception; `maintainer-clean' should
delete everything else that can be rebuilt.
2008-12-06 04:03:08 +01:00
Kay Sievers
e02d738ee4 cdrom_id: remove ARRAY_SIZE() declaration 2008-10-21 12:40:47 +02:00
Kay Sievers
f183b6ed76 libudev: add global property list 2008-10-16 13:51:29 +02:00
Kay Sievers
e598c5738c libudev: get rid of selinux
"Hello world!" linked against libselinux parses /proc/mounts and
whatever else on startup, even when the lib is not needed at all.
Not funny! Get rid of that thing where it's not absolutely needed.
2008-10-02 18:48:40 +02:00
Kay Sievers
033e9f8cde use no_argument, required_argument, optional_argument in longopts 2008-10-02 16:49:05 +02:00
Kay Sievers
38f27948cd always include config.h from Makefile 2008-09-19 23:03:49 -07:00
Kay Sievers
7525097713 extras: use libudev code 2008-09-10 18:24:39 +02:00
Kay Sievers
b2946df419 libudev: rename libudev-utils.c libudev-util.c 2008-09-10 17:12:33 +02:00
Kay Sievers
7a01f11afb libudev: get rid of udev_utils.c 2008-09-10 17:08:24 +02:00
Kay Sievers
b21b95d722 libudev: get rid of udev_sysfs.c 2008-09-10 14:29:07 +02:00
Kay Sievers
55e9959b15 update file headers 2008-09-10 02:40:42 +02:00
Kay Sievers
4f4b12c203 libudev: add selinux 2008-09-10 00:46:17 +02:00
Kay Sievers
7d563a17f3 use libudev code, unify logging, pass udev context around everywhere 2008-09-06 15:45:31 +02:00
Kay Sievers
f46a8a98a7 vol_id: make the --offset= argument optional 2008-08-22 10:04:55 +02:00
Kay Sievers
01618658fd use autotools 2008-07-30 01:45:23 +02:00
Kay Sievers
726687ad48 delete all Makefiles and move udev source to udev/ 2008-07-30 00:39:15 +02:00
Kay Sievers
282988c4f8 move default rules from /etc/udev/rules.d/ to /lib/udev/rules.d/
None of these rules is supposed to be changed by users, so move
them out of /etc. Custom rules, and automatically generated rules
stay in /etc. All rules are still processed in lexical order,
regardless which directory they live in.
2008-07-18 15:56:03 +02:00
Kay Sievers
9bbdf6eb3c cdrom_id: fix recognition of blank media
Thanks to David!
2008-06-12 07:20:14 +02:00
Kay Sievers
ec404619a6 cdrom_id: export ID_CDROM_MEDIA_TRACK_COUNT_AUDIO=, ID_CDROM_MEDIA_TRACK_COUNT_DATA=
Iterate over all tracks, instead of looking only at the first
one for audio. Thanks to David!
2008-06-11 23:24:13 +02:00
Matthias Schwarzott
4cd71da560 cdrom_id: fix segfault 2008-05-14 16:03:49 +02:00