diff mbox series

[4/5] multipathd: fix version check for DM_DEV_ARM_POLL ioctl

Message ID 20180914125103.1154-4-mwilck@suse.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show
Series [1/5] libmultipath: nvme: fix path detection for kernel 4.16 | expand

Commit Message

Martin Wilck Sept. 14, 2018, 12:51 p.m. UTC
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@suse.com>
---
 multipathd/dmevents.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

Comments

Benjamin Marzinski Sept. 21, 2018, 10:52 p.m. UTC | #1
On Fri, Sep 14, 2018 at 02:51:02PM +0200, Martin Wilck wrote:

Reviewed-by: Benjamin Marzinski <bmarzins@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@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

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

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;