/* * When a device is being removed this copy fails and we * discard these unsent events.
*/ if (dm_copy_name_and_uuid(event->md, event->name,
event->uuid)) {
DMINFO("%s: skipping sending uevent for lost device",
__func__); goto uevent_free;
}
if (add_uevent_var(&event->ku_env, "DM_NAME=%s", event->name)) {
DMERR("%s: add_uevent_var() for DM_NAME failed",
__func__); goto uevent_free;
}
if (add_uevent_var(&event->ku_env, "DM_UUID=%s", event->uuid)) {
DMERR("%s: add_uevent_var() for DM_UUID failed",
__func__); goto uevent_free;
}
r = kobject_uevent_env(kobj, event->action, event->ku_env.envp); if (r)
DMERR("%s: kobject_uevent_env failed", __func__);
uevent_free:
dm_uevent_free(event);
}
}
EXPORT_SYMBOL_GPL(dm_send_uevents);
/** * dm_path_uevent - called to create a new path event and queue it * * @event_type: path event type enum * @ti: pointer to a dm_target * @path: string containing pathname * @nr_valid_paths: number of valid paths remaining *
*/ void dm_path_uevent(enum dm_uevent_type event_type, struct dm_target *ti, constchar *path, unsignedint nr_valid_paths)
{ struct mapped_device *md = dm_table_get_md(ti->table); struct dm_uevent *event;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.