Message ID | 1555052004-31855-1-git-send-email-dongli.zhang@oracle.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 6dc400af216a79c10cb082f25a7337bcbf532045 |
Headers | show |
Series | [1/1] xen-netback: add reference from xenvif to backend_info to facilitate coredump analysis | expand |
On Fri, Apr 12, 2019 at 02:53:24PM +0800, Dongli Zhang wrote: > During coredump analysis, it is not easy to obtain the address of > backend_info in xen-netback. > > So far there are two ways to obtain backend_info: > > 1. Do what xenbus_device_find() does for vmcore to find the xenbus_device > and then derive it from dev_get_drvdata(). > > 2. Extract backend_info from callstack of xenwatch (e.g., netback_remove() > or frontend_changed()). > > This patch adds a reference from xenvif to backend_info so that it would be > much more easier to obtain backend_info during coredump analysis. > > Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com> Acked-by: Wei Liu <wei.liu2@citrix.com>
From: Dongli Zhang <dongli.zhang@oracle.com> Date: Fri, 12 Apr 2019 14:53:24 +0800 > During coredump analysis, it is not easy to obtain the address of > backend_info in xen-netback. > > So far there are two ways to obtain backend_info: > > 1. Do what xenbus_device_find() does for vmcore to find the xenbus_device > and then derive it from dev_get_drvdata(). > > 2. Extract backend_info from callstack of xenwatch (e.g., netback_remove() > or frontend_changed()). > > This patch adds a reference from xenvif to backend_info so that it would be > much more easier to obtain backend_info during coredump analysis. > > Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com> Applied to net-next.
diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h index 936c0b3..05847eb 100644 --- a/drivers/net/xen-netback/common.h +++ b/drivers/net/xen-netback/common.h @@ -248,6 +248,22 @@ struct xenvif_hash { struct xenvif_hash_cache cache; }; +struct backend_info { + struct xenbus_device *dev; + struct xenvif *vif; + + /* This is the state that will be reflected in xenstore when any + * active hotplug script completes. + */ + enum xenbus_state state; + + enum xenbus_state frontend_state; + struct xenbus_watch hotplug_status_watch; + u8 have_hotplug_status_watch:1; + + const char *hotplug_script; +}; + struct xenvif { /* Unique identifier for this interface. */ domid_t domid; @@ -283,6 +299,8 @@ struct xenvif { struct xenbus_watch credit_watch; struct xenbus_watch mcast_ctrl_watch; + struct backend_info *be; + spinlock_t lock; #ifdef CONFIG_DEBUG_FS diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c index 330ddb6..41c9e8f 100644 --- a/drivers/net/xen-netback/xenbus.c +++ b/drivers/net/xen-netback/xenbus.c @@ -22,22 +22,6 @@ #include <linux/vmalloc.h> #include <linux/rtnetlink.h> -struct backend_info { - struct xenbus_device *dev; - struct xenvif *vif; - - /* This is the state that will be reflected in xenstore when any - * active hotplug script completes. - */ - enum xenbus_state state; - - enum xenbus_state frontend_state; - struct xenbus_watch hotplug_status_watch; - u8 have_hotplug_status_watch:1; - - const char *hotplug_script; -}; - static int connect_data_rings(struct backend_info *be, struct xenvif_queue *queue); static void connect(struct backend_info *be); @@ -472,6 +456,7 @@ static int backend_create_xenvif(struct backend_info *be) return err; } be->vif = vif; + vif->be = be; kobject_uevent(&dev->dev.kobj, KOBJ_ONLINE); return 0;
During coredump analysis, it is not easy to obtain the address of backend_info in xen-netback. So far there are two ways to obtain backend_info: 1. Do what xenbus_device_find() does for vmcore to find the xenbus_device and then derive it from dev_get_drvdata(). 2. Extract backend_info from callstack of xenwatch (e.g., netback_remove() or frontend_changed()). This patch adds a reference from xenvif to backend_info so that it would be much more easier to obtain backend_info during coredump analysis. Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com> --- drivers/net/xen-netback/common.h | 18 ++++++++++++++++++ drivers/net/xen-netback/xenbus.c | 17 +---------------- 2 files changed, 19 insertions(+), 16 deletions(-)