FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Device-mapper Development

 
 
LinkBack Thread Tools
 
Old 07-01-2011, 07:04 PM
Mikulas Patocka
 
Default dm-ioctl: fill parameters in __find_device_hash_cell instead of find_device

Hi

Here I'm sending the patches for ioctl parameter cleanup. I tested them
with lvm testsuite.

Mikulas

---

dm-ioctl: fill parameters in __find_device_hash_cell instead of find_device

Move parameter filling from find_device to __find_device_hash_cell.

This patch causes that ioctls using __find_device_hash_cell
(DM_DEV_REMOVE_CMD, DM_DEV_SUSPEND_CMD - resume, DM_TABLE_CLEAR_CMD)
return device parameters.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>

---
drivers/md/dm-ioctl.c | 63 ++++++++++++++++++++++++++++----------------------
1 file changed, 36 insertions(+), 27 deletions(-)

Index: linux-2.6.39-fast/drivers/md/dm-ioctl.c
================================================== =================
--- linux-2.6.39-fast.orig/drivers/md/dm-ioctl.c 2011-06-30 18:23:38.000000000 +0200
+++ linux-2.6.39-fast/drivers/md/dm-ioctl.c 2011-06-30 18:40:50.000000000 +0200
@@ -719,24 +719,49 @@ static int dev_create(struct dm_ioctl *p
static struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param)
{
struct mapped_device *md;
- void *mdptr = NULL;
+ struct hash_cell *hc = NULL;

- if (*param->uuid)
- return __get_uuid_cell(param->uuid);
+ if (*param->uuid) {
+ hc = __get_uuid_cell(param->uuid);
+ if (!hc)
+ return NULL;
+ goto fill_params;
+ }

- if (*param->name)
- return __get_name_cell(param->name);
+ if (*param->name) {
+ hc = __get_name_cell(param->name);
+ if (!hc)
+ return NULL;
+ goto fill_params;
+ }

md = dm_get_md(huge_decode_dev(param->dev));
if (!md)
- goto out;
+ return NULL;

- mdptr = dm_get_mdptr(md);
- if (!mdptr)
+ hc = dm_get_mdptr(md);
+ if (!hc) {
dm_put(md);
+ return NULL;
+ }

-out:
- return mdptr;
+fill_params:
+ /*
+ * Sneakily write in both the name and the uuid
+ * while we have the cell.
+ */
+ strlcpy(param->name, hc->name, sizeof(param->name));
+ if (hc->uuid)
+ strlcpy(param->uuid, hc->uuid, sizeof(param->uuid));
+ else
+ param->uuid[0] = '';
+
+ if (hc->new_map)
+ param->flags |= DM_INACTIVE_PRESENT_FLAG;
+ else
+ param->flags &= ~DM_INACTIVE_PRESENT_FLAG;
+
+ return hc;
}

static struct mapped_device *find_device(struct dm_ioctl *param)
@@ -746,24 +771,8 @@ static struct mapped_device *find_device

down_read(&_hash_lock);
hc = __find_device_hash_cell(param);
- if (hc) {
+ if (hc)
md = hc->md;
-
- /*
- * Sneakily write in both the name and the uuid
- * while we have the cell.
- */
- strlcpy(param->name, hc->name, sizeof(param->name));
- if (hc->uuid)
- strlcpy(param->uuid, hc->uuid, sizeof(param->uuid));
- else
- param->uuid[0] = '';
-
- if (hc->new_map)
- param->flags |= DM_INACTIVE_PRESENT_FLAG;
- else
- param->flags &= ~DM_INACTIVE_PRESENT_FLAG;
- }
up_read(&_hash_lock);

return md;

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 

Thread Tools




All times are GMT. The time now is 09:36 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org