[lvm-devel] master - cleanup: use libdm's dm_sysfs_dir() for sysfs directory throughout

Peter Rajnoha prajnoha at fedoraproject.org
Wed Jun 12 11:16:49 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=657abb08e0e509e084d23d8b4dcf6248362cccd4
Commit:        657abb08e0e509e084d23d8b4dcf6248362cccd4
Parent:        bb70b38021992dd462a94d40527a315ce1e692fd
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Wed Jun 12 11:38:48 2013 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Wed Jun 12 11:44:58 2013 +0200

cleanup: use libdm's dm_sysfs_dir() for sysfs directory throughout

And remove superfluous cmd->sysfs_dir and
set_sysfs_dir_path/sysfs_dir_path fn from lvm-globals.[ch].
---
 lib/commands/toolcontext.c |   18 ++++++------
 lib/commands/toolcontext.h |    1 -
 lib/device/dev-md.c        |   14 +++++-----
 lib/device/device.c        |   59 +++++++++++++++----------------------------
 lib/device/device.h        |   24 +++++------------
 lib/filters/filter-mpath.c |    5 ++-
 lib/filters/filter-mpath.h |    2 +-
 lib/filters/filter-sysfs.c |    3 +-
 lib/filters/filter-sysfs.h |    2 +-
 lib/filters/filter.c       |    2 +-
 lib/metadata/metadata.c    |    9 +++---
 lib/metadata/pv_manip.c    |    4 +-
 12 files changed, 58 insertions(+), 85 deletions(-)

diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index c409f2a..dca2329 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -79,14 +79,15 @@ static int _get_env_vars(struct cmd_context *cmd)
 	return 1;
 }
 
-static void _get_sysfs_dir(struct cmd_context *cmd)
+static void _get_sysfs_dir(struct cmd_context *cmd, char *buf, size_t buf_size)
 {
 	static char proc_mounts[PATH_MAX];
 	static char *split[4], buffer[PATH_MAX + 16];
 	FILE *fp;
 	char *sys_mnt = NULL;
 
-	cmd->sysfs_dir[0] = '\0';
+	*buf = '\0';
+
 	if (!*cmd->proc_dir) {
 		log_debug("No proc filesystem found: skipping sysfs detection");
 		return;
@@ -119,7 +120,7 @@ static void _get_sysfs_dir(struct cmd_context *cmd)
 		return;
 	}
 
-	strncpy(cmd->sysfs_dir, sys_mnt, sizeof(cmd->sysfs_dir));
+	strncpy(buf, sys_mnt, buf_size);
 }
 
 static int _parse_debug_classes(struct cmd_context *cmd)
@@ -272,6 +273,7 @@ static int _process_config(struct cmd_context *cmd)
 	int64_t pv_min_kb;
 	const char *lvmetad_socket;
 	int udev_disabled = 0;
+	char sysfs_dir[PATH_MAX];
 
 	if (!config_def_check(cmd, 0, 0, 0) && find_config_tree_bool(cmd, config_abort_on_errors_CFG)) {
 		log_error("LVM configuration invalid.");
@@ -312,10 +314,8 @@ static int _process_config(struct cmd_context *cmd)
 		cmd->proc_dir[0] = '\0';
 	}
 
-	/* FIXME Use global value of sysfs_dir everywhere instead cmd->sysfs_dir. */
-	_get_sysfs_dir(cmd);
-	set_sysfs_dir_path(cmd->sysfs_dir);
-	dm_set_sysfs_dir(cmd->sysfs_dir);
+	_get_sysfs_dir(cmd, sysfs_dir, sizeof(sysfs_dir));
+	dm_set_sysfs_dir(sysfs_dir);
 
 	/* activation? */
 	cmd->default_settings.activation = find_config_tree_bool(cmd, global_activation_CFG);
