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-changelog

[Xen-changelog] [linux-2.6.18-xen] linux/blkfront: Add "media" file to v

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] linux/blkfront: Add "media" file to vbd sysfs directory
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 29 Jul 2008 19:00:08 -0700
Delivery-date: Tue, 29 Jul 2008 18:59:53 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1217344591 -3600
# Node ID 1d647ef26f3ff578568ad1822bd666a46da9fed5
# Parent  b8916f4d48f6fac453c2e0af896b681d5288c524
linux/blkfront: Add "media" file to vbd sysfs directory

Patch adds "media" file to the vbd sysfs directory.  File contains a
string,  cdrom or disk.

Currently all PV vbd devices are seen by HAL as "disk".  Applications
that query HAL info.capabilities attribute to determine a block
devices capabilities fail to see a PV cdrom as having CDROM
capabilities. With the attached patch and a small corresponding patch
to HAL, applications that query HAL for the storage type of the block
device will see it as a disk or a cdrom.  Standard Linux IDE devices
use this same mechanism.

lshal of vbd without patches:
     info.capabilities = {'storage', 'block'} (string list)
lshal of vbd with patches:
    info.capabilities = {'storage', 'block', 'storage.cdrom'} (string
     list)

Signed-off-by: Pat Campbell <plc@xxxxxxxxxx>
---
 drivers/xen/blkfront/blkfront.c |    9 ++++++++
 drivers/xen/blkfront/block.h    |   15 +++++++++++++
 drivers/xen/blkfront/vbd.c      |   45 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+)

diff -r b8916f4d48f6 -r 1d647ef26f3f drivers/xen/blkfront/blkfront.c
--- a/drivers/xen/blkfront/blkfront.c   Tue Jul 29 13:26:15 2008 +0100
+++ b/drivers/xen/blkfront/blkfront.c   Tue Jul 29 16:16:31 2008 +0100
@@ -352,6 +352,13 @@ static void connect(struct blkfront_info
                return;
        }
 
+       err = xlvbd_sysfs_addif(info);
+       if (err) {
+               xenbus_dev_fatal(info->xbdev, err, "xlvbd_sysfs_addif at %s",
+                                info->xbdev->otherend);
+               return;
+       }
+
        (void)xenbus_switch_state(info->xbdev, XenbusStateConnected);
 
        /* Kick pending requests. */
@@ -390,6 +397,8 @@ static void blkfront_closing(struct xenb
 
        /* Flush gnttab callback work. Must be done with no locks held. */
        flush_scheduled_work();
+
+       xlvbd_sysfs_delif(info);
 
        xlvbd_del(info);
 
diff -r b8916f4d48f6 -r 1d647ef26f3f drivers/xen/blkfront/block.h
--- a/drivers/xen/blkfront/block.h      Tue Jul 29 13:26:15 2008 +0100
+++ b/drivers/xen/blkfront/block.h      Tue Jul 29 16:16:31 2008 +0100
@@ -140,4 +140,19 @@ void xlvbd_del(struct blkfront_info *inf
 void xlvbd_del(struct blkfront_info *info);
 int xlvbd_barrier(struct blkfront_info *info);
 
+#ifdef CONFIG_SYSFS
+int xlvbd_sysfs_addif(struct blkfront_info *info);
+void xlvbd_sysfs_delif(struct blkfront_info *info);
+#else
+static inline int xlvbd_sysfs_addif(struct blkfront_info *info)
+{
+       return 0;
+}
+
+static inline void xlvbd_sysfs_delif(struct blkfront_info *info)
+{
+       ;
+}
+#endif
+
 #endif /* __XEN_DRIVERS_BLOCK_H__ */
diff -r b8916f4d48f6 -r 1d647ef26f3f drivers/xen/blkfront/vbd.c
--- a/drivers/xen/blkfront/vbd.c        Tue Jul 29 13:26:15 2008 +0100
+++ b/drivers/xen/blkfront/vbd.c        Tue Jul 29 16:16:31 2008 +0100
@@ -413,3 +413,48 @@ xlvbd_barrier(struct blkfront_info *info
        return -ENOSYS;
 }
 #endif
+
+#ifdef CONFIG_SYSFS
+static ssize_t show_media(struct device *dev,
+                                 struct device_attribute *attr, char *buf)
+{
+       struct xenbus_device *xendev = to_xenbus_device(dev);
+       struct blkfront_info *info = xendev->dev.driver_data;
+
+       if (info->gd->flags & GENHD_FL_CD)
+               return sprintf(buf, "cdrom\n");
+       return sprintf(buf, "disk\n");
+}
+
+static struct device_attribute xlvbd_attrs[] = {
+       __ATTR(media, S_IRUGO, show_media, NULL),
+};
+
+int xlvbd_sysfs_addif(struct blkfront_info *info)
+{
+       int i;
+       int error = 0;
+
+       for (i = 0; i < ARRAY_SIZE(xlvbd_attrs); i++) {
+               error = device_create_file(info->gd->driverfs_dev,
+                               &xlvbd_attrs[i]);
+               if (error)
+                       goto fail;
+       }
+       return 0;
+
+fail:
+       while (--i >= 0)
+               device_remove_file(info->gd->driverfs_dev, &xlvbd_attrs[i]);
+       return error;
+}
+
+void xlvbd_sysfs_delif(struct blkfront_info *info)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(xlvbd_attrs); i++)
+               device_remove_file(info->gd->driverfs_dev, &xlvbd_attrs[i]);
+}
+
+#endif /* CONFIG_SYSFS */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [linux-2.6.18-xen] linux/blkfront: Add "media" file to vbd sysfs directory, Xen patchbot-linux-2.6.18-xen <=