r281 - in lvm2/trunk: doc lib/activate lib/metadata

Bastian Blank waldi at costa.debian.org
Sun Feb 12 11:46:25 UTC 2006


Author: waldi
Date: Sun Feb 12 11:46:24 2006
New Revision: 281

Modified:
   lvm2/trunk/doc/example.conf
   lvm2/trunk/lib/activate/activate.c
   lvm2/trunk/lib/activate/dev_manager.c
   lvm2/trunk/lib/metadata/metadata.h
Log:
* doc/example.conf, lib/activate/activate.c, lib/activate/dev_manager.c,.
  lib/metadata/metadata.h: Set device permissions.


Modified: lvm2/trunk/doc/example.conf
==============================================================================
--- lvm2/trunk/doc/example.conf	(original)
+++ lvm2/trunk/doc/example.conf	Sun Feb 12 11:46:24 2006
@@ -257,6 +257,9 @@
     #   "@*" matches if any tag defined on the host is also set in the LV or VG
     #
     # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+
+    # Permissions to use for new devices
+    # device_permissions = [ 0, 6, 0640 ]
 }
 
 

Modified: lvm2/trunk/lib/activate/activate.c
==============================================================================
--- lvm2/trunk/lib/activate/activate.c	(original)
+++ lvm2/trunk/lib/activate/activate.c	Sun Feb 12 11:46:24 2006
@@ -778,6 +778,8 @@
 static int _lv_activate(struct cmd_context *cmd, const char *lvid_s,
 			int exclusive, int filter)
 {
+	const struct config_node *cn;
+	struct config_value *cv;
 	struct logical_volume *lv;
 	struct lvinfo info;
 	int r;
@@ -808,6 +810,27 @@
 	if (exclusive)
 		lv->status |= ACTIVATE_EXCL;
 
+	cn = find_config_node(cmd->cft->root, "activation/device_permissions");
+	if (cn) {
+		cv = cn->v;
+		if (cv->type != CFG_INT)
+			return 1;
+		lv->uid = cv->v.i;
+		cv = cv->next;
+		if (cv->type != CFG_INT)
+			return 1;
+		lv->gid = cv->v.i;
+		cv = cv->next;
+		if (cv->type != CFG_INT)
+			return 1;
+		lv->mode = cv->v.i;
+	}
+	else {
+		lv->uid = 0;
+		lv->gid = 0;
+		lv->mode = 0600;
+	}
+
 	memlock_inc();
 	r = _lv_activate_lv(lv);
 	memlock_dec();

Modified: lvm2/trunk/lib/activate/dev_manager.c
==============================================================================
--- lvm2/trunk/lib/activate/dev_manager.c	(original)
+++ lvm2/trunk/lib/activate/dev_manager.c	Sun Feb 12 11:46:24 2006
@@ -858,9 +858,10 @@
 	 * existing inactive table left behind.
 	 * Major/minor settings only apply to the visible layer.
 	 */
-	if (!(dnode = dm_tree_add_new_dev(dtree, name, dlid,
+	if (!(dnode = _dm_tree_add_new_dev_mode(dtree, name, dlid,
 					     layer ? lv->major : 0,
 					     layer ? lv->minor : 0,
+					     lv->uid, lv->gid, lv->mode,
 					     _read_only_lv(lv),
 					     lv->vg->status & PRECOMMITTED,
 					     lvlayer)))

Modified: lvm2/trunk/lib/metadata/metadata.h
==============================================================================
--- lvm2/trunk/lib/metadata/metadata.h	(original)
+++ lvm2/trunk/lib/metadata/metadata.h	Sun Feb 12 11:46:24 2006
@@ -279,6 +279,9 @@
 	uint32_t read_ahead;
 	int32_t major;
 	int32_t minor;
+	uid_t uid;
+	gid_t gid;
+	mode_t mode;
 
 	uint64_t size;
 	uint32_t le_count;



More information about the pkg-lvm-commits mailing list