Re: [RFC PATCH 3/7] 10-dm-rules: don't restore DM_UDEV_DISABLE_OTHER_RULES_FLAG from db

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/1/24 23:40, Martin Wilck wrote:
> We use DM_UDEV_DISABLE_OTHER_RULES_FLAG to tell upper non-DM layers
> to keep their hands off the device in question, for any reason.
> One possible reason is that the device is supended; another is that
> the cookie carries the flag of the same name.
> 
> DM_SUSPENDED is not restored from the db, but evaluated anew for every
> uevent. Therefore DM_UDEV_DISABLE_OTHER_RULES_FLAG shouldn't be
> restored, either. Use a new variable DM_COOKIE_DISABLE_OTHER_RULES_FLAG
> to save and restore the original value from the cookie.
> 
> Signed-off-by: Martin Wilck <mwilck@xxxxxxxx>
> ---
>  udev/10-dm.rules.in | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in
> index c08d829..ef36209 100644
> --- a/udev/10-dm.rules.in
> +++ b/udev/10-dm.rules.in
> @@ -48,7 +48,14 @@ ACTION!="add|change", GOTO="dm_end"
>  # These flags are encoded in DM_COOKIE variable that was introduced in
>  # kernel version 2.6.31. Therefore, we can use this feature with
>  # kernels >= 2.6.31 only. Cookie is not decoded for remove event.
> -ENV{DM_COOKIE}=="?*", IMPORT{program}="(DM_EXEC)/dmsetup udevflags $env{DM_COOKIE}"
> +ENV{DM_COOKIE}!="?*", GOTO="dm_no_cookie"
> +IMPORT{program}="(DM_EXEC)/dmsetup udevflags $env{DM_COOKIE}"
> +
> +# Store the original flag from the cookie as DM_COOKIE_DISABLE_OTHER_RULES_FLAG
> +# in the udev db. DM_UDEV_DISABLE_OTHER_RULES_FLAG will be or'd with other
> +# conditions for use by upper, non-dm layers.
> +ENV{DM_COOKIE_DISABLE_OTHER_RULES_FLAG}="%E{DM_UDEV_DISABLE_OTHER_RULES_FLAG}"
> +LABEL="dm_no_cookie"
>  
>  # There is no cookie set nor any flags encoded in events not originating
>  # in libdevmapper so we need to detect this and try to behave correctly.
> @@ -58,12 +65,13 @@ ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}="1", GOTO="dm_flags_do
>  IMPORT{db}="DM_UDEV_DISABLE_DM_RULES_FLAG"
>  IMPORT{db}="DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG"
>  IMPORT{db}="DM_UDEV_DISABLE_DISK_RULES_FLAG"
> -IMPORT{db}="DM_UDEV_DISABLE_OTHER_RULES_FLAG"
> +IMPORT{db}="DM_COOKIE_DISABLE_OTHER_RULES_FLAG"
>  IMPORT{db}="DM_UDEV_LOW_PRIORITY_FLAG"
>  IMPORT{db}="DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG"
>  IMPORT{db}="DM_UDEV_PRIMARY_SOURCE_FLAG"
>  IMPORT{db}="DM_UDEV_FLAG7"
>  IMPORT{db}="DM_UDEV_RULES_VSN"
> +ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="%E{DM_COOKIE_DISABLE_OTHER_RULES_FLAG}"
>  LABEL="dm_flags_done"
>  
>  # Normally, we operate on "change" events. But when coldplugging, there's an

Looks good...

-- 
Peter





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux