All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rbd: a few simple changes
@ 2012-02-29  3:46 Alex Elder
  2012-03-02 20:59 ` Sage Weil
  0 siblings, 1 reply; 2+ messages in thread
From: Alex Elder @ 2012-02-29  3:46 UTC (permalink / raw)
  To: ceph-devel

Here are a few very simple cleanups:
     - Add a "RBD_" prefix to the two driver name string definitions.
     - Move the definition of struct rbd_request below struct rbd_req_coll
       to avoid the need for an empty declaration of the latter.
     - Move and group the definitions of rbd_root_dev_release() and
       rbd_root_dev, as well as rbd_bus_type and rbd_bus_attrs[],
       close to the top of the file.  Arrange the latter so
       rbd_bus_type.bus_attrs can be initialized statically.
     - Get rid of an unnecessary local variable in rbd_open().
     - Rework some hokey logic in rbd_bus_add_dev(), so the value of
       "ret" at the end is either 0 or -ENOENT to avoid the need for
       the code duplication that was there.
     - Rename a goto target in rbd_add().

Signed-off-by: Alex Elder <elder@dreamhost.com>
---
  drivers/block/rbd.c |  107 
+++++++++++++++++++++++++--------------------------
  1 files changed, 53 insertions(+), 54 deletions(-)

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index f6dba36..e7d6dfc 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -41,8 +41,8 @@

  #include "rbd_types.h"

-#define DRV_NAME "rbd"
-#define DRV_NAME_LONG "rbd (rados block device)"
+#define RBD_DRV_NAME "rbd"
+#define RBD_DRV_NAME_LONG "rbd (rados block device)"

  #define RBD_MINORS_PER_MAJOR	256		/* max minors per blkdev */

@@ -83,7 +83,7 @@ struct rbd_options {
  };

  /*
- * an instance of the client.  multiple devices may share a client.
+ * an instance of the client.  multiple devices may share an rbd client.
   */
  struct rbd_client {
  	struct ceph_client	*client;
@@ -92,20 +92,9 @@ struct rbd_client {
  	struct list_head	node;
  };

-struct rbd_req_coll;
-
  /*
- * a single io request
+ * a request completion status
   */
-struct rbd_request {
-	struct request		*rq;		/* blk layer request */
-	struct bio		*bio;		/* cloned bio */
-	struct page		**pages;	/* list of used pages */
-	u64			len;
-	int			coll_index;
-	struct rbd_req_coll	*coll;
-};
-
  struct rbd_req_status {
  	int done;
  	int rc;
@@ -122,6 +111,18 @@ struct rbd_req_coll {
  	struct rbd_req_status	status[0];
  };

+/*
+ * a single io request
+ */
+struct rbd_request {
+	struct request		*rq;		/* blk layer request */
+	struct bio		*bio;		/* cloned bio */
+	struct page		**pages;	/* list of used pages */
+	u64			len;
+	int			coll_index;
+	struct rbd_req_coll	*coll;
+};
+
  struct rbd_snap {
  	struct	device		dev;
  	const char		*name;
@@ -170,10 +171,6 @@ struct rbd_device {
  	struct device		dev;
  };

-static struct bus_type rbd_bus_type = {
-	.name		= "rbd",
-};
-
  static DEFINE_MUTEX(ctl_mutex);	  /* Serialize 
open/close/setup/teardown */

  static LIST_HEAD(rbd_dev_list);    /* devices */
@@ -191,6 +188,31 @@ static ssize_t rbd_snap_add(struct device *dev,
  static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev,
  				  struct rbd_snap *snap);

+static ssize_t rbd_add(struct bus_type *bus, const char *buf,
+		       size_t count);
+static ssize_t rbd_remove(struct bus_type *bus, const char *buf,
+			  size_t count);
+
+static struct bus_attribute rbd_bus_attrs[] = {
+	__ATTR(add, S_IWUSR, NULL, rbd_add),
+	__ATTR(remove, S_IWUSR, NULL, rbd_remove),
+	__ATTR_NULL
+};
+
+static struct bus_type rbd_bus_type = {
+	.name		= "rbd",
+	.bus_attrs	= rbd_bus_attrs,
+};
+
+static void rbd_root_dev_release(struct device *dev)
+{
+}
+
+static struct device rbd_root_dev = {
+	.init_name =    "rbd",
+	.release =      rbd_root_dev_release,
+};
+

  static struct rbd_device *dev_to_rbd(struct device *dev)
  {
@@ -211,8 +233,7 @@ static int __rbd_update_snaps(struct rbd_device 
*rbd_dev);

  static int rbd_open(struct block_device *bdev, fmode_t mode)
  {
-	struct gendisk *disk = bdev->bd_disk;
-	struct rbd_device *rbd_dev = disk->private_data;
+	struct rbd_device *rbd_dev = bdev->bd_disk->private_data;

  	rbd_get_dev(rbd_dev);

@@ -1215,8 +1236,8 @@ static void rbd_watch_cb(u64 ver, u64 notify_id, 
u8 opcode, void *data)
  	rc = __rbd_update_snaps(dev);
  	mutex_unlock(&ctl_mutex);
  	if (rc)
-		pr_warning(DRV_NAME "%d got notification but failed to update"
-			   " snaps: %d\n", dev->major, rc);
+		pr_warning(RBD_DRV_NAME "%d got notification but failed to "
+			   " update snaps: %d\n", dev->major, rc);

  	rbd_req_sync_notify_ack(dev, ver, notify_id, dev->obj_md_name);
  }
@@ -1746,7 +1767,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
  	if (!disk)
  		goto out;

-	snprintf(disk->disk_name, sizeof(disk->disk_name), DRV_NAME "%d",
+	snprintf(disk->disk_name, sizeof(disk->disk_name), RBD_DRV_NAME "%d",
  		 rbd_dev->id);
  	disk->major = rbd_dev->major;
  	disk->first_minor = 0;
@@ -2092,19 +2113,9 @@ static int __rbd_init_snaps_header(struct 
rbd_device *rbd_dev)
  	return 0;
  }

-
-static void rbd_root_dev_release(struct device *dev)
-{
-}
-
-static struct device rbd_root_dev = {
-	.init_name =    "rbd",
-	.release =      rbd_root_dev_release,
-};
-
  static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
  {
-	int ret = -ENOMEM;
+	int ret;
  	struct device *dev;
  	struct rbd_snap *snap;

@@ -2118,7 +2129,7 @@ static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
  	dev_set_name(dev, "%d", rbd_dev->id);
  	ret = device_register(dev);
  	if (ret < 0)
-		goto done_free;
+		goto out;

  	list_for_each_entry(snap, &rbd_dev->snaps, node) {
  		ret = rbd_register_snap_dev(rbd_dev, snap,
@@ -2126,10 +2137,7 @@ static int rbd_bus_add_dev(struct rbd_device 
*rbd_dev)
  		if (ret < 0)
  			break;
  	}
-
-	mutex_unlock(&ctl_mutex);
-	return 0;
-done_free:
+out:
  	mutex_unlock(&ctl_mutex);
  	return ret;
  }
@@ -2265,7 +2273,7 @@ static ssize_t rbd_add(struct bus_type *bus,
  		   mon_dev_name, options, rbd_dev->pool_name,
  		   rbd_dev->obj, rbd_dev->snap_name) < 4) {
  		rc = -EINVAL;
-		goto err_out_slot;
+		goto err_put_id;
  	}

  	if (rbd_dev->snap_name[0] == 0)
@@ -2277,11 +2285,11 @@ static ssize_t rbd_add(struct bus_type *bus,
  		 rbd_dev->obj, RBD_SUFFIX);

  	/* initialize rest of new object */
-	snprintf(rbd_dev->name, DEV_NAME_LEN, DRV_NAME "%d", rbd_dev->id);
+	snprintf(rbd_dev->name, DEV_NAME_LEN, RBD_DRV_NAME "%d", rbd_dev->id);

  	rc = rbd_get_client(rbd_dev, mon_dev_name, options);
  	if (rc < 0)
-		goto err_out_slot;
+		goto err_put_id;

  	/* pick the pool */
  	osdc = &rbd_dev->rbd_client->client->osdc;
@@ -2327,9 +2335,8 @@ err_out_blkdev:
  	unregister_blkdev(rbd_dev->major, rbd_dev->name);
  err_out_client:
  	rbd_put_client(rbd_dev);
-err_out_slot:
+err_put_id:
  	rbd_id_put(rbd_dev);
-
  	kfree(rbd_dev);
  err_out_opt:
  	kfree(options);
@@ -2460,12 +2467,6 @@ err_unlock:
  	return ret;
  }

-static struct bus_attribute rbd_bus_attrs[] = {
-	__ATTR(add, S_IWUSR, NULL, rbd_add),
-	__ATTR(remove, S_IWUSR, NULL, rbd_remove),
-	__ATTR_NULL
-};
-
  /*
   * create control files in sysfs
   * /sys/bus/rbd/...
@@ -2474,8 +2475,6 @@ static int rbd_sysfs_init(void)
  {
  	int ret;

-	rbd_bus_type.bus_attrs = rbd_bus_attrs;
-
  	ret = bus_register(&rbd_bus_type);
  	if (ret < 0)
  		return ret;
@@ -2498,7 +2497,7 @@ int __init rbd_init(void)
  	rc = rbd_sysfs_init();
  	if (rc)
  		return rc;
-	pr_info("loaded " DRV_NAME_LONG "\n");
+	pr_info("loaded " RBD_DRV_NAME_LONG "\n");
  	return 0;
  }

-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] rbd: a few simple changes
  2012-02-29  3:46 [PATCH] rbd: a few simple changes Alex Elder
@ 2012-03-02 20:59 ` Sage Weil
  0 siblings, 0 replies; 2+ messages in thread
