]> sourceware.org Git - dm.git/commitdiff
o Add rename support to dmsetup.
authorAlasdair Kergon <agk@redhat.com>
Fri, 11 Jan 2002 12:12:44 +0000 (12:12 +0000)
committerAlasdair Kergon <agk@redhat.com>
Fri, 11 Jan 2002 12:12:44 +0000 (12:12 +0000)
o Add support to use specified minor number to library and dmsetup.

VERSION
dmsetup/dmsetup.c
lib/fs/libdevmapper.c
lib/fs/libdm-targets.h
lib/ioctl/libdevmapper.c
lib/ioctl/libdm-targets.h
lib/libdevmapper.h
lib/libdm-common.c

diff --git a/VERSION b/VERSION
index 6f835a073e34f2fe2b1bb7d57f38e2a229c878f3..7d1c60fa4a659229151c9bf4b3765b9e1c83e7fd 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.92.00-cvs (2002-01-10)
+0.92.01-cvs (2002-01-11)
index 380bf01a47b1c72133f885396d86f5c964570ea2..a7328fbbb87476d2903a2a4b1e8d08c0a84810ab 100644 (file)
  */
 enum {
        READ_ONLY = 0,
+       MINOR_ARG,
        NUM_SWITCHES
 };
 
 static int _switches[NUM_SWITCHES];
+static int _values[NUM_SWITCHES];
 
 
 /*
@@ -105,6 +107,9 @@ static int _load(int task, const char *name, const char *file)
        if (_switches[READ_ONLY] && !dm_task_set_ro(dmt))
                goto out;
 
+       if (_switches[MINOR_ARG] && !dm_task_set_minor(dmt, _values[MINOR_ARG]))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -126,6 +131,30 @@ static int _reload(int argc, char **argv)
        return _load(DM_DEVICE_RELOAD, argv[1], argv[2]);
 }
 
+static int _rename(int argc, char **argv)
+{
+       int r = 0;
+       struct dm_task *dmt;
+
+        if (!(dmt = dm_task_create(DM_DEVICE_RENAME)))
+                return 0;
+
+        if (!dm_task_set_name(dmt, argv[1]))
+                goto out;
+
+       if (!dm_task_set_newname(dmt, argv[2]))
+               goto out;
+
+        if (!dm_task_run(dmt))
+                goto out;
+
+        r = 1;
+
+out:
+        dm_task_destroy(dmt);
+
+        return r;
+}
 
 static int _simple(int task, const char *name)
 {
@@ -226,6 +255,7 @@ static struct command _commands[] = {
        {"resume", "<dev_name>", 1, _resume},
        {"reload", "<dev_name> <table_file>", 2, _reload},
        {"info", "<dev_name>", 1, _info},
+       {"rename", "<dev_name> <new_name>", 2, _rename},
        {NULL, NULL, 0, NULL}
 };
 
@@ -258,17 +288,25 @@ static int _process_switches(int *argc, char ***argv)
 
        static struct option long_options[] = {
                {"read-only", 0, NULL, READ_ONLY},
+               {"minor", 1, NULL, MINOR_ARG},
+               {"", 0, NULL, 0}
        };
 
        /*
         * Zero all the index counts.
         */
        memset(&_switches, 0, sizeof(_switches));
+       memset(&_values, 0, sizeof(_values));
 
-       while ((c = getopt_long(*argc, *argv, "r",
-                               long_options, &index)) != -1)
+       while ((c = getopt_long(*argc, *argv, "m:r",
+                               long_options, &index)) != -1) {
                if (c == 'r' || index == READ_ONLY)
                        _switches[READ_ONLY]++;
+               if (c == 'm' || index == MINOR_ARG) {
+                       _switches[MINOR_ARG]++;
+                       _values[MINOR_ARG] = atoi(optarg);
+               }
+       }
 
        *argv += optind;
        *argc -= optind;
index 823d42af87f33f826304d6a141375743db26e78e..159663e18c6b60650968e38e3f56d1e063971b19 100644 (file)
@@ -82,6 +82,12 @@ int dm_task_set_ro(struct dm_task *dmt)
        return 1;
 }
 
+int dm_task_set_newname(struct dm_task *dmt, const char *newname)
+{
+       log("Renaming is not yet supported by the filesystem interface");
+       return 0;
+}
+
 struct target *create_target(uint64_t start,
                             uint64_t len, const char *type, const char *params)
 {
index a4b102e800f8ff9faacbcace7ce8d1d83250f17c..02a2db4f2bb9e08b68528ff4cf24873639eccfce 100644 (file)
@@ -12,6 +12,7 @@ struct target {
 struct dm_task {
        int type;
        char *dev_name;
+       int minor;
 
        struct target *head, *tail;
 
index 0d39c93c7320a1509d162984c3a5631c160cab2f..bed81a10d900874a96cb56fad7d8960b90bc7c2b 100644 (file)
@@ -185,7 +185,7 @@ static struct dm_ioctl *_flatten(struct dm_task *dmt)
        strncpy(dmi->name, dmt->dev_name, sizeof(dmi->name));
        dmi->suspend = (dmt->type == DM_DEVICE_SUSPEND) ? 1 : 0;
        dmi->open_count = 0;
-       dmi->minor = -1;
+       dmi->minor = dmt->minor;
        dmi->read_only = dmt->read_only;
 
        dmi->target_count = count;
index 92433665d303b8193047390157bb439db350c937..5a0e30f03a17450d860c7294f267d8e8dc0f1c05 100644 (file)
@@ -20,6 +20,7 @@ struct dm_task {
        struct target *head, *tail;
 
        int read_only;
+       int minor;
        struct dm_ioctl *dmi;
        char *newname;
 };
index 67ddba8b2ef4937003c1b6f61803da83ec685e7f..7e3cf61c9d19cf0c6741e26726f868ff6f8a41ac 100644 (file)
@@ -66,8 +66,8 @@ struct dm_info {
 int dm_task_get_info(struct dm_task *dmt, struct dm_info *dmi);
 
 int dm_task_set_ro(struct dm_task *dmt);
-
 int dm_task_set_newname(struct dm_task *dmt, const char *newname);
+int dm_task_set_minor(struct dm_task *dmt, int minor);
 
 /*
  * Use these to prepare for a create or reload.
index 679fd71e738f7b17013859f9ac51b8cc94ad39ad..ade0515f9ac5d692e5aee17728a03c4748805063 100644 (file)
@@ -70,6 +70,7 @@ struct dm_task *dm_task_create(int type)
         memset(dmt, 0, sizeof(*dmt));
 
         dmt->type = type;
+       dmt->minor = -1;
         return dmt;
 }
 
@@ -105,6 +106,13 @@ int dm_task_set_name(struct dm_task *dmt, const char *name)
         return 1;
 }
 
+int dm_task_set_minor(struct dm_task *dmt, int minor)
+{
+        dmt->minor = minor;
+        return 1;
+}
+
+
 int dm_task_add_target(struct dm_task *dmt,
                        uint64_t start,
                        uint64_t size,
This page took 0.033673 seconds and 5 git commands to generate.