mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-11-23 15:00:56 +07:00
Revert "udev/udev-builtin-path_id.c: Add ATA support for builtin path_id"
This reverts commit 37b2941a4c
.
This commit is contained in:
parent
37b2941a4c
commit
38dc3e3440
@ -390,54 +390,6 @@ out:
|
|||||||
return hostdev;
|
return hostdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct udev_device *handle_scsi_ata(struct udev_device *parent, char **path, char **compat_path) {
|
|
||||||
struct udev_device *targetdev, *target_parent;
|
|
||||||
struct udev_device *atadev = NULL;
|
|
||||||
struct udev *udev = udev_device_get_udev(parent);
|
|
||||||
const char *port_no, *sysname, *name;
|
|
||||||
unsigned host, bus, target, lun;
|
|
||||||
|
|
||||||
assert(parent);
|
|
||||||
assert(path);
|
|
||||||
|
|
||||||
name = udev_device_get_sysname(parent);
|
|
||||||
if (sscanf(name, "%u:%u:%u:%u", &host, &bus, &target, &lun) != 4)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
targetdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_host");
|
|
||||||
if (targetdev == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
target_parent = udev_device_get_parent(targetdev);
|
|
||||||
if (target_parent == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
sysname = udev_device_get_sysname(target_parent);
|
|
||||||
if (sysname == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
atadev = udev_device_new_from_subsystem_sysname(udev, "ata_port", udev_device_get_sysname(target_parent));
|
|
||||||
if (atadev == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
port_no = udev_device_get_sysattr_value(atadev, "port_no");
|
|
||||||
if (port_no == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (bus != 0)
|
|
||||||
/* Devices behind port multiplier have a bus != 0 */
|
|
||||||
path_prepend(path, "ata-%s.%u.0", port_no, bus);
|
|
||||||
else
|
|
||||||
/* Master/slave are distinguished by target id */
|
|
||||||
path_prepend(path, "ata-%s.%u", port_no, target);
|
|
||||||
|
|
||||||
/* old compatible persistent link for ATA devices */
|
|
||||||
if (compat_path)
|
|
||||||
path_prepend(compat_path, "ata-%s", port_no);
|
|
||||||
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char **path) {
|
static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char **path) {
|
||||||
struct udev_device *hostdev;
|
struct udev_device *hostdev;
|
||||||
struct udev_device *vmbusdev;
|
struct udev_device *vmbusdev;
|
||||||
@ -474,7 +426,7 @@ static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char *
|
|||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct udev_device *handle_scsi(struct udev_device *parent, char **path, char **compat_path, bool *supported_parent) {
|
static struct udev_device *handle_scsi(struct udev_device *parent, char **path, bool *supported_parent) {
|
||||||
const char *devtype;
|
const char *devtype;
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *id;
|
const char *id;
|
||||||
@ -513,8 +465,19 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We do not support the ATA transport class, it uses global counters
|
||||||
|
* to name the ata devices which numbers spread across multiple
|
||||||
|
* controllers.
|
||||||
|
*
|
||||||
|
* The real link numbers are not exported. Also, possible chains of ports
|
||||||
|
* behind port multipliers cannot be composed that way.
|
||||||
|
*
|
||||||
|
* Until all that is solved at the kernel level, there are no by-path/
|
||||||
|
* links for ATA devices.
|
||||||
|
*/
|
||||||
if (strstr(name, "/ata") != NULL) {
|
if (strstr(name, "/ata") != NULL) {
|
||||||
parent = handle_scsi_ata(parent, path, compat_path);
|
parent = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -615,8 +578,7 @@ out:
|
|||||||
|
|
||||||
static int builtin_path_id(struct udev_device *dev, int argc __attribute__((unused)), char *argv[] __attribute__((unused)), bool test) {
|
static int builtin_path_id(struct udev_device *dev, int argc __attribute__((unused)), char *argv[] __attribute__((unused)), bool test) {
|
||||||
struct udev_device *parent;
|
struct udev_device *parent;
|
||||||
_cleanup_free_ char *path = NULL;
|
char *path = NULL;
|
||||||
_cleanup_free_ char *compat_path = NULL;
|
|
||||||
bool supported_transport = false;
|
bool supported_transport = false;
|
||||||
bool supported_parent = false;
|
bool supported_parent = false;
|
||||||
|
|
||||||
@ -638,7 +600,7 @@ static int builtin_path_id(struct udev_device *dev, int argc __attribute__((unus
|
|||||||
} else if (streq(subsys, "scsi_tape")) {
|
} else if (streq(subsys, "scsi_tape")) {
|
||||||
handle_scsi_tape(parent, &path);
|
handle_scsi_tape(parent, &path);
|
||||||
} else if (streq(subsys, "scsi")) {
|
} else if (streq(subsys, "scsi")) {
|
||||||
parent = handle_scsi(parent, &path, &compat_path, &supported_parent);
|
parent = handle_scsi(parent, &path, &supported_parent);
|
||||||
supported_transport = true;
|
supported_transport = true;
|
||||||
} else if (streq(subsys, "cciss")) {
|
} else if (streq(subsys, "cciss")) {
|
||||||
parent = handle_cciss(parent, &path);
|
parent = handle_cciss(parent, &path);
|
||||||
@ -654,33 +616,23 @@ static int builtin_path_id(struct udev_device *dev, int argc __attribute__((unus
|
|||||||
parent = skip_subsystem(parent, "serio");
|
parent = skip_subsystem(parent, "serio");
|
||||||
} else if (streq(subsys, "pci")) {
|
} else if (streq(subsys, "pci")) {
|
||||||
path_prepend(&path, "pci-%s", udev_device_get_sysname(parent));
|
path_prepend(&path, "pci-%s", udev_device_get_sysname(parent));
|
||||||
if (compat_path)
|
|
||||||
path_prepend(&compat_path, "pci-%s", udev_device_get_sysname(parent));
|
|
||||||
parent = skip_subsystem(parent, "pci");
|
parent = skip_subsystem(parent, "pci");
|
||||||
supported_parent = true;
|
supported_parent = true;
|
||||||
} else if (streq(subsys, "platform")) {
|
} else if (streq(subsys, "platform")) {
|
||||||
path_prepend(&path, "platform-%s", udev_device_get_sysname(parent));
|
path_prepend(&path, "platform-%s", udev_device_get_sysname(parent));
|
||||||
if (compat_path)
|
|
||||||
path_prepend(&compat_path, "platform-%s", udev_device_get_sysname(parent));
|
|
||||||
parent = skip_subsystem(parent, "platform");
|
parent = skip_subsystem(parent, "platform");
|
||||||
supported_transport = true;
|
supported_transport = true;
|
||||||
supported_parent = true;
|
supported_parent = true;
|
||||||
} else if (streq(subsys, "acpi")) {
|
} else if (streq(subsys, "acpi")) {
|
||||||
path_prepend(&path, "acpi-%s", udev_device_get_sysname(parent));
|
path_prepend(&path, "acpi-%s", udev_device_get_sysname(parent));
|
||||||
if (compat_path)
|
|
||||||
path_prepend(&compat_path, "acpi-%s", udev_device_get_sysname(parent));
|
|
||||||
parent = skip_subsystem(parent, "acpi");
|
parent = skip_subsystem(parent, "acpi");
|
||||||
supported_parent = true;
|
supported_parent = true;
|
||||||
} else if (streq(subsys, "xen")) {
|
} else if (streq(subsys, "xen")) {
|
||||||
path_prepend(&path, "xen-%s", udev_device_get_sysname(parent));
|
path_prepend(&path, "xen-%s", udev_device_get_sysname(parent));
|
||||||
if (compat_path)
|
|
||||||
path_prepend(&compat_path, "xen-%s", udev_device_get_sysname(parent));
|
|
||||||
parent = skip_subsystem(parent, "xen");
|
parent = skip_subsystem(parent, "xen");
|
||||||
supported_parent = true;
|
supported_parent = true;
|
||||||
} else if (streq(subsys, "scm")) {
|
} else if (streq(subsys, "scm")) {
|
||||||
path_prepend(&path, "scm-%s", udev_device_get_sysname(parent));
|
path_prepend(&path, "scm-%s", udev_device_get_sysname(parent));
|
||||||
if (compat_path)
|
|
||||||
path_prepend(&compat_path, "scm-%s", udev_device_get_sysname(parent));
|
|
||||||
parent = skip_subsystem(parent, "scm");
|
parent = skip_subsystem(parent, "scm");
|
||||||
supported_transport = true;
|
supported_transport = true;
|
||||||
supported_parent = true;
|
supported_parent = true;
|
||||||
@ -703,8 +655,10 @@ static int builtin_path_id(struct udev_device *dev, int argc __attribute__((unus
|
|||||||
* might produce conflicting IDs if the parent does not provide a
|
* might produce conflicting IDs if the parent does not provide a
|
||||||
* unique and predictable name.
|
* unique and predictable name.
|
||||||
*/
|
*/
|
||||||
if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport)
|
if (!supported_parent) {
|
||||||
|
free(path);
|
||||||
path = NULL;
|
path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do not return block devices without a well-known transport. Some
|
* Do not return block devices without a well-known transport. Some
|
||||||
@ -749,15 +703,7 @@ out:
|
|||||||
|
|
||||||
udev_builtin_add_property(dev, test, "ID_PATH", path);
|
udev_builtin_add_property(dev, test, "ID_PATH", path);
|
||||||
udev_builtin_add_property(dev, test, "ID_PATH_TAG", tag);
|
udev_builtin_add_property(dev, test, "ID_PATH_TAG", tag);
|
||||||
|
free(path);
|
||||||
/*
|
|
||||||
* Compatible link generation for ATA devices
|
|
||||||
* we assign compat_link to the env variable
|
|
||||||
* ID_PATH_ATA_COMPAT
|
|
||||||
*/
|
|
||||||
if (compat_path)
|
|
||||||
udev_builtin_add_property(dev, test, "ID_PATH_ATA_COMPAT", compat_path);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
Loading…
Reference in New Issue
Block a user