Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1458516 > unrolled thread

[PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent

Started byVitaly Kuznetsov <vkuznets@redhat.com>
First post2016-08-09 10:50 +0200
Last post2016-08-17 18:40 +0200
Articles 7 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent Vitaly Kuznetsov <vkuznets@redhat.com> - 2016-08-09 10:50 +0200
    [PATCH 2/2] Drivers: hv: get rid of id in struct vmbus_channel Vitaly Kuznetsov <vkuznets@redhat.com> - 2016-08-09 10:50 +0200
    RE: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent KY Srinivasan <kys@microsoft.com> - 2016-08-10 22:40 +0200
      Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent Vitaly Kuznetsov <vkuznets@redhat.com> - 2016-08-11 11:20 +0200
        RE: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent KY Srinivasan <kys@microsoft.com> - 2016-08-12 16:20 +0200
          Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent Vitaly Kuznetsov <vkuznets@redhat.com> - 2016-08-15 18:20 +0200
            RE: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent KY Srinivasan <kys@microsoft.com> - 2016-08-17 18:40 +0200

#1458516 — [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent

FromVitaly Kuznetsov <vkuznets@redhat.com>
Date2016-08-09 10:50 +0200
Subject[PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
Message-ID<s4aTw-5c9-7@gated-at.bofh.it>
Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not guaranteed
to be persistent across reboot or kernel restart and this causes problems
for some tools. E.g. kexec tools use these ids to identify NIC on kdump.
Fix the issue by using relid from channel offer as the unique id instead
of an auto incremented counter.

Vitaly Kuznetsov (2):
  Drivers: hv: make VMBus bus ids persistent
  Drivers: hv: get rid of id in struct vmbus_channel

 drivers/hv/channel_mgmt.c | 2 --
 drivers/hv/vmbus_drv.c    | 2 +-
 include/linux/hyperv.h    | 3 ---
 3 files changed, 1 insertion(+), 6 deletions(-)

-- 
2.7.4

[toc] | [next] | [standalone]


#1458517 — [PATCH 2/2] Drivers: hv: get rid of id in struct vmbus_channel

FromVitaly Kuznetsov <vkuznets@redhat.com>
Date2016-08-09 10:50 +0200
Subject[PATCH 2/2] Drivers: hv: get rid of id in struct vmbus_channel
Message-ID<s4aTw-5c9-9@gated-at.bofh.it>
In reply to#1458516
The auto incremented counter is not being used anymore, get rid of it.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 drivers/hv/channel_mgmt.c | 2 --
 include/linux/hyperv.h    | 3 ---
 2 files changed, 5 deletions(-)

diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
index b6c1211..4b4a41d 100644
--- a/drivers/hv/channel_mgmt.c
+++ b/drivers/hv/channel_mgmt.c
@@ -251,14 +251,12 @@ EXPORT_SYMBOL_GPL(vmbus_prep_negotiate_resp);
  */
 static struct vmbus_channel *alloc_channel(void)
 {
-	static atomic_t chan_num = ATOMIC_INIT(0);
 	struct vmbus_channel *channel;
 
 	channel = kzalloc(sizeof(*channel), GFP_ATOMIC);
 	if (!channel)
 		return NULL;
 
-	channel->id = atomic_inc_return(&chan_num);
 	channel->acquire_ring_lock = true;
 	spin_lock_init(&channel->inbound_lock);
 	spin_lock_init(&channel->lock);
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index b10954a..d9371a7 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -701,9 +701,6 @@ struct vmbus_device {
 };
 
 struct vmbus_channel {
-	/* Unique channel id */
-	int id;
-
 	struct list_head listentry;
 
 	struct hv_device *device_obj;
-- 
2.7.4

[toc] | [prev] | [next] | [standalone]


#1459870

FromKY Srinivasan <kys@microsoft.com>
Date2016-08-10 22:40 +0200
Message-ID<s4Isb-1A3-47@gated-at.bofh.it>
In reply to#1458516

> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> Sent: Tuesday, August 9, 2016 1:46 AM
> To: devel@linuxdriverproject.org
> Cc: linux-kernel@vger.kernel.org; Haiyang Zhang <haiyangz@microsoft.com>;
> KY Srinivasan <kys@microsoft.com>
> Subject: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
> 
> Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not guaranteed
> to be persistent across reboot or kernel restart and this causes problems
> for some tools. E.g. kexec tools use these ids to identify NIC on kdump.
> Fix the issue by using relid from channel offer as the unique id instead
> of an auto incremented counter.

Relids are not persistent. It is only valid between a channel offer message and a relid released message (or an unload or initiate contact message, which invalidates all channels). This is an opaque number that the root generates and uses to track channels. There is no guarantee that the same type of channel (networking, storage, etc) will get the same relid on each reboot.

Regards,

K. Y
> 
> Vitaly Kuznetsov (2):
>   Drivers: hv: make VMBus bus ids persistent
>   Drivers: hv: get rid of id in struct vmbus_channel
> 
>  drivers/hv/channel_mgmt.c | 2 --
>  drivers/hv/vmbus_drv.c    | 2 +-
>  include/linux/hyperv.h    | 3 ---
>  3 files changed, 1 insertion(+), 6 deletions(-)
> 
> --
> 2.7.4

[toc] | [prev] | [next] | [standalone]


#1460307

FromVitaly Kuznetsov <vkuznets@redhat.com>
Date2016-08-11 11:20 +0200
Message-ID<s4UjD-1SL-9@gated-at.bofh.it>
In reply to#1459870
KY Srinivasan <kys@microsoft.com> writes:

>> -----Original Message-----
>> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
>> Sent: Tuesday, August 9, 2016 1:46 AM
>> To: devel@linuxdriverproject.org
>> Cc: linux-kernel@vger.kernel.org; Haiyang Zhang <haiyangz@microsoft.com>;
>> KY Srinivasan <kys@microsoft.com>
>> Subject: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
>> 
>> Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not guaranteed
>> to be persistent across reboot or kernel restart and this causes problems
>> for some tools. E.g. kexec tools use these ids to identify NIC on kdump.
>> Fix the issue by using relid from channel offer as the unique id instead
>> of an auto incremented counter.
>
> Relids are not persistent. It is only valid between a channel offer
> message and a relid released message (or an unload or initiate contact
> message, which invalidates all channels). This is an opaque number
> that the root generates and uses to track channels. There is no
> guarantee that the same type of channel (networking, storage, etc)
> will get the same relid on each reboot.
>

Thanks for the info,

can we use device_id (offermsg.offer.if_instance.b) instead?

-- 
  Vitaly

[toc] | [prev] | [next] | [standalone]


#1461195

FromKY Srinivasan <kys@microsoft.com>
Date2016-08-12 16:20 +0200
Message-ID<s5ltv-2Ka-17@gated-at.bofh.it>
In reply to#1460307

> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> Sent: Thursday, August 11, 2016 2:17 AM
> To: KY Srinivasan <kys@microsoft.com>
> Cc: devel@linuxdriverproject.org; linux-kernel@vger.kernel.org; Haiyang Zhang
> <haiyangz@microsoft.com>
> Subject: Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
> 
> KY Srinivasan <kys@microsoft.com> writes:
> 
> >> -----Original Message-----
> >> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> >> Sent: Tuesday, August 9, 2016 1:46 AM
> >> To: devel@linuxdriverproject.org
> >> Cc: linux-kernel@vger.kernel.org; Haiyang Zhang
> >> <haiyangz@microsoft.com>; KY Srinivasan <kys@microsoft.com>
> >> Subject: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs
> >> persistent
> >>
> >> Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not
> >> guaranteed to be persistent across reboot or kernel restart and this
> >> causes problems for some tools. E.g. kexec tools use these ids to identify
> NIC on kdump.
> >> Fix the issue by using relid from channel offer as the unique id
> >> instead of an auto incremented counter.
> >
> > Relids are not persistent. It is only valid between a channel offer
> > message and a relid released message (or an unload or initiate contact
> > message, which invalidates all channels). This is an opaque number
> > that the root generates and uses to track channels. There is no
> > guarantee that the same type of channel (networking, storage, etc)
> > will get the same relid on each reboot.
> >
> 
> Thanks for the info,
> 
> can we use device_id (offermsg.offer.if_instance.b) instead?

I think you could; I am going to verify and get back to you on this.
Sometime back I removed all the non-determinism in the vmbus device
ID generation. Now, the current scheme of generating the device IDs does
result in persistent IDs across boot (as long as the host presents the devices
to the guest in the same order across boots). Do you have this fix?

Regards,

K. Y
> 
> --
>   Vitaly

[toc] | [prev] | [next] | [standalone]


#1462968

FromVitaly Kuznetsov <vkuznets@redhat.com>
Date2016-08-15 18:20 +0200
Message-ID<s6sMh-7O9-25@gated-at.bofh.it>
In reply to#1461195
KY Srinivasan <kys@microsoft.com> writes:

>> -----Original Message-----
>> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
>> Sent: Thursday, August 11, 2016 2:17 AM
>> To: KY Srinivasan <kys@microsoft.com>
>> Cc: devel@linuxdriverproject.org; linux-kernel@vger.kernel.org; Haiyang Zhang
>> <haiyangz@microsoft.com>
>> Subject: Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
>> 
>> KY Srinivasan <kys@microsoft.com> writes:
>> 
>> >> -----Original Message-----
>> >> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
>> >> Sent: Tuesday, August 9, 2016 1:46 AM
>> >> To: devel@linuxdriverproject.org
>> >> Cc: linux-kernel@vger.kernel.org; Haiyang Zhang
>> >> <haiyangz@microsoft.com>; KY Srinivasan <kys@microsoft.com>
>> >> Subject: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs
>> >> persistent
>> >>
>> >> Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not
>> >> guaranteed to be persistent across reboot or kernel restart and this
>> >> causes problems for some tools. E.g. kexec tools use these ids to identify
>> NIC on kdump.
>> >> Fix the issue by using relid from channel offer as the unique id
>> >> instead of an auto incremented counter.
>> >
>> > Relids are not persistent. It is only valid between a channel offer
>> > message and a relid released message (or an unload or initiate contact
>> > message, which invalidates all channels). This is an opaque number
>> > that the root generates and uses to track channels. There is no
>> > guarantee that the same type of channel (networking, storage, etc)
>> > will get the same relid on each reboot.
>> >
>> 
>> Thanks for the info,
>> 
>> can we use device_id (offermsg.offer.if_instance.b) instead?
>
> I think you could; I am going to verify and get back to you on this.

Thanks!

> Sometime back I removed all the non-determinism in the vmbus device
> ID generation. Now, the current scheme of generating the device IDs does
> result in persistent IDs across boot (as long as the host presents the devices
> to the guest in the same order across boots). Do you have this fix?

Yes, I think I do. The issue I'm trying to address happens rearly on
kdump when we get devices present to us in a different order.

-- 
  Vitaly

[toc] | [prev] | [next] | [standalone]


#1464652

FromKY Srinivasan <kys@microsoft.com>
Date2016-08-17 18:40 +0200
Message-ID<s7c2J-3xu-3@gated-at.bofh.it>
In reply to#1462968

> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> Sent: Monday, August 15, 2016 9:11 AM
> To: KY Srinivasan <kys@microsoft.com>
> Cc: devel@linuxdriverproject.org; linux-kernel@vger.kernel.org; Haiyang Zhang
> <haiyangz@microsoft.com>
> Subject: Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
> 
> KY Srinivasan <kys@microsoft.com> writes:
> 
> >> -----Original Message-----
> >> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> >> Sent: Thursday, August 11, 2016 2:17 AM
> >> To: KY Srinivasan <kys@microsoft.com>
> >> Cc: devel@linuxdriverproject.org; linux-kernel@vger.kernel.org; Haiyang
> Zhang
> >> <haiyangz@microsoft.com>
> >> Subject: Re: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs persistent
> >>
> >> KY Srinivasan <kys@microsoft.com> writes:
> >>
> >> >> -----Original Message-----
> >> >> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
> >> >> Sent: Tuesday, August 9, 2016 1:46 AM
> >> >> To: devel@linuxdriverproject.org
> >> >> Cc: linux-kernel@vger.kernel.org; Haiyang Zhang
> >> >> <haiyangz@microsoft.com>; KY Srinivasan <kys@microsoft.com>
> >> >> Subject: [PATCH 0/2] Drivers: hv: vmbus: make bus ids in sysfs
> >> >> persistent
> >> >>
> >> >> Bus ids for VMBus devices in /sys/bus/vmbus/devices/ are not
> >> >> guaranteed to be persistent across reboot or kernel restart and this
> >> >> causes problems for some tools. E.g. kexec tools use these ids to identify
> >> NIC on kdump.
> >> >> Fix the issue by using relid from channel offer as the unique id
> >> >> instead of an auto incremented counter.
> >> >
> >> > Relids are not persistent. It is only valid between a channel offer
> >> > message and a relid released message (or an unload or initiate contact
> >> > message, which invalidates all channels). This is an opaque number
> >> > that the root generates and uses to track channels. There is no
> >> > guarantee that the same type of channel (networking, storage, etc)
> >> > will get the same relid on each reboot.
> >> >
> >>
> >> Thanks for the info,
> >>
> >> can we use device_id (offermsg.offer.if_instance.b) instead?
> >
> > I think you could; I am going to verify and get back to you on this.
> 
> Thanks!

The instance GUID is guaranteed to be persistent between boots and also across live migration.

K. Y

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web