[dm-devel] [PATCH 4/5] multipathd: fix version check for DM_DEV_ARM_POLL ioctl
Benjamin Marzinski
bmarzins at redhat.com
Fri Sep 21 22:52:35 UTC 2018
On Fri, Sep 14, 2018 at 02:51:02PM +0200, Martin Wilck wrote:
Reviewed-by: Benjamin Marzinski <bmarzins at redhat.com>
> Make sure the checks in dmevent_poll_supported() and
> arm_dm_event_poll() use the same logic. Currently, the
> version check check fails in arm_dm_event_poll() if
> libdevmapper's DM_VERSION is newer than the kernel's.
>
> Signed-off-by: Martin Wilck <mwilck at suse.com>
> ---
> multipathd/dmevents.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/multipathd/dmevents.c b/multipathd/dmevents.c
> index e98a974c..31e64a7e 100644
> --- a/multipathd/dmevents.c
> +++ b/multipathd/dmevents.c
> @@ -50,16 +50,20 @@ struct dmevent_waiter {
> };
>
> static struct dmevent_waiter *waiter;
> +/*
> + * DM_VERSION_MINOR hasn't been updated when DM_DEV_ARM_POLL
> + * was added in kernel 4.13. 4.37.0 (4.14) has it, safely.
> + */
> +static const unsigned int DM_VERSION_FOR_ARM_POLL[] = {4, 37, 0};
>
> int dmevent_poll_supported(void)
> {
> - unsigned int minv[3] = {4, 37, 0};
> unsigned int v[3];
>
> if (dm_drv_version(v))
> return 0;
>
> - if (VERSION_GE(v, minv))
> + if (VERSION_GE(v, DM_VERSION_FOR_ARM_POLL))
> return 1;
> return 0;
> }
> @@ -120,9 +124,9 @@ static int arm_dm_event_poll(int fd)
> {
> struct dm_ioctl dmi;
> memset(&dmi, 0, sizeof(dmi));
> - dmi.version[0] = DM_VERSION_MAJOR;
> - dmi.version[1] = DM_VERSION_MINOR;
> - dmi.version[2] = DM_VERSION_PATCHLEVEL;
> + dmi.version[0] = DM_VERSION_FOR_ARM_POLL[0];
> + dmi.version[1] = DM_VERSION_FOR_ARM_POLL[1];
> + dmi.version[2] = DM_VERSION_FOR_ARM_POLL[2];
> /* This flag currently does nothing. It simply exists to
> * duplicate the behavior of libdevmapper */
> dmi.flags = 0x4;
> --
> 2.18.0
More information about the dm-devel
mailing list