r265 - in devmapper/trunk: debian dmsetup lib lib/ioctl
Bastian Blank
waldi at costa.debian.org
Sun Feb 12 10:03:47 UTC 2006
Author: waldi
Date: Sun Feb 12 10:03:45 2006
New Revision: 265
Modified:
devmapper/trunk/debian/changelog
devmapper/trunk/debian/rules
devmapper/trunk/dmsetup/dmsetup.c
devmapper/trunk/lib/.exported_symbols
devmapper/trunk/lib/ioctl/libdm-iface.c
devmapper/trunk/lib/libdevmapper.h
devmapper/trunk/lib/libdm-common.c
devmapper/trunk/lib/libdm-deptree.c
Log:
* debian/changelog: Update.
* debian/rules: Update shlibs.
* dmsetup/dmsetup.c, lib/.exported_symbols, lib/ioctl/libdm-iface.c,
lib/libdevmapper.h, lib/libdm-common.c, lib/libdm-deptree.c:
Make device nodes overridable.
Modified: devmapper/trunk/debian/changelog
==============================================================================
--- devmapper/trunk/debian/changelog (original)
+++ devmapper/trunk/debian/changelog Sun Feb 12 10:03:45 2006
@@ -1,3 +1,9 @@
+devmapper (2:1.02.02-2) UNRELEASED; urgency=low
+
+ * Make device modes overridable.
+
+ -- Bastian Blank <waldi at debian.org> Sun, 12 Feb 2006 11:00:48 +0100
+
devmapper (2:1.02.02-1) unstable; urgency=low
* New upstram version.
Modified: devmapper/trunk/debian/rules
==============================================================================
--- devmapper/trunk/debian/rules (original)
+++ devmapper/trunk/debian/rules Sun Feb 12 10:03:45 2006
@@ -117,7 +117,7 @@
dh_link -a
dh_compress -a
dh_fixperms -a
- dh_makeshlibs -a
+ dh_makeshlibs -a -V 'libdevmapper1.02 (>= 2:1.02.02-2)'
dh_installdeb -a
dh_shlibdeps -a
dh_gencontrol -a
Modified: devmapper/trunk/dmsetup/dmsetup.c
==============================================================================
--- devmapper/trunk/dmsetup/dmsetup.c (original)
+++ devmapper/trunk/dmsetup/dmsetup.c Sun Feb 12 10:03:45 2006
@@ -88,6 +88,9 @@
EXEC_ARG,
MAJOR_ARG,
MINOR_ARG,
+ UID_ARG,
+ GID_ARG,
+ MODE_ARG,
NOHEADINGS_ARG,
NOLOCKFS_ARG,
NOOPENCOUNT_ARG,
@@ -390,6 +393,15 @@
if (_switches[MINOR_ARG] && !dm_task_set_minor(dmt, _values[MINOR_ARG]))
goto out;
+ if (_switches[UID_ARG] && !_dm_task_set_uid(dmt, _values[UID_ARG]))
+ goto out;
+
+ if (_switches[GID_ARG] && !_dm_task_set_gid(dmt, _values[GID_ARG]))
+ goto out;
+
+ if (_switches[MODE_ARG] && !_dm_task_set_mode(dmt, _values[MODE_ARG]))
+ goto out;
+
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
goto out;
@@ -1292,7 +1304,8 @@
static struct command _commands[] = {
{"create", "<dev_name> [-j|--major <major> -m|--minor <minor>]\n"
- "\t [-u|uuid <uuid>] [--notable] [<table_file>]",
+ "\t [-u|uuid <uuid>] [-U|--uid <uid>] [-G|--gid <gid>]\n"
+ "\t [-M|--mode <mode>] [--notable] [<table_file>]",
1, 2, _create},
{"remove", "<device>", 0, 1, _remove},
{"remove_all", "", 0, 0, _remove_all},
@@ -1420,6 +1433,9 @@
{"exec", 1, &ind, EXEC_ARG},
{"major", 1, &ind, MAJOR_ARG},
{"minor", 1, &ind, MINOR_ARG},
+ {"uid", 1, &ind, UID_ARG},
+ {"gid", 1, &ind, GID_ARG},
+ {"mode", 1, &ind, MODE_ARG},
{"noheadings", 0, &ind, NOHEADINGS_ARG},
{"nolockfs", 0, &ind, NOLOCKFS_ARG},
{"noopencount", 0, &ind, NOOPENCOUNT_ARG},
@@ -1478,10 +1494,14 @@
optarg = 0;
optind = OPTIND_INIT;
- while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCj:m:no:ru:v",
+ while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCj:G:m:M:no:ru:U:v",
long_options, NULL)) != -1) {
if (c == 'c' || c == 'C' || ind == COLS_ARG)
_switches[COLS_ARG]++;
+ if (c == 'G' || ind == GID_ARG) {
+ _switches[GID_ARG]++;
+ _values[GID_ARG] = strtol(optarg, NULL, 10);
+ }
if (c == 'r' || ind == READ_ONLY)
_switches[READ_ONLY]++;
if (c == 'j' || ind == MAJOR_ARG) {
@@ -1492,6 +1512,10 @@
_switches[MINOR_ARG]++;
_values[MINOR_ARG] = atoi(optarg);
}
+ if (c == 'M' || ind == MODE_ARG) {
+ _switches[MODE_ARG]++;
+ _values[MODE_ARG] = strtol(optarg, NULL, 8);
+ }
if (c == 'n' || ind == NOTABLE_ARG)
_switches[NOTABLE_ARG]++;
if (c == 'o' || ind == OPTIONS_ARG) {
@@ -1504,6 +1528,10 @@
_switches[UUID_ARG]++;
_uuid = optarg;
}
+ if (c == 'U' || ind == UID_ARG) {
+ _switches[UID_ARG]++;
+ _values[UID_ARG] = strtol(optarg, NULL, 10);
+ }
if ((ind == EXEC_ARG)) {
_switches[EXEC_ARG]++;
_command = optarg;
Modified: devmapper/trunk/lib/.exported_symbols
==============================================================================
--- devmapper/trunk/lib/.exported_symbols (original)
+++ devmapper/trunk/lib/.exported_symbols Sun Feb 12 10:03:45 2006
@@ -20,6 +20,9 @@
dm_task_set_event_nr
dm_task_set_major
dm_task_set_minor
+_dm_task_set_uid
+_dm_task_set_gid
+_dm_task_set_mode
dm_task_set_sector
dm_task_set_message
dm_task_suppress_identical_reload
@@ -36,6 +39,7 @@
dm_tree_free
dm_tree_add_dev
dm_tree_add_new_dev
+_dm_tree_add_new_dev_mode
dm_tree_node_get_name
dm_tree_node_get_uuid
dm_tree_node_get_info
Modified: devmapper/trunk/lib/ioctl/libdm-iface.c
==============================================================================
--- devmapper/trunk/lib/ioctl/libdm-iface.c (original)
+++ devmapper/trunk/lib/ioctl/libdm-iface.c Sun Feb 12 10:03:45 2006
@@ -1310,6 +1310,9 @@
task->major = dmt->major;
task->minor = dmt->minor;
+ task->uid = dmt->uid;
+ task->gid = dmt->gid;
+ task->mode = dmt->mode;
r = dm_task_run(task);
dm_task_destroy(task);
Modified: devmapper/trunk/lib/libdevmapper.h
==============================================================================
--- devmapper/trunk/lib/libdevmapper.h (original)
+++ devmapper/trunk/lib/libdevmapper.h Sun Feb 12 10:03:45 2006
@@ -143,6 +143,9 @@
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_set_uid(struct dm_task *dmt, uid_t uid);
+int _dm_task_set_gid(struct dm_task *dmt, gid_t gid);
+int _dm_task_set_mode(struct dm_task *dmt, mode_t mode);
int dm_task_no_open_count(struct dm_task *dmt);
int dm_task_skip_lockfs(struct dm_task *dmt);
int dm_task_suppress_identical_reload(struct dm_task *dmt);
@@ -234,6 +237,15 @@
int clear_inactive,
void *context);
+struct dm_tree_node *_dm_tree_add_new_dev_mode(struct dm_tree *tree,
+ const char *name,
+ const char *uuid,
+ uint32_t major, uint32_t minor,
+ uid_t uid, uid_t gid, mode_t mode,
+ int read_only,
+ int clear_inactive,
+ void *context);
+
/*
* Search for a node in the tree.
* Set major and minor to 0 or uuid to NULL to get the root node.
Modified: devmapper/trunk/lib/libdm-common.c
==============================================================================
--- devmapper/trunk/lib/libdm-common.c (original)
+++ devmapper/trunk/lib/libdm-common.c Sun Feb 12 10:03:45 2006
@@ -180,6 +180,27 @@
return 1;
}
+int _dm_task_set_uid(struct dm_task *dmt, uid_t uid)
+{
+ dmt->uid = uid;
+
+ return 1;
+}
+
+int _dm_task_set_gid(struct dm_task *dmt, gid_t gid)
+{
+ dmt->gid = gid;
+
+ return 1;
+}
+
+int _dm_task_set_mode(struct dm_task *dmt, mode_t mode)
+{
+ dmt->mode = mode;
+
+ return 1;
+}
+
int dm_task_add_target(struct dm_task *dmt, uint64_t start, uint64_t size,
const char *ttype, const char *params)
{
Modified: devmapper/trunk/lib/libdm-deptree.c
==============================================================================
--- devmapper/trunk/lib/libdm-deptree.c (original)
+++ devmapper/trunk/lib/libdm-deptree.c Sun Feb 12 10:03:45 2006
@@ -92,6 +92,9 @@
int read_only;
uint32_t major;
uint32_t minor;
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
unsigned segment_count;
struct list segs;
@@ -448,7 +451,8 @@
static struct dm_tree_node *_add_dev(struct dm_tree *dtree,
struct dm_tree_node *parent,
- uint32_t major, uint32_t minor)
+ uint32_t major, uint32_t minor,
+ uid_t uid, gid_t gid, mode_t mode)
{
struct dm_task *dmt = NULL;
struct dm_info info;
@@ -491,7 +495,7 @@
/* Add dependencies to tree */
for (i = 0; i < deps->count; i++)
if (!_add_dev(dtree, node, MAJOR(deps->device[i]),
- MINOR(deps->device[i]))) {
+ MINOR(deps->device[i]), uid, gid, mode)) {
node = NULL;
goto_out;
}
@@ -560,6 +564,18 @@
int clear_inactive,
void *context)
{
+ return _dm_tree_add_new_dev_mode(dtree, name, uuid, major, minor, DEVICE_UID, DEVICE_GID, DEVICE_MODE, read_only, clear_inactive, context);
+}
+
+struct dm_tree_node *_dm_tree_add_new_dev_mode(struct dm_tree *dtree,
+ const char *name,
+ const char *uuid,
+ uint32_t major, uint32_t minor,
+ uid_t uid, gid_t gid, mode_t mode,
+ int read_only,
+ int clear_inactive,
+ void *context)
+{
struct dm_tree_node *dnode;
struct dm_info info;
const char *name2;
@@ -593,6 +609,9 @@
dnode->props.major = major;
dnode->props.minor = minor;
+ dnode->props.uid = uid;
+ dnode->props.gid = gid;
+ dnode->props.mode = mode;
dnode->props.new_name = NULL;
} else if (strcmp(name, dnode->name)) {
/* Do we need to rename node? */
@@ -614,7 +633,7 @@
int dm_tree_add_dev(struct dm_tree *dtree, uint32_t major, uint32_t minor)
{
- return _add_dev(dtree, &dtree->root, major, minor) ? 1 : 0;
+ return _add_dev(dtree, &dtree->root, major, minor, DEVICE_UID, DEVICE_GID, DEVICE_MODE) ? 1 : 0;
}
const char *dm_tree_node_get_name(struct dm_tree_node *node)
@@ -1155,6 +1174,12 @@
goto out;
}
+ if (!_dm_task_set_uid(dmt, dnode->props.uid) ||
+ !_dm_task_set_gid(dmt, dnode->props.gid) ||
+ !_dm_task_set_mode(dmt, dnode->props.mode)) {
+ log_error("Failed to set device permissions for %s creation.", dnode->name);
+ goto out;
+ }
if (dnode->props.read_only && !dm_task_set_ro(dmt)) {
log_error("Failed to set read only flag for %s", dnode->name);
goto out;
@@ -1711,7 +1736,7 @@
}
/* FIXME Check correct macro use */
- if (!(dev_node = _add_dev(node->dtree, node, MAJOR(info.st_rdev), MINOR(info.st_rdev))))
+ if (!(dev_node = _add_dev(node->dtree, node, MAJOR(info.st_rdev), MINOR(info.st_rdev), DEVICE_UID, DEVICE_GID, DEVICE_MODE)))
return_0;
}
More information about the pkg-lvm-commits
mailing list