From: Sage Weil @ 2012-03-02 20:59 UTC (permalink / raw)
  To: Alex Elder; +Cc: ceph-devel

Looks good

On Tue, 28 Feb 2012, Alex Elder wrote:

> Here are a few very simple cleanups:
>     - Add a "RBD_" prefix to the two driver name string definitions.
>     - Move the definition of struct rbd_request below struct rbd_req_coll
>       to avoid the need for an empty declaration of the latter.
>     - Move and group the definitions of rbd_root_dev_release() and
>       rbd_root_dev, as well as rbd_bus_type and rbd_bus_attrs[],
>       close to the top of the file.  Arrange the latter so
>       rbd_bus_type.bus_attrs can be initialized statically.
>     - Get rid of an unnecessary local variable in rbd_open().
>     - Rework some hokey logic in rbd_bus_add_dev(), so the value of
>       "ret" at the end is either 0 or -ENOENT to avoid the need for
>       the code duplication that was there.
>     - Rename a goto target in rbd_add().
> 
> Signed-off-by: Alex Elder <elder@dreamhost.com>
> ---
>  drivers/block/rbd.c |  107
> +++++++++++++++++++++++++--------------------------
>  1 files changed, 53 insertions(+), 54 deletions(-)
> 
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index f6dba36..e7d6dfc 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -41,8 +41,8 @@
> 
>  #include "rbd_types.h"
> 
> -#define DRV_NAME "rbd"
> -#define DRV_NAME_LONG "rbd (rados block device)"
> +#define RBD_DRV_NAME "rbd"
> +#define RBD_DRV_NAME_LONG "rbd (rados block device)"
> 
>  #define RBD_MINORS_PER_MAJOR	256		/* max minors per blkdev */
> 
> @@ -83,7 +83,7 @@ struct rbd_options {
>  };
> 
>  /*
> - * an instance of the client.  multiple devices may share a client.
> + * an instance of the client.  multiple devices may share an rbd client.
>   */
>  struct rbd_client {
>  	struct ceph_client	*client;
> @@ -92,20 +92,9 @@ struct rbd_client {
>  	struct list_head	node;
>  };
> 
> -struct rbd_req_coll;
> -
>  /*
> - * a single io request
> + * a request completion status
>   */
> -struct rbd_request {
> -	struct request		*rq;		/* blk layer request */
> -	struct bio		*bio;		/* cloned bio */
> -	struct page		**pages;	/* list of used pages */
> -	u64			len;
> -	int			coll_index;
> -	struct rbd_req_coll	*coll;
> -};
> -
>  struct rbd_req_status {
>  	int done;
>  	int rc;
> @@ -122,6 +111,18 @@ struct rbd_req_coll {
>  	struct rbd_req_status	status[0];
>  };
> 
> +/*
> + * a single io request
> + */
> +struct rbd_request {
> +	struct request		*rq;		/* blk layer request */
> +	struct bio		*bio;		/* cloned bio */
> +	struct page		**pages;	/* list of used pages */
> +	u64			len;
> +	int			coll_index;
> +	struct rbd_req_coll	*coll;
> +};
> +
>  struct rbd_snap {
>  	struct	device		dev;
>  	const char		*name;
> @@ -170,10 +171,6 @@ struct rbd_device {
>  	struct device		dev;
>  };
> 
> -static struct bus_type rbd_bus_type = {
> -	.name		= "rbd",
> -};
> -
>  static DEFINE_MUTEX(ctl_mutex);	  /* Serialize
> open/close/setup/teardown */
> 
>  static LIST_HEAD(rbd_dev_list);    /* devices */
> @@ -191,6 +188,31 @@ static ssize_t rbd_snap_add(struct device *dev,
>  static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev,
>  				  struct rbd_snap *snap);
> 
> +static ssize_t rbd_add(struct bus_type *bus, const char *buf,
> +		       size_t count);
> +static ssize_t rbd_remove(struct bus_type *bus, const char *buf,
> +			  size_t count);
> +
> +static struct bus_attribute rbd_bus_attrs[] = {
> +	__ATTR(add, S_IWUSR, NULL, rbd_add),
> +	__ATTR(remove, S_IWUSR, NULL, rbd_remove),
> +	__ATTR_NULL
> +};
> +
> +static struct bus_type rbd_bus_type = {
> +	.name		= "rbd",
> +	.bus_attrs	= rbd_bus_attrs,
> +};
> +
> +static void rbd_root_dev_release(struct device *dev)
> +{
> +}
> +
> +static struct device rbd_root_dev = {
> +	.init_name =    "rbd",
> +	.release =      rbd_root_dev_release,
> +};
> +
> 
>  static struct rbd_device *dev_to_rbd(struct device *dev)
>  {
> @@ -211,8 +233,7 @@ static int __rbd_update_snaps(struct rbd_device *rbd_dev);
> 
>  static int rbd_open(struct block_device *bdev, fmode_t mode)
>  {
> -	struct gendisk *disk = bdev->bd_disk;
> -	struct rbd_device *rbd_dev = disk->private_data;
> +	struct rbd_device *rbd_dev = bdev->bd_disk->private_data;
> 
>  	rbd_get_dev(rbd_dev);
> 
> @@ -1215,8 +1236,8 @@ static void rbd_watch_cb(u64 ver, u64 notify_id, u8
> opcode, void *data)
>  	rc = __rbd_update_snaps(dev);
>  	mutex_unlock(&ctl_mutex);
>  	if (rc)
> -		pr_warning(DRV_NAME "%d got notification but failed to update"
> -			   " snaps: %d\n", dev->major, rc);
> +		pr_warning(RBD_DRV_NAME "%d got notification but failed to "
> +			   " update snaps: %d\n", dev->major, rc);
> 
>  	rbd_req_sync_notify_ack(dev, ver, notify_id, dev->obj_md_name);
>  }
> @@ -1746,7 +1767,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
>  	if (!disk)
>  		goto out;
> 
> -	snprintf(disk->disk_name, sizeof(disk->disk_name), DRV_NAME "%d",
> +	snprintf(disk->disk_name, sizeof(disk->disk_name), RBD_DRV_NAME "%d",
>  		 rbd_dev->id);
>  	disk->major = rbd_dev->major;
>  	disk->first_minor = 0;
> @@ -2092,19 +2113,9 @@ static int __rbd_init_snaps_header(struct rbd_device
> *rbd_dev)
>  	return 0;
>  }
> 
> -
> -static void rbd_root_dev_release(struct device *dev)
> -{
> -}
> -
> -static struct device rbd_root_dev = {
> -	.init_name =    "rbd",
> -	.release =      rbd_root_dev_release,
> -};
> -
>  static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
>  {
> -	int ret = -ENOMEM;
> +	int ret;
>  	struct device *dev;
>  	struct rbd_snap *snap;
> 
> @@ -2118,7 +2129,7 @@ static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
>  	dev_set_name(dev, "%d", rbd_dev->id);
>  	ret = device_register(dev);
>  	if (ret < 0)
> -		goto done_free;
> +		goto out;
> 
>  	list_for_each_entry(snap, &rbd_dev->snaps, node) {
>  		ret = rbd_register_snap_dev(rbd_dev, snap,
> @@ -2126,10 +2137,7 @@ static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
>  		if (ret < 0)
>  			break;
>  	}
> -
> -	mutex_unlock(&ctl_mutex);
> -	return 0;
> -done_free:
> +out:
>  	mutex_unlock(&ctl_mutex);
>  	return ret;
>  }
> @@ -2265,7 +2273,7 @@ static ssize_t rbd_add(struct bus_type *bus,
>  		   mon_dev_name, options, rbd_dev->pool_name,
>  		   rbd_dev->obj, rbd_dev->snap_name) < 4) {
>  		rc = -EINVAL;
> -		goto err_out_slot;
> +		goto err_put_id;
>  	}
> 
>  	if (rbd_dev->snap_name[0] == 0)
> @@ -2277,11 +2285,11 @@ static ssize_t rbd_add(struct bus_type *bus,
>  		 rbd_dev->obj, RBD_SUFFIX);
> 
>  	/* initialize rest of new object */
> -	snprintf(rbd_dev->name, DEV_NAME_LEN, DRV_NAME "%d", rbd_dev->id);
> +	snprintf(rbd_dev->name, DEV_NAME_LEN, RBD_DRV_NAME "%d", rbd_dev->id);
> 
>  	rc = rbd_get_client(rbd_dev, mon_dev_name, options);
>  	if (rc < 0)
> -		goto err_out_slot;
> +		goto err_put_id;
> 
>  	/* pick the pool */
>  	osdc = &rbd_dev->rbd_client->client->osdc;
> @@ -2327,9 +2335,8 @@ err_out_blkdev:
>  	unregister_blkdev(rbd_dev->major, rbd_dev->name);
>  err_out_client:
>  	rbd_put_client(rbd_dev);
> -err_out_slot:
> +err_put_id:
>  	rbd_id_put(rbd_dev);
> -
>  	kfree(rbd_dev);
>  err_out_opt:
>  	kfree(options);
> @@ -2460,12 +2467,6 @@ err_unlock:
>  	return ret;
>  }
> 
> -static struct bus_attribute rbd_bus_attrs[] = {
> -	__ATTR(add, S_IWUSR, NULL, rbd_add),
> -	__ATTR(remove, S_IWUSR, NULL, rbd_remove),
> -	__ATTR_NULL
> -};
> -
>  /*
>   * create control files in sysfs
>   * /sys/bus/rbd/...
> @@ -2474,8 +2475,6 @@ static int rbd_sysfs_init(void)
>  {
>  	int ret;
> 
> -	rbd_bus_type.bus_attrs = rbd_bus_attrs;
> -
>  	ret = bus_register(&rbd_bus_type);
>  	if (ret < 0)
>  		return ret;
> @@ -2498,7 +2497,7 @@ int __init rbd_init(void)
>  	rc = rbd_sysfs_init();
>  	if (rc)
>  		return rc;
> -	pr_info("loaded " DRV_NAME_LONG "\n");
> +	pr_info("loaded " RBD_DRV_NAME_LONG "\n");
>  	return 0;
>  }
> 
> -- 
> 1.7.5.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-03-02 21:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-29  3:46 [PATCH] rbd: a few simple changes Alex Elder
2012-03-02 20:59 ` Sage Weil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.