@@ -804,7 +804,7 @@ static struct dev_filter *_init_filter_components(struct cmd_context *cmd)
 	 * unavailable devices.
 	 */
 	if (find_config_tree_bool(cmd, devices_sysfs_scan_CFG)) {
-		if ((filters[nr_filt] = sysfs_filter_create(cmd->sysfs_dir)))
+		if ((filters[nr_filt] = sysfs_filter_create()))
 			nr_filt++;
 	}
 
@@ -836,7 +836,7 @@ static struct dev_filter *_init_filter_components(struct cmd_context *cmd)
 
 	/* mpath component filter. Optional, non-critical. */
 	if (find_config_tree_bool(cmd, devices_multipath_component_detection_CFG)) {
-		if ((filters[nr_filt] = mpath_filter_create(cmd->sysfs_dir)))
+		if ((filters[nr_filt] = mpath_filter_create()))
 			nr_filt++;
 	}
 
diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index b79ebe2..307dc77 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -113,7 +113,6 @@ struct cmd_context {
 	char system_dir[PATH_MAX];
 	char dev_dir[PATH_MAX];
 	char proc_dir[PATH_MAX];
-	char sysfs_dir[PATH_MAX]; /* FIXME Use global value instead. */
 };
 
 /*
diff --git a/lib/device/dev-md.c b/lib/device/dev-md.c
index 247a8ac..c4e2316 100644
--- a/lib/device/dev-md.c
+++ b/lib/device/dev-md.c
@@ -127,10 +127,10 @@ out:
 }
 
 static int _md_sysfs_attribute_snprintf(char *path, size_t size,
-					const char *sysfs_dir,
 					struct device *blkdev,
 					const char *attribute)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	struct stat info;
 	dev_t dev = blkdev->dev;
 	int ret = -1;
@@ -140,7 +140,7 @@ static int _md_sysfs_attribute_snprintf(char *path, size_t size,
 
 	if (MAJOR(dev) == blkext_major()) {
 		/* lookup parent MD device from blkext partition */
-		if (!get_primary_dev(sysfs_dir, blkdev, &dev))
+		if (!get_primary_dev(blkdev, &dev))
 			return ret;
 	}
 
@@ -181,8 +181,8 @@ static int _md_sysfs_attribute_scanf(const char *sysfs_dir,
 	FILE *fp;
 	int ret = 0;
 
-	if (_md_sysfs_attribute_snprintf(path, PATH_MAX, sysfs_dir,
-					 dev, attribute_name) < 0)
+	if (_md_sysfs_attribute_snprintf(path, PATH_MAX, dev,
+					 attribute_name) < 0)
 		return ret;
 
 	if (!(fp = fopen(path, "r"))) {
@@ -271,8 +271,9 @@ static int dev_md_raid_disks(const char *sysfs_dir, struct device *dev)
 /*
  * Calculate stripe width of md device using its sysfs files.
  */
-unsigned long dev_md_stripe_width(const char *sysfs_dir, struct device *dev)
+unsigned long dev_md_stripe_width(struct device *dev)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	unsigned long chunk_size_sectors = 0UL;
 	unsigned long stripe_width_sectors = 0UL;
 	int level, raid_disks, data_disks;
@@ -332,8 +333,7 @@ int dev_is_md(struct device *dev __attribute__((unused)),
 	return 0;
 }
 
-unsigned long dev_md_stripe_width(const char *sysfs_dir __attribute__((unused)),
-				  struct device *dev  __attribute__((unused)))
+unsigned long dev_md_stripe_width(struct device *dev  __attribute__((unused)))
 {
 	return 0UL;
 }
diff --git a/lib/device/device.c b/lib/device/device.c
index a87ae7f..52eb4a6 100644
--- a/lib/device/device.c
+++ b/lib/device/device.c
@@ -278,9 +278,9 @@ int _get_partition_type(struct dev_mgr *dm, struct device *d)
 
 #ifdef linux
 
-int get_primary_dev(const char *sysfs_dir,
-		    const struct device *dev, dev_t *result)
+int get_primary_dev(const struct device *dev, dev_t *result)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	char path[PATH_MAX+1];
 	char temp_path[PATH_MAX+1];
 	char buffer[64];
@@ -357,10 +357,9 @@ out:
 	return ret;
 }
 
-static unsigned long _dev_topology_attribute(const char *attribute,
-					     const char *sysfs_dir,
-					     struct device *dev)
+static unsigned long _dev_topology_attribute(const char *attribute, struct device *dev)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	static const char sysfs_fmt_str[] = "%s/dev/block/%d:%d/%s";
 	char path[PATH_MAX+1], buffer[64];
 	FILE *fp;
@@ -391,7 +390,7 @@ static unsigned long _dev_topology_attribute(const char *attribute,
 			log_sys_error("stat", path);
 			return 0;
 		}
-		if (!get_primary_dev(sysfs_dir, dev, &primary))
+		if (!get_primary_dev(dev, &primary))
 			return 0;
 
 		/* get attribute from partition's primary device */
@@ -434,75 +433,59 @@ out:
 	return result >> SECTOR_SHIFT;
 }
 
