]> sourceware.org Git - dm.git/commitdiff
Add dm_task_no_open_count() to skip getting open_count.
authorAlasdair Kergon <agk@redhat.com>
Wed, 12 Jan 2005 22:10:10 +0000 (22:10 +0000)
committerAlasdair Kergon <agk@redhat.com>
Wed, 12 Jan 2005 22:10:10 +0000 (22:10 +0000)
VERSION
WHATS_NEW
dmsetup/dmsetup.c
kernel/ioctl/dm-ioctl.h
lib/.exported_symbols
lib/ioctl/libdm-iface.c
lib/ioctl/libdm-targets.h
lib/libdevmapper.h

diff --git a/VERSION b/VERSION
index fda4dcb554ad17242ab4fe001dcd060cf3c32f0f..4a021b4f33f293e158942999220208ee8d81a86b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.00.22-cvs (2005-01-07)
+1.01.00-cvs (2005-01-12)
index d14edcc0749eb359b5ba105ac8ceab6bc00e7915..c2bb6a5d6ddf18a4a572ce0ee540b1662381e92e 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
-Version 1.00.22 -
+Version 1.01.00 -
 ============================
+  Add dm_task_no_open_count() to skip getting open_count.
 
 Version 1.00.21 - 7 Jan 2005
 ============================
index 9c169a6e1a4facc0da7b5d7b9efdef24c1518d76..a3223f477525d668ae5b797ef54910bca32ced49 100644 (file)
@@ -58,6 +58,7 @@ enum {
        MAJOR_ARG,
        MINOR_ARG,
        NOHEADINGS_ARG,
+       NOOPENCOUNT_ARG,
        NOTABLE_ARG,
        UUID_ARG,
        VERBOSE_ARG,
@@ -291,6 +292,9 @@ static int _load(int argc, char **argv, void *data)
        if (_switches[READ_ONLY] && !dm_task_set_ro(dmt))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -335,6 +339,9 @@ static int _create(int argc, char **argv, void *data)
        if (_switches[MINOR_ARG] && !dm_task_set_minor(dmt, _values[MINOR_ARG]))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -364,6 +371,9 @@ static int _rename(int argc, char **argv, void *data)
        if (!dm_task_set_newname(dmt, argv[argc - 1]))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -420,6 +430,9 @@ static int _message(int argc, char **argv, void *data)
 
        free(str);
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -476,6 +489,9 @@ static int _simple(int task, const char *name, uint32_t event_nr, int display)
        if (event_nr && !dm_task_set_event_nr(dmt, event_nr))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        r = dm_task_run(dmt);
 
        if (r && display && _switches[VERBOSE_ARG])
@@ -599,6 +615,9 @@ static int _status(int argc, char **argv, void *data)
        if (!_set_task_device(dmt, name, 0))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -674,6 +693,9 @@ static int _mknodes(int argc, char **argv, void *data)
        if (!_set_task_device(dmt, argc > 1 ? argv[1] : NULL, 1))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -707,6 +729,9 @@ static int _info(int argc, char **argv, void *data)
        if (!_set_task_device(dmt, name, 0))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -744,6 +769,9 @@ static int _deps(int argc, char **argv, void *data)
        if (!_set_task_device(dmt, name, 0))
                goto out;
 
+       if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
+               goto out;
+
        if (!dm_task_run(dmt))
                goto out;
 
@@ -841,7 +869,7 @@ static void _usage(FILE *out)
 
        fprintf(out, "Usage:\n\n");
        fprintf(out, "dmsetup [--version] [-v|--verbose [-v|--verbose ...]]\n"
-               "        [-r|--readonly]\n\n");
+               "        [-r|--readonly] [--noopencount]\n\n");
        for (i = 0; _commands[i].name; i++)
                fprintf(out, "\t%s %s\n", _commands[i].name, _commands[i].help);
        fprintf(out, "\n<device> may be device name or -u <uuid> or "
@@ -873,6 +901,7 @@ static int _process_switches(int *argc, char ***argv)
                {"major", 1, NULL, MAJOR_ARG},
                {"minor", 1, NULL, MINOR_ARG},
                {"noheadings", 0, NULL, NOHEADINGS_ARG},
+               {"noopencount", 0, NULL, NOOPENCOUNT_ARG},
                {"notable", 0, NULL, NOTABLE_ARG},
                {"uuid", 1, NULL, UUID_ARG},
                {"verbose", 1, NULL, VERBOSE_ARG},
@@ -915,6 +944,8 @@ static int _process_switches(int *argc, char ***argv)
                }
                if ((ind == NOHEADINGS_ARG))
                        _switches[NOHEADINGS_ARG]++;
