mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
48188d7181
For DM devices, the add/change/remove can appear as action for genuine udev events. However, there are more action types (bind, unbind, move, online, offline) which never appear as actions for genuine DM udev events, but they can still be synthesized (e.g. by writing "<action>" to "/sys/.../uevent" file or by calling "udevadm trigger --action=<action>"). Let's also process these extra action types so that the udev-related content is not lost completely, keeping all the symlinks and udev db entries just like this was a synthetic udev event with "change" action. Related to https://gitlab.com/lvmteam/lvm2/-/issues/4.
58 lines
2.2 KiB
Plaintext
58 lines
2.2 KiB
Plaintext
# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This file is part of LVM2.
|
|
|
|
# Udev rules for device-mapper devices.
|
|
#
|
|
# These rules create symlinks in /dev/disk directory.
|
|
# Symlinks that depend on probing filesystem type,
|
|
# label and uuid are created only if the device is not
|
|
# suspended.
|
|
|
|
# "add" event is processed on coldplug only!
|
|
ACTION=="remove", GOTO="dm_end"
|
|
ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_end"
|
|
ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="dm_end"
|
|
|
|
SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
|
|
ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
|
|
|
|
ENV{.DM_SUSPENDED}=="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", GOTO="dm_import"
|
|
ENV{.DM_NOSCAN}=="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", GOTO="dm_import"
|
|
ENV{.DM_SUSPENDED}=="1", GOTO="dm_end"
|
|
ENV{.DM_NOSCAN}=="1", GOTO="dm_watch"
|
|
|
|
(BLKID_RULE)
|
|
GOTO="dm_link"
|
|
|
|
LABEL="dm_import"
|
|
IMPORT{db}="ID_FS_TYPE"
|
|
IMPORT{db}="ID_FS_USAGE"
|
|
IMPORT{db}="ID_FS_UUID_ENC"
|
|
IMPORT{db}="ID_FS_LABEL_ENC"
|
|
IMPORT{db}="ID_PART_ENTRY_NAME"
|
|
IMPORT{db}="ID_PART_ENTRY_UUID"
|
|
IMPORT{db}="ID_PART_ENTRY_SCHEME"
|
|
IMPORT{db}="ID_PART_GPT_AUTO_ROOT"
|
|
|
|
LABEL="dm_link"
|
|
ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100"
|
|
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
|
|
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
|
|
ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}"
|
|
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}"
|
|
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_GPT_AUTO_ROOT}=="1", SYMLINK+="gpt-auto-root"
|
|
|
|
# Add inotify watch to track changes on this device.
|
|
# Using the watch rule is not optimal - it generates a lot of spurious
|
|
# and useless events whenever the device opened for read-write is closed.
|
|
# The best would be to generete the event directly in the tool changing
|
|
# relevant information so only relevant events will be processed
|
|
# (like creating a filesystem, changing filesystem label etc.).
|
|
#
|
|
# But let's use this until we have something better...
|
|
LABEL="dm_watch"
|
|
OPTIONS+="watch"
|
|
|
|
LABEL="dm_end"
|