-unsigned long dev_alignment_offset(const char *sysfs_dir,
-				   struct device *dev)
+unsigned long dev_alignment_offset(struct device *dev)
 {
-	return _dev_topology_attribute("alignment_offset",
-				       sysfs_dir, dev);
+	return _dev_topology_attribute("alignment_offset", dev);
 }
 
-unsigned long dev_minimum_io_size(const char *sysfs_dir,
-				  struct device *dev)
+unsigned long dev_minimum_io_size(struct device *dev)
 {
-	return _dev_topology_attribute("queue/minimum_io_size",
-				       sysfs_dir, dev);
+	return _dev_topology_attribute("queue/minimum_io_size", dev);
 }
 
-unsigned long dev_optimal_io_size(const char *sysfs_dir,
-				  struct device *dev)
+unsigned long dev_optimal_io_size(struct device *dev)
 {
-	return _dev_topology_attribute("queue/optimal_io_size",
-				       sysfs_dir, dev);
+	return _dev_topology_attribute("queue/optimal_io_size", dev);
 }
 
-unsigned long dev_discard_max_bytes(const char *sysfs_dir,
-				    struct device *dev)
+unsigned long dev_discard_max_bytes(struct device *dev)
 {
-	return _dev_topology_attribute("queue/discard_max_bytes",
-				       sysfs_dir, dev);
+	return _dev_topology_attribute("queue/discard_max_bytes", dev);
 }
 
-unsigned long dev_discard_granularity(const char *sysfs_dir,
-				      struct device *dev)
+unsigned long dev_discard_granularity(struct device *dev)
 {
-	return _dev_topology_attribute("queue/discard_granularity",
-				       sysfs_dir, dev);
+	return _dev_topology_attribute("queue/discard_granularity", dev);
 }
 
 #else
 
-int get_primary_dev(const char *sysfs_dir,
-		    struct device *dev, dev_t *result)
+int get_primary_dev(struct device *dev, dev_t *result)
 {
 	return 0;
 }
 
-unsigned long dev_alignment_offset(const char *sysfs_dir,
-				   struct device *dev)
+unsigned long dev_alignment_offset(struct device *dev)
 {
 	return 0UL;
 }
 
-unsigned long dev_minimum_io_size(const char *sysfs_dir,
-				  struct device *dev)
+unsigned long dev_minimum_io_size(struct device *dev)
 {
 	return 0UL;
 }
 
-unsigned long dev_optimal_io_size(const char *sysfs_dir,
-				  struct device *dev)
+unsigned long dev_optimal_io_size(struct device *dev)
 {
 	return 0UL;
 }
 
-unsigned long dev_discard_max_bytes(const char *sysfs_dir,
-				    struct device *dev)
+unsigned long dev_discard_max_bytes(struct device *dev)
 {
 	return 0UL;
 }
 
-unsigned long dev_discard_granularity(const char *sysfs_dir,
-				      struct device *dev)
+unsigned long dev_discard_granularity(struct device *dev)
 {
 	return 0UL;
 }
diff --git a/lib/device/device.h b/lib/device/device.h
index 8c32a03..025d4ca 100644
--- a/lib/device/device.h
+++ b/lib/device/device.h
@@ -103,26 +103,16 @@ const char *dev_name_confirmed(struct device *dev, int quiet);
 int dev_is_md(struct device *dev, uint64_t *sb);
 int dev_is_swap(struct device *dev, uint64_t *signature);
 int dev_is_luks(struct device *dev, uint64_t *signature);
-unsigned long dev_md_stripe_width(const char *sysfs_dir, struct device *dev);
+unsigned long dev_md_stripe_width(struct device *dev);
 
 int is_partitioned_dev(struct device *dev);
 
-int get_primary_dev(const char *sysfs_dir,
-		    const struct device *dev, dev_t *result);
+int get_primary_dev(const struct device *dev, dev_t *result);
 
-unsigned long dev_alignment_offset(const char *sysfs_dir,
-				   struct device *dev);
-
-unsigned long dev_minimum_io_size(const char *sysfs_dir,
-				  struct device *dev);
-
-unsigned long dev_optimal_io_size(const char *sysfs_dir,
-				  struct device *dev);
-
-unsigned long dev_discard_max_bytes(const char *sysfs_dir,
-				    struct device *dev);
-
-unsigned long dev_discard_granularity(const char *sysfs_dir,
-				      struct device *dev);
+unsigned long dev_alignment_offset(struct device *dev);
+unsigned long dev_minimum_io_size(struct device *dev);
+unsigned long dev_optimal_io_size(struct device *dev);
+unsigned long dev_discard_max_bytes(struct device *dev);
+unsigned long dev_discard_granularity(struct device *dev);
 
 #endif
diff --git a/lib/filters/filter-mpath.c b/lib/filters/filter-mpath.c
index 2d171e6..f3af268 100644
--- a/lib/filters/filter-mpath.c
+++ b/lib/filters/filter-mpath.c
@@ -119,7 +119,7 @@ static int dev_is_mpath(struct dev_filter *f, struct device *dev)
 	char path[PATH_MAX+1];
 	char parent_name[PATH_MAX+1];
 	struct stat info;
-	const char *sysfs_dir = f->private;
+	const char *sysfs_dir = dm_sysfs_dir();
 	int major, minor;
 
 	/* Limit this filter only to SCSI devices */
@@ -176,8 +176,9 @@ static void _destroy(struct dev_filter *f)
 	dm_free(f);
 }
 
-struct dev_filter *mpath_filter_create(const char *sysfs_dir)
+struct dev_filter *mpath_filter_create(void)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	struct dev_filter *f;
 
 	if (!*sysfs_dir) {
diff --git a/lib/filters/filter-mpath.h b/lib/filters/filter-mpath.h
index 0b5373f..31585eb 100644
--- a/lib/filters/filter-mpath.h
+++ b/lib/filters/filter-mpath.h
@@ -17,7 +17,7 @@
 
 #include "dev-cache.h"
 
-struct dev_filter *mpath_filter_create(const char *sysfs_dir);
+struct dev_filter *mpath_filter_create(void);
 
 #endif
 
diff --git a/lib/filters/filter-sysfs.c b/lib/filters/filter-sysfs.c
index a075f36..cd039c0 100644
--- a/lib/filters/filter-sysfs.c
+++ b/lib/filters/filter-sysfs.c
@@ -290,8 +290,9 @@ static void _destroy(struct dev_filter *f)
 	dm_pool_destroy(ds->mem);
 }
 
-struct dev_filter *sysfs_filter_create(const char *sysfs_dir)
+struct dev_filter *sysfs_filter_create(void)
 {
+	const char *sysfs_dir = dm_sysfs_dir();
 	char sys_block[PATH_MAX];
 	unsigned sysfs_depth;
 	struct dm_pool *mem;
diff --git a/lib/filters/filter-sysfs.h b/lib/filters/filter-sysfs.h
index 9e4f503..6fb5591 100644
--- a/lib/filters/filter-sysfs.h
+++ b/lib/filters/filter-sysfs.h
@@ -18,6 +18,6 @@
 #include "config.h"
 #include "dev-cache.h"
 
-struct dev_filter *sysfs_filter_create(const char *sysfs_dir);
+struct dev_filter *sysfs_filter_create(void);
 
 #endif
diff --git a/lib/filters/filter.c b/lib/filters/filter.c
index 7925440..d3fdd6e 100644
--- a/lib/filters/filter.c
+++ b/lib/filters/filter.c
@@ -76,7 +76,7 @@ int dev_subsystem_part_major(const struct device *dev)
 		return 1;
 
 	if ((MAJOR(dev->dev) == _blkext_major) &&
-	    (get_primary_dev(sysfs_dir_path(), dev, &primary_dev)) &&
+	    (get_primary_dev(dev, &primary_dev)) &&
 	    (MAJOR(primary_dev) == _md_major))
 		return 1;
 
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index d25fe01..4e52bd4 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -84,7 +84,7 @@ unsigned long set_pe_align(struct physical_volume *pv, unsigned long data_alignm
 	 * Align to stripe-width of underlying md device if present
 	 */
 	if (find_config_tree_bool(pv->fmt->cmd, devices_md_chunk_alignment_CFG)) {
-		temp_pe_align = dev_md_stripe_width(pv->fmt->cmd->sysfs_dir, pv->dev);
+		temp_pe_align = dev_md_stripe_width(pv->dev);
 		if (_alignment_overrides_default(temp_pe_align, default_pe_align))
 			pv->pe_align = temp_pe_align;
 	}
@@ -97,11 +97,11 @@ unsigned long set_pe_align(struct physical_volume *pv, unsigned long data_alignm
 	 *   (e.g. MD's stripe width)
 	 */
 	if (find_config_tree_bool(pv->fmt->cmd, devices_data_alignment_detection_CFG)) {
-		temp_pe_align = dev_minimum_io_size(pv->fmt->cmd->sysfs_dir, pv->dev);
+		temp_pe_align = dev_minimum_io_size(pv->dev);
 		if (_alignment_overrides_default(temp_pe_align, default_pe_align))
 			pv->pe_align = temp_pe_align;
 
-		temp_pe_align = dev_optimal_io_size(pv->fmt->cmd->sysfs_dir, pv->dev);
+		temp_pe_align = dev_optimal_io_size(pv->dev);
 		if (_alignment_overrides_default(temp_pe_align, default_pe_align))
 			pv->pe_align = temp_pe_align;
 	}
@@ -129,8 +129,7 @@ unsigned long set_pe_align_offset(struct physical_volume *pv,
 		goto out;
 
 	if (find_config_tree_bool(pv->fmt->cmd, devices_data_alignment_offset_detection_CFG)) {
-		int align_offset = dev_alignment_offset(pv->fmt->cmd->sysfs_dir,
-							pv->dev);
+		int align_offset = dev_alignment_offset(pv->dev);
 		/* must handle a -1 alignment_offset; means dev is misaligned */
 		if (align_offset < 0)
 			align_offset = 0;
diff --git a/lib/metadata/pv_manip.c b/lib/metadata/pv_manip.c
index 4a65a3e..ae453ae 100644
--- a/lib/metadata/pv_manip.c
+++ b/lib/metadata/pv_manip.c
@@ -216,8 +216,8 @@ int discard_pv_segment(struct pv_segment *peg, uint32_t discard_area_reduction)
 		return 1;
 	}
 
-	if (!dev_discard_max_bytes(peg->pv->fmt->cmd->sysfs_dir, peg->pv->dev) ||
-	    !dev_discard_granularity(peg->pv->fmt->cmd->sysfs_dir, peg->pv->dev))
+	if (!dev_discard_max_bytes(peg->pv->dev) ||
+	    !dev_discard_granularity(peg->pv->dev))
 		return 1;
 
 	discard_offset_sectors = (peg->pe + peg->lvseg->area_len - discard_area_reduction) *




More information about the lvm-devel mailing list