+               if ((ind == NOOPENCOUNT_ARG))
+                       _switches[NOOPENCOUNT_ARG]++;
                if ((ind == VERSION_ARG))
                        _switches[VERSION_ARG]++;
        }
index 2a04be4f56e93a2196ed451d9dbd7506e0fca239..bc19be91a061d1f09c8c235993d128ea5ec19a4f 100644 (file)
@@ -297,4 +297,9 @@ typedef char ioctl_struct[308];
  */
 #define DM_BUFFER_FULL_FLAG    (1 << 8) /* Out */
 
+/*
+ * Set this to improve performance when you aren't going to use open_count
+ */
+#define DM_SKIP_BDGET_FLAG     (1 << 9) /* In */
+
 #endif                         /* _LINUX_DM_IOCTL_H */
index 01fe677e903771e8f39f20f95ca6cddc1cfb27b6..41314894099bff237a512ec4642320e86e7f572f 100644 (file)
@@ -20,6 +20,7 @@ dm_task_set_minor
 dm_task_set_sector
 dm_task_set_message
 dm_task_add_target
+dm_task_no_open_count
 dm_get_next_target
 dm_task_run
 dm_set_dev_dir
index 47ea7147b77fc89473ba084a21e6afb8e878857b..621d8db49ee2ebaaf7511dbeb3888ecc00051b8e 100644 (file)
@@ -929,6 +929,13 @@ int dm_task_set_sector(struct dm_task *dmt, uint64_t sector)
        return 1;
 }
 
+int dm_task_no_open_count(struct dm_task *dmt)
+{
+       dmt->no_open_count = 1;
+
+       return 1;
+}
+
 int dm_task_set_event_nr(struct dm_task *dmt, uint32_t event_nr)
 {
        dmt->event_nr = event_nr;
@@ -1298,8 +1305,13 @@ int dm_task_run(struct dm_task *dmt)
                dmi->flags |= DM_STATUS_TABLE_FLAG;
 
        dmi->flags |= DM_EXISTS_FLAG;   /* FIXME */
-       log_debug("dm %s %s %s %s%.0llu %s", _cmd_data_v4[dmt->type].name,
+
+       if (dmt->no_open_count)
+               dmi->flags |= DM_SKIP_BDGET_FLAG;
+
+       log_debug("dm %s %s %s %s%c %.0llu %s", _cmd_data_v4[dmt->type].name,
                  dmi->name, dmi->uuid, dmt->newname ? dmt->newname : "",
+                 dmt->no_open_count ? 'N' : 'O',
                  dmt->sector, dmt->message ? dmt->message : "");
        if (ioctl(_control_fd, command, dmi) < 0) {
                if (errno == ENXIO && ((dmt->type == DM_DEVICE_INFO) ||
index ecd6eabfda5ba06981355ae436fc7bef3f3e2db3..d25efe17dffb69bfe8fb13b0ccf9ef888310d63a 100644 (file)
@@ -51,6 +51,7 @@ struct dm_task {
        char *newname;
        char *message;
        uint64_t sector;
+       int no_open_count;
 
        char *uuid;
 };
index f0aeccde3006b3d72e5e444c1e368cfd35d0aa13..8cab2d94c8ec42a93e27fd7112685ab8577aae3f 100644 (file)
@@ -134,6 +134,7 @@ int dm_task_set_major(struct dm_task *dmt, int major);
 int dm_task_set_event_nr(struct dm_task *dmt, uint32_t event_nr);
 int dm_task_set_message(struct dm_task *dmt, const char *message);
 int dm_task_set_sector(struct dm_task *dmt, uint64_t sector);
+int dm_task_no_open_count(struct dm_task *dmt);
 
 /*
  * Use these to prepare for a create or reload.
This page took 0.036527 seconds and 5 git commands to generate.