[libvirt] [PATCH] Removing devicePath member from dev struct
Daniel Veillard
veillard at redhat.com
Thu Nov 19 15:07:25 UTC 2009
On Thu, Nov 19, 2009 at 11:09:04AM +0100, Daniel Veillard wrote:
> On Wed, Nov 18, 2009 at 04:48:42PM -0500, Dave Allan wrote:
> > I realized that I inadvertently added a member to the def struct to
> > contain each device's sysfs path when there was an existing member in
> > the dev struct for "OS specific path to device metadat, eg sysfs" Since
> > the udev backend needs to record the sysfs path while it's in the
> > process of creating the device, before the dev struct gets allocated, I
> > chose to remove the member from the dev struct. I've attached a patch.
> > An alternative would be to store the information twice, but that seems
> > crufty to me.
> >
> > Dave
>
> > >From 74b97811c298653924b10ce29c26e4282c3786a3 Mon Sep 17 00:00:00 2001
> > From: David Allan <dallan at redhat.com>
> > Date: Wed, 18 Nov 2009 16:10:32 -0500
> > Subject: [PATCH 1/1] Remove devicePath member from dev struct to avoid redundancy
> >
> > ---
> > src/conf/node_device_conf.c | 1 -
> > src/conf/node_device_conf.h | 1 -
> > src/node_device/node_device_driver.c | 2 +-
> > src/node_device/node_device_hal.c | 2 +-
> > src/node_device/node_device_udev.c | 7 -------
> > 5 files changed, 2 insertions(+), 11 deletions(-)
> >
> > diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
> > index f55c9c7..f2faeec 100644
> > --- a/src/conf/node_device_conf.c
> > +++ b/src/conf/node_device_conf.c
> > @@ -156,7 +156,6 @@ void virNodeDeviceObjFree(virNodeDeviceObjPtr dev)
> > if (!dev)
> > return;
> >
> > - VIR_FREE(dev->devicePath);
> > virNodeDeviceDefFree(dev->def);
> > if (dev->privateFree)
> > (*dev->privateFree)(dev->privateData);
> > diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
> > index 639a7e7..7a20bd6 100644
> > --- a/src/conf/node_device_conf.h
> > +++ b/src/conf/node_device_conf.h
> > @@ -178,7 +178,6 @@ typedef virNodeDeviceObj *virNodeDeviceObjPtr;
> > struct _virNodeDeviceObj {
> > virMutex lock;
> >
> > - char *devicePath; /* OS specific path to device metadat, eg sysfs */
> > virNodeDeviceDefPtr def; /* device definition */
> > void *privateData; /* driver-specific private data */
> > void (*privateFree)(void *data); /* destructor for private data */
> > diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
> > index cddd994..7aed916 100644
> > --- a/src/node_device/node_device_driver.c
> > +++ b/src/node_device/node_device_driver.c
> > @@ -85,7 +85,7 @@ static int update_driver_name(virConnectPtr conn,
> >
> > VIR_FREE(dev->def->driver);
> >
> > - if (virAsprintf(&driver_link, "%s/driver", dev->devicePath) < 0) {
> > + if (virAsprintf(&driver_link, "%s/driver", dev->def->sysfs_path) < 0) {
> > virReportOOMError(conn);
> > goto cleanup;
> > }
> > diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_device_hal.c
> > index 1e1d872..31c1764 100644
> > --- a/src/node_device/node_device_hal.c
> > +++ b/src/node_device/node_device_hal.c
> > @@ -470,7 +470,7 @@ static void dev_create(const char *udi)
> >
> > dev->privateData = privData;
> > dev->privateFree = free_udi;
> > - dev->devicePath = devicePath;
> > + dev->def->sysfs_path = devicePath;
> >
> > virNodeDeviceObjUnlock(dev);
> >
> > diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
> > index 4ddf360..9b48052 100644
> > --- a/src/node_device/node_device_udev.c
> > +++ b/src/node_device/node_device_udev.c
> > @@ -1230,13 +1230,6 @@ static int udevAddOneDevice(struct udev_device *device)
> > goto out;
> > }
> >
> > - dev->devicePath = strdup(udev_device_get_devpath(device));
> > - if (dev->devicePath == NULL) {
> > - virReportOOMError(NULL);
> > - virNodeDeviceObjRemove(&driverState->devs, dev);
> > - goto out;
> > - }
> > -
> > virNodeDeviceObjUnlock(dev);
> >
> > ret = 0;
>
> ACK, it's a cleanup, so please commit before tomorrow's release,
Okay, I pushed it !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list