WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 1/2] xen: Populate xenbus device attributes

To: Bastian Blank <waldi@xxxxxxxxxx>, Jeremy Fitzhardinge <jeremy@xxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 1/2] xen: Populate xenbus device attributes
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Mon, 27 Jun 2011 09:44:31 +0100
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, "virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx" <virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Delivery-date: Mon, 27 Jun 2011 01:46:44 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20110624215146.GA4735@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <20110624215146.GA4735@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Fri, 2011-06-24 at 22:51 +0100, Bastian Blank wrote:
> The xenbus bus type uses device_create_file to assign all used device
> attributes. However it does not remove them when the device goes away.

Doesn't the cleanup happen automatically in the device core when the
device goes away? Either way this is a good cleanup in its own right.

> This patch uses the dev_attrs field of the bus type to specify default
> attributes for all devices.
> 
> Signed-off-by: Bastian Blank <waldi@xxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

Thanks Bastian.

Ian.

> ---
>  drivers/xen/xenbus/xenbus_probe.c          |   41 +++++++++------------------
>  drivers/xen/xenbus/xenbus_probe.h          |    2 +
>  drivers/xen/xenbus/xenbus_probe_backend.c  |    6 +---
>  drivers/xen/xenbus/xenbus_probe_frontend.c |    6 +---
>  4 files changed, 18 insertions(+), 37 deletions(-)
> 
> diff --git a/drivers/xen/xenbus/xenbus_probe.c 
> b/drivers/xen/xenbus/xenbus_probe.c
> index 7397695..2ed0b04 100644
> --- a/drivers/xen/xenbus/xenbus_probe.c
> +++ b/drivers/xen/xenbus/xenbus_probe.c
> @@ -378,26 +378,31 @@ static void xenbus_dev_release(struct device *dev)
>               kfree(to_xenbus_device(dev));
>  }
>  
> -static ssize_t xendev_show_nodename(struct device *dev,
> -                                 struct device_attribute *attr, char *buf)
> +static ssize_t nodename_show(struct device *dev,
> +                          struct device_attribute *attr, char *buf)
>  {
>       return sprintf(buf, "%s\n", to_xenbus_device(dev)->nodename);
>  }
> -static DEVICE_ATTR(nodename, S_IRUSR | S_IRGRP | S_IROTH, 
> xendev_show_nodename, NULL);
>  
> -static ssize_t xendev_show_devtype(struct device *dev,
> -                                struct device_attribute *attr, char *buf)
> +static ssize_t devtype_show(struct device *dev,
> +                         struct device_attribute *attr, char *buf)
>  {
>       return sprintf(buf, "%s\n", to_xenbus_device(dev)->devicetype);
>  }
> -static DEVICE_ATTR(devtype, S_IRUSR | S_IRGRP | S_IROTH, 
> xendev_show_devtype, NULL);
>  
> -static ssize_t xendev_show_modalias(struct device *dev,
> -                                 struct device_attribute *attr, char *buf)
> +static ssize_t modalias_show(struct device *dev,
> +                          struct device_attribute *attr, char *buf)
>  {
>       return sprintf(buf, "xen:%s\n", to_xenbus_device(dev)->devicetype);
>  }
> -static DEVICE_ATTR(modalias, S_IRUSR | S_IRGRP | S_IROTH, 
> xendev_show_modalias, NULL);
> +
> +struct device_attribute xenbus_dev_attrs[] = {
> +     __ATTR_RO(nodename),
> +     __ATTR_RO(devtype),
> +     __ATTR_RO(modalias),
> +     __ATTR_NULL
> +};
> +EXPORT_SYMBOL_GPL(xenbus_dev_attrs);
>  
>  int xenbus_probe_node(struct xen_bus_type *bus,
>                     const char *type,
> @@ -449,25 +454,7 @@ int xenbus_probe_node(struct xen_bus_type *bus,
>       if (err)
>               goto fail;
>  
> -     err = device_create_file(&xendev->dev, &dev_attr_nodename);
> -     if (err)
> -             goto fail_unregister;
> -
> -     err = device_create_file(&xendev->dev, &dev_attr_devtype);
> -     if (err)
> -             goto fail_remove_nodename;
> -
> -     err = device_create_file(&xendev->dev, &dev_attr_modalias);
> -     if (err)
> -             goto fail_remove_devtype;
> -
>       return 0;
> -fail_remove_devtype:
> -     device_remove_file(&xendev->dev, &dev_attr_devtype);
> -fail_remove_nodename:
> -     device_remove_file(&xendev->dev, &dev_attr_nodename);
> -fail_unregister:
> -     device_unregister(&xendev->dev);
>  fail:
>       kfree(xendev);
>       return err;
> diff --git a/drivers/xen/xenbus/xenbus_probe.h 
> b/drivers/xen/xenbus/xenbus_probe.h
> index 888b990..b814935 100644
> --- a/drivers/xen/xenbus/xenbus_probe.h
> +++ b/drivers/xen/xenbus/xenbus_probe.h
> @@ -48,6 +48,8 @@ struct xen_bus_type
>       struct bus_type bus;
>  };
>  
> +extern struct device_attribute xenbus_dev_attrs[];
> +
>  extern int xenbus_match(struct device *_dev, struct device_driver *_drv);
>  extern int xenbus_dev_probe(struct device *_dev);
>  extern int xenbus_dev_remove(struct device *_dev);
> diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c 
> b/drivers/xen/xenbus/xenbus_probe_backend.c
> index 6cf467b..ec510e5 100644
> --- a/drivers/xen/xenbus/xenbus_probe_backend.c
> +++ b/drivers/xen/xenbus/xenbus_probe_backend.c
> @@ -183,10 +183,6 @@ static void frontend_changed(struct xenbus_watch *watch,
>       xenbus_otherend_changed(watch, vec, len, 0);
>  }
>  
> -static struct device_attribute xenbus_backend_dev_attrs[] = {
> -     __ATTR_NULL
> -};
> -
>  static struct xen_bus_type xenbus_backend = {
>       .root = "backend",
>       .levels = 3,            /* backend/type/<frontend>/<id> */
> @@ -200,7 +196,7 @@ static struct xen_bus_type xenbus_backend = {
>               .probe          = xenbus_dev_probe,
>               .remove         = xenbus_dev_remove,
>               .shutdown       = xenbus_dev_shutdown,
> -             .dev_attrs      = xenbus_backend_dev_attrs,
> +             .dev_attrs      = xenbus_dev_attrs,
>       },
>  };
>  
> diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c 
> b/drivers/xen/xenbus/xenbus_probe_frontend.c
> index b6a2690..ed2ba47 100644
> --- a/drivers/xen/xenbus/xenbus_probe_frontend.c
> +++ b/drivers/xen/xenbus/xenbus_probe_frontend.c
> @@ -81,10 +81,6 @@ static void backend_changed(struct xenbus_watch *watch,
>       xenbus_otherend_changed(watch, vec, len, 1);
>  }
>  
> -static struct device_attribute xenbus_frontend_dev_attrs[] = {
> -     __ATTR_NULL
> -};
> -
>  static const struct dev_pm_ops xenbus_pm_ops = {
>       .suspend        = xenbus_dev_suspend,
>       .resume         = xenbus_dev_resume,
> @@ -106,7 +102,7 @@ static struct xen_bus_type xenbus_frontend = {
>               .probe          = xenbus_dev_probe,
>               .remove         = xenbus_dev_remove,
>               .shutdown       = xenbus_dev_shutdown,
> -             .dev_attrs      = xenbus_frontend_dev_attrs,
> +             .dev_attrs      = xenbus_dev_attrs,
>  
>               .pm             = &xenbus_pm_ops,
>       },



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>