2 * DragonFly specific device routines are added to this file.
8 #include <sys/sysctl.h>
21 #define LVM_FAILURE -1
25 dragonfly_check_dev(int major, const char *path)
28 struct udev_enumerate *udev_enum;
29 struct udev_list_entry *udev_le, *udev_le_first;
30 struct udev_monitor *udev_monitor;
31 struct udev_device *udev_dev;
32 const char *subsystem;
39 if (!strncmp(path, "/dev/", strlen("/dev/"))) {
40 path += strlen("/dev/");
45 fprintf(stderr, "udev_new failed! Need udevd running.\n");
49 udev_enum = udev_enumerate_new(udev);
50 if (udev_enum == NULL) {
51 fprintf(stderr, "udev_enumerate_new failed!\n");
55 ret = udev_enumerate_add_match_expr(udev_enum, "name", __DECONST(char *, path));
57 fprintf(stderr, "udev_enumerate_add_match_expr failed!\n");
61 ret = udev_enumerate_scan_devices(udev_enum);
63 fprintf(stderr, "udev_enumerate_scan_devices failed!\n");
67 udev_le = udev_enumerate_get_list_entry(udev_enum);
68 if (udev_le == NULL) {
70 fprintf(stderr, "udev_enumerate_get_list_entry failed for %s!\n", path);
75 udev_dev = udev_list_entry_get_device(udev_le);
76 if (udev_dev == NULL) {
77 fprintf(stderr, "udev_list_entry_get_device failed!\n");
81 subsystem = udev_device_get_subsystem(udev_dev);
82 driver = udev_device_get_driver(udev_dev);
83 type = udev_device_get_property_value(udev_dev, "disk-type");
85 /* If it's neither a disk driver nor a raid driver, stop here */
86 if ((subsystem == NULL) ||
87 ((strcmp(subsystem, "disk") != 0) &&
88 (strcmp(subsystem, "raid") != 0))) {
92 /* We don't like malloc disks */
93 if (driver && (strcmp(driver, "md") == 0)) {
97 /* Some disk-type checks... */
98 if (type && (strcmp(type, "optical") == 0)) {
102 /* Some disk-type checks... */
103 if (type && (strcmp(type, "floppy") == 0)) {
107 /* Some disk-type checks... */
108 if (type && (strcmp(type, "tape") == 0)) {
112 /* Some disk-type checks... */
113 if (type && (strcmp(type, "memory") == 0)) {
120 udev_device_unref(udev_dev);
122 udev_enumerate_unref(udev_enum);
129 udev_enumerate_get_list_entry failed for bpf4 (/dev/bpf4)!
130 udev_enumerate_get_list_entry failed for log (/dev/log)!
131 udev_enumerate_get_list_entry failed for serno/00000000000000000001 (/dev/serno/00000000000000000001)!
132 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0 (/dev/serno/00000000000000000001.s0)!
133 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0a (/dev/serno/00000000000000000001.s0a)!
134 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0b (/dev/serno/00000000000000000001.s0b)!
135 udev_enumerate_get_list_entry failed for serno/01000000000000000001 (/dev/serno/01000000000000000001)!
136 udev_enumerate_get_list_entry failed for sga (/dev/sga)!
137 udev_enumerate_get_list_entry failed for sgb (/dev/sgb)!
138 udev_enumerate_get_list_entry failed for bpf4 (/dev/bpf4)!
139 udev_enumerate_get_list_entry failed for log (/dev/log)!
140 udev_enumerate_get_list_entry failed for serno/00000000000000000001 (/dev/serno/00000000000000000001)!
141 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0 (/dev/serno/00000000000000000001.s0)!
142 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0a (/dev/serno/00000000000000000001.s0a)!
143 udev_enumerate_get_list_entry failed for serno/00000000000000000001.s0b (/dev/serno/00000000000000000001.s0b)!
144 udev_enumerate_get_list_entry failed for serno/01000000000000000001 (/dev/serno/01000000000000000001)!
145 udev_enumerate_get_list_entry failed for sga (/dev/sga)!
146 udev_enumerate_get_list_entry failed for sgb (/dev/sgb)!