Re: [PATCH] udev: allow for udev attribute reading bug.

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

 



does this apply to eudev as well?  I'm thinking of upgrading from an
older udev to eudev on our boot media.

On Tue, Sep 17, 2019 at 11:11 PM NeilBrown <neilb@xxxxxxx> wrote:
>
>
> There is a bug in udev (which will hopefully get fixed, but
> we should allow for it anways).
> When reading a sysfs attribute, it first reads the whole
> value of the attribute, then reads again expecting to get
> a read of 0 bytes, like you would with an ordinary file.
> If the sysfs attribute changed between these two reads, it can
> get a mixture of two values.
>
> In particular, if it reads when 'array_state' is changing from
> 'clear' to 'inactive', it can find the value as "clear\nve".
>
> This causes the test for "|clear|active" to fail, so systemd is allowed
> to think that the array is ready - when it isn't.
>
> So change the pattern to allow for this but adding a wildcard at
> the end.
> Also don't allow for an empty string - reading array_state will
> never return an empty string - if it exists at all, it will be
> non-empty.
>
> Signed-off-by: NeilBrown <neilb@xxxxxxx>
> ---
>  udev-md-raid-arrays.rules | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules
> index d3916651cf5c..c8fa8e89ef69 100644
> --- a/udev-md-raid-arrays.rules
> +++ b/udev-md-raid-arrays.rules
> @@ -14,7 +14,7 @@ ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
>  # never leave state 'inactive'
>  ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
>  TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end"
> -ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end"
> +ATTR{md/array_state}=="clear*|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end"
>  LABEL="md_ignore_state"
>
>  IMPORT{program}="BINDIR/mdadm --detail --no-devices --export $devnode"
> --
> 2.14.0.rc0.dirty
>



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux