--- lib/filters/filter.c.orig +++ lib/filters/filter.c @@ -13,6 +13,12 @@ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include +#undef MAJOR +#undef MINOR +#undef MKDEV + #include "lib.h" #include "dev-cache.h" #include "filter.h" @@ -87,11 +93,18 @@ } /* Check it's accessible */ - if (!dev_open_flags(dev, O_RDONLY, 0, 1)) { + if (!dev_open_flags(dev, O_RDONLY|O_NONBLOCK, 0, 1)) { log_debug("%s: Skipping: open failed", name); return 0; } - + + /* Skip cdrom device */ + #define CDROM_GET_CAPABILITY 0x5331 + if (ioctl(dev->fd, CDROM_GET_CAPABILITY) >= 0) { + log_debug("%s: Skipping: cdrom device", name ); + goto out; + } + /* Check it's not too small */ if (!dev_get_size(dev, &size)) { log_debug("%s: Skipping: dev_get_size failed", name);