* [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg
@ 2016-03-21  7:20 Anand Jain
  2016-03-21  7:21 ` [PATCH 1/6] btrfs-progs: spatial rearrange subvolume functions together Anand Jain
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:20 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
We need subvolume helper functions easily accessible for features
around subvolume. This patch set is just a cleanup of subvolume
functions.
This is tested fine with fstests group subvol and subvol hand tests.
v3: Separate changes into 6 commits,
    Drops the idea of creating subvolume.c, instead update utils.c.
    Adds 1/5 a minor func mv and 3/5 remove of a duplicate func and
    6/6 rename of get_subvol_name as per review comment.
v2: Update commit log. Separate this patch from the encryption
    patch set.
Anand Jain (6):
  btrfs-progs: spatial rearrange subvolume functions together
  btrfs-progs: move test_issubvolume() to utils.c
  btrfs-progs: remove duplicate function __is_subvol()
  btrfs-progs: move get_subvol_name() to utils.c
  btrfs-progs: create get_subvol_info()
  btrfs-progs: rename get_subvol_name() to subvol_minus_mnt()
 cmds-send.c      |  15 +-----
 cmds-subvolume.c | 107 +++++++++----------------------------
 utils.c          | 157 ++++++++++++++++++++++++++++++++++++++++++++-----------
 utils.h          |   4 ++
 4 files changed, 157 insertions(+), 126 deletions(-)
-- 
2.7.0
>From 22a64f723b6563785276d27b0ae4f7b8ded6febe Mon Sep 17 00:00:00 2001
From: Anand Jain <anand.jain@oracle.com>
Date: Mon, 21 Mar 2016 13:55:10 +0800
Anand Jain (5):
  btrfs-progs: spatial rearrange subvolume functions together
  btrfs-progs: move test_issubvolume() to utils.c
  btrfs-progs: remove duplicate function __is_subvol()
  btrfs-progs: move get_subvol_name() to utils.c
  btrfs-progs: create get_subvol_info()
 cmds-send.c      |  11 ----
 cmds-subvolume.c | 101 +++++++------------------------------
 utils.c          | 151 +++++++++++++++++++++++++++++++++++++++++++------------
 utils.h          |   4 ++
 4 files changed, 141 insertions(+), 126 deletions(-)
-- 
2.7.0
^ permalink raw reply	[flat|nested] 8+ messages in thread
* [PATCH 1/6] btrfs-progs: spatial rearrange subvolume functions together
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-21  7:21 ` [PATCH 2/6] btrfs-progs: move test_issubvolume() to utils.c Anand Jain
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 utils.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/utils.c b/utils.c
index c0c564e2f69b..fb549ee923c7 100644
--- a/utils.c
+++ b/utils.c
@@ -2784,17 +2784,6 @@ int test_minimum_size(const char *file, u32 nodesize)
 	return 0;
 }
 
-/*
- * test if name is a correct subvolume name
- * this function return
- * 0-> name is not a correct subvolume name
- * 1-> name is a correct subvolume name
- */
-int test_issubvolname(const char *name)
-{
-	return name[0] != '\0' && !strchr(name, '/') &&
-		strcmp(name, ".") && strcmp(name, "..");
-}
 
 /*
  * Test if path is a directory
@@ -3146,3 +3135,16 @@ void clean_args_no_options(int argc, char *argv[], const char * const *usagestr)
 		}
 	}
 }
+
+/* Subvolume helper functions */
+/*
+ * test if name is a correct subvolume name
+ * this function return
+ * 0-> name is not a correct subvolume name
+ * 1-> name is a correct subvolume name
+ */
+int test_issubvolname(const char *name)
+{
+	return name[0] != '\0' && !strchr(name, '/') &&
+		strcmp(name, ".") && strcmp(name, "..");
+}
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 2/6] btrfs-progs: move test_issubvolume() to utils.c
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
  2016-03-21  7:21 ` [PATCH 1/6] btrfs-progs: spatial rearrange subvolume functions together Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-21  7:21 ` [PATCH 3/6] btrfs-progs: remove duplicate function __is_subvol() Anand Jain
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 cmds-subvolume.c | 27 ---------------------------
 utils.c          | 27 +++++++++++++++++++++++++++
 utils.h          |  1 +
 3 files changed, 28 insertions(+), 27 deletions(-)
diff --git a/cmds-subvolume.c b/cmds-subvolume.c
index 3953d7c060a2..f62ab9584ce7 100644
--- a/cmds-subvolume.c
+++ b/cmds-subvolume.c
@@ -224,33 +224,6 @@ out:
 	return retval;
 }
 
-/*
- * Test if path is a subvolume
- * Returns:
- *   0 - path exists but it is not a subvolume
- *   1 - path exists and it is  a subvolume
- * < 0 - error
- */
-int test_issubvolume(const char *path)
-{
-	struct stat	st;
-	struct statfs stfs;
-	int		res;
-
-	res = stat(path, &st);
-	if (res < 0)
-		return -errno;
-
-	if (st.st_ino != BTRFS_FIRST_FREE_OBJECTID || !S_ISDIR(st.st_mode))
-		return 0;
-
-	res = statfs(path, &stfs);
-	if (res < 0)
-		return -errno;
-
-	return (int)stfs.f_type == BTRFS_SUPER_MAGIC;
-}
-
 static int wait_for_commit(int fd)
 {
 	int ret;
diff --git a/utils.c b/utils.c
index fb549ee923c7..046ddf8eef19 100644
--- a/utils.c
+++ b/utils.c
@@ -3148,3 +3148,30 @@ int test_issubvolname(const char *name)
 	return name[0] != '\0' && !strchr(name, '/') &&
 		strcmp(name, ".") && strcmp(name, "..");
 }
+
+/*
+ * Test if path is a subvolume
+ * Returns:
+ *   0 - path exists but it is not a subvolume
+ *   1 - path exists and it is  a subvolume
+ * < 0 - error
+ */
+int test_issubvolume(const char *path)
+{
+	struct stat	st;
+	struct statfs stfs;
+	int		res;
+
+	res = stat(path, &st);
+	if (res < 0)
+		return -errno;
+
+	if (st.st_ino != BTRFS_FIRST_FREE_OBJECTID || !S_ISDIR(st.st_mode))
+		return 0;
+
+	res = statfs(path, &stfs);
+	if (res < 0)
+		return -errno;
+
+	return (int)stfs.f_type == BTRFS_SUPER_MAGIC;
+}
diff --git a/utils.h b/utils.h
index a4e55bf58914..32bb02005719 100644
--- a/utils.h
+++ b/utils.h
@@ -194,6 +194,7 @@ const char* group_profile_str(u64 flags);
 
 int test_minimum_size(const char *file, u32 leafsize);
 int test_issubvolname(const char *name);
+int test_issubvolume(const char *path);
 int test_isdir(const char *path);
 
 /*
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 3/6] btrfs-progs: remove duplicate function __is_subvol()
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
  2016-03-21  7:21 ` [PATCH 1/6] btrfs-progs: spatial rearrange subvolume functions together Anand Jain
  2016-03-21  7:21 ` [PATCH 2/6] btrfs-progs: move test_issubvolume() to utils.c Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-21  7:21 ` [PATCH 4/6] btrfs-progs: move get_subvol_name() to utils.c Anand Jain
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
The function test_issubvolume() provides the same check, and
has better logic.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 utils.c | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)
diff --git a/utils.c b/utils.c
index 046ddf8eef19..110a4badb764 100644
--- a/utils.c
+++ b/utils.c
@@ -1864,25 +1864,6 @@ int set_label(const char *btrfs_dev, const char *label)
 }
 
 /*
- * Unsafe subvolume check.
- *
- * This only checks ino == BTRFS_FIRST_FREE_OBJECTID, even it is not in a
- * btrfs mount point.
- * Must use together with other reliable method like btrfs ioctl.
- */
-static int __is_subvol(const char *path)
-{
-	struct stat st;
-	int ret;
-
-	ret = lstat(path, &st);
-	if (ret < 0)
-		return ret;
-
-	return st.st_ino == BTRFS_FIRST_FREE_OBJECTID;
-}
-
-/*
  * A not-so-good version fls64. No fascinating optimization since
  * no one except parse_size use it
  */
@@ -2002,7 +1983,7 @@ u64 parse_qgroupid(const char *p)
 
 path:
 	/* Path format like subv at 'my_subvol' is the fallback case */
-	ret = __is_subvol(p);
+	ret = test_issubvolume(p);
 	if (ret < 0 || !ret)
 		goto err;
 	fd = open(p, O_RDONLY);
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 4/6] btrfs-progs: move get_subvol_name() to utils.c
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
                   ` (2 preceding siblings ...)
  2016-03-21  7:21 ` [PATCH 3/6] btrfs-progs: remove duplicate function __is_subvol() Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-21  7:21 ` [PATCH 5/6] btrfs-progs: create get_subvol_info() Anand Jain
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 cmds-send.c | 11 -----------
 utils.c     | 12 ++++++++++++
 utils.h     |  1 +
 3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/cmds-send.c b/cmds-send.c
index 3e34d75bb834..7605ed94cd64 100644
--- a/cmds-send.c
+++ b/cmds-send.c
@@ -335,17 +335,6 @@ out:
 	return ret;
 }
 
-char *get_subvol_name(char *mnt, char *full_path)
-{
-	int len = strlen(mnt);
-	if (!len)
-		return full_path;
-	if (mnt[len - 1] != '/')
-		len += 1;
-
-	return full_path + len;
-}
-
 static int init_root_path(struct btrfs_send *s, const char *subvol)
 {
 	int ret = 0;
diff --git a/utils.c b/utils.c
index 110a4badb764..9aae7df04902 100644
--- a/utils.c
+++ b/utils.c
@@ -3156,3 +3156,15 @@ int test_issubvolume(const char *path)
 
 	return (int)stfs.f_type == BTRFS_SUPER_MAGIC;
 }
+
+char *get_subvol_name(char *mnt, char *full_path)
+{
+	int len = strlen(mnt);
+	if (!len)
+		return full_path;
+
+	if (mnt[len - 1] != '/')
+		len += 1;
+
+	return full_path + len;
+}
diff --git a/utils.h b/utils.h
index 32bb02005719..08543ff278ee 100644
--- a/utils.h
+++ b/utils.h
@@ -195,6 +195,7 @@ const char* group_profile_str(u64 flags);
 int test_minimum_size(const char *file, u32 leafsize);
 int test_issubvolname(const char *name);
 int test_issubvolume(const char *path);
+char *get_subvol_name(char *mnt, char *full_path);
 int test_isdir(const char *path);
 
 /*
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 5/6] btrfs-progs: create get_subvol_info()
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
                   ` (3 preceding siblings ...)
  2016-03-21  7:21 ` [PATCH 4/6] btrfs-progs: move get_subvol_name() to utils.c Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-21  7:21 ` [PATCH 6/6] btrfs-progs: rename get_subvol_name() to subvol_minus_mnt() Anand Jain
  2016-03-22 16:11 ` [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg David Sterba
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
get_subvol_info() is useful as we are adding more features around
subvolume. This function was inline with the function
cmd_subvol_show().
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 cmds-subvolume.c | 80 ++++++++++++++++++--------------------------------------
 utils.c          | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++
 utils.h          |  2 ++
 3 files changed, 100 insertions(+), 55 deletions(-)
diff --git a/cmds-subvolume.c b/cmds-subvolume.c
index f62ab9584ce7..2319684e1500 100644
--- a/cmds-subvolume.c
+++ b/cmds-subvolume.c
@@ -908,21 +908,21 @@ static const char * const cmd_subvol_show_usage[] = {
 static int cmd_subvol_show(int argc, char **argv)
 {
 	struct root_info get_ri;
-	struct btrfs_list_filter_set *filter_set;
+	struct btrfs_list_filter_set *filter_set = NULL;
 	char tstr[256];
 	char uuidparse[BTRFS_UUID_UNPARSED_SIZE];
-	char *fullpath = NULL, *svpath = NULL, *mnt = NULL;
+	char *fullpath = NULL;
 	char raw_prefix[] = "\t\t\t\t";
-	u64 sv_id;
-	int fd = -1, mntfd = -1;
+	int fd = -1;
 	int ret = 1;
-	DIR *dirstream1 = NULL, *dirstream2 = NULL;
+	DIR *dirstream1 = NULL;
 
 	clean_args_no_options(argc, argv, cmd_subvol_show_usage);
 
 	if (check_argc_exact(argc - optind, 1))
 		usage(cmd_subvol_show_usage);
 
+	memset(&get_ri, 0, sizeof(get_ri));
 	fullpath = realpath(argv[optind], NULL);
 	if (!fullpath) {
 		error("cannot find real path for '%s': %s",
@@ -930,57 +930,23 @@ static int cmd_subvol_show(int argc, char **argv)
 		goto out;
 	}
 
-	ret = test_issubvolume(fullpath);
-	if (ret < 0) {
-		error("cannot access subvolume %s: %s", fullpath,
-			strerror(-ret));
-		goto out;
-	}
-	if (!ret) {
-		error("not a subvolume: %s", fullpath);
-		ret = 1;
-		goto out;
-	}
-
-	ret = find_mount_root(fullpath, &mnt);
-	if (ret < 0) {
-		error("find_mount_root failed on '%s': %s",
-			fullpath, strerror(-ret));
-		goto out;
-	}
-	if (ret > 0) {
-		error("%s doesn't belong to btrfs mount point", fullpath);
-		goto out;
-	}
-	ret = 1;
-	svpath = get_subvol_name(mnt, fullpath);
-
-	fd = btrfs_open_dir(fullpath, &dirstream1, 1);
-	if (fd < 0)
-		goto out;
-
-	ret = btrfs_list_get_path_rootid(fd, &sv_id);
-	if (ret) {
-		error("can't get rootid for '%s'", fullpath);
-		goto out;
-	}
-
-	mntfd = btrfs_open_dir(mnt, &dirstream2, 1);
-	if (mntfd < 0)
-		goto out;
-
-	if (sv_id == BTRFS_FS_TREE_OBJECTID) {
+	ret = get_subvol_info(fullpath, &get_ri);
+	if (ret == 2) {
+		/*
+		 * Since the top level btrfs was given don't
+		 * take that as error
+		 */
 		printf("%s is toplevel subvolume\n", fullpath);
+		ret = 0;
 		goto out;
 	}
-
-	memset(&get_ri, 0, sizeof(get_ri));
-	get_ri.root_id = sv_id;
-
-	ret = btrfs_get_subvol(mntfd, &get_ri);
 	if (ret) {
-		error("can't find '%s'", svpath);
-		goto out;
+		ret < 0 ?
+			error("Failed to get subvol info %s: %s\n",
+							fullpath, strerror(-ret)):
+			error("Failed to get subvol info %s: %d\n",
+							fullpath, ret);
+		return ret;
 	}
 
 	/* print the info */
@@ -1031,19 +997,23 @@ static int cmd_subvol_show(int argc, char **argv)
 	btrfs_list_setup_filter(&filter_set, BTRFS_LIST_FILTER_BY_PARENT,
 				(u64)(unsigned long)get_ri.uuid);
 	btrfs_list_setup_print_column(BTRFS_LIST_PATH);
+
+	fd = open_file_or_dir(fullpath, &dirstream1);
+	if (fd < 0) {
+		fprintf(stderr, "ERROR: can't access '%s'\n", fullpath);
+		goto out;
+	}
 	btrfs_list_subvols_print(fd, filter_set, NULL, BTRFS_LIST_LAYOUT_RAW,
 			1, raw_prefix);
 
+out:
 	/* clean up */
 	free(get_ri.path);
 	free(get_ri.name);
 	free(get_ri.full_path);
 	btrfs_list_free_filter_set(filter_set);
 
-out:
 	close_file_or_dir(fd, dirstream1);
-	close_file_or_dir(mntfd, dirstream2);
-	free(mnt);
 	free(fullpath);
 	return !!ret;
 }
diff --git a/utils.c b/utils.c
index 9aae7df04902..e66314db21ed 100644
--- a/utils.c
+++ b/utils.c
@@ -3168,3 +3168,76 @@ char *get_subvol_name(char *mnt, char *full_path)
 
 	return full_path + len;
 }
+
+/*
+ * Returns
+ * <0: Std error
+ * 0: All fine
+ * 1: Error; and error info printed to the terminal. Fixme.
+ * 2: If the fullpath is root tree instead of subvol tree
+ */
+int get_subvol_info(char *fullpath, struct root_info *get_ri)
+{
+	u64 sv_id;
+	int ret = 1;
+	int fd = -1;
+	int mntfd = -1;
+	char *mnt = NULL;
+	char *svpath = NULL;
+	DIR *dirstream1 = NULL;
+	DIR *dirstream2 = NULL;
+
+	ret = test_issubvolume(fullpath);
+	if (ret < 0)
+		return ret;
+	if (!ret) {
+		error("not a subvolume: %s", fullpath);
+		return 1;
+	}
+
+	ret = find_mount_root(fullpath, &mnt);
+	if (ret < 0)
+		return ret;
+	if (ret > 0) {
+		error("%s doesn't belong to btrfs mount point", fullpath);
+		return 1;
+	}
+	ret = 1;
+	svpath = get_subvol_name(mnt, fullpath);
+
+	fd = btrfs_open_dir(fullpath, &dirstream1, 1);
+	if (fd < 0)
+		goto out;
+
+	ret = btrfs_list_get_path_rootid(fd, &sv_id);
+	if (ret) {
+		error("can't get rootid for '%s'", fullpath);
+		goto out;
+	}
+
+	mntfd = btrfs_open_dir(mnt, &dirstream2, 1);
+	if (mntfd < 0)
+		goto out;
+
+	if (sv_id == BTRFS_FS_TREE_OBJECTID) {
+		ret = 2;
+		/*
+		 * So that caller may decide if thats an error or just fine.
+		 */
+		goto out;
+	}
+
+	memset(get_ri, 0, sizeof(*get_ri));
+	get_ri->root_id = sv_id;
+
+	ret = btrfs_get_subvol(mntfd, get_ri);
+	if (ret)
+		error("can't find '%s': %d", svpath, ret);
+
+out:
+	close_file_or_dir(mntfd, dirstream2);
+	close_file_or_dir(mntfd, dirstream1);
+	free(mnt);
+
+	return ret;
+}
diff --git a/utils.h b/utils.h
index 08543ff278ee..843a1f4faa52 100644
--- a/utils.h
+++ b/utils.h
@@ -24,6 +24,7 @@
 #include <dirent.h>
 #include <stdarg.h>
 #include "internal.h"
+#include "btrfs-list.h"
 
 #define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024)
 #define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024)
@@ -196,6 +197,7 @@ int test_minimum_size(const char *file, u32 leafsize);
 int test_issubvolname(const char *name);
 int test_issubvolume(const char *path);
 char *get_subvol_name(char *mnt, char *full_path);
+int get_subvol_info(char *fullpath, struct root_info *get_ri);
 int test_isdir(const char *path);
 
 /*
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 6/6] btrfs-progs: rename get_subvol_name() to subvol_minus_mnt()
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
                   ` (4 preceding siblings ...)
  2016-03-21  7:21 ` [PATCH 5/6] btrfs-progs: create get_subvol_info() Anand Jain
@ 2016-03-21  7:21 ` Anand Jain
  2016-03-22 16:11 ` [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg David Sterba
  6 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2016-03-21  7:21 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 cmds-send.c | 4 ++--
 utils.c     | 4 ++--
 utils.h     | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/cmds-send.c b/cmds-send.c
index 7605ed94cd64..339475927837 100644
--- a/cmds-send.c
+++ b/cmds-send.c
@@ -455,7 +455,7 @@ int cmd_send(int argc, char **argv)
 			if (ret < 0)
 				goto out;
 
-			ret = get_root_id(&send, get_subvol_name(send.root_path, subvol),
+			ret = get_root_id(&send, subvol_path_minus_mnt(send.root_path, subvol),
 					&root_id);
 			if (ret < 0) {
 				error("cannot resolve rootid for %s", subvol);
@@ -569,7 +569,7 @@ int cmd_send(int argc, char **argv)
 
 	if (snapshot_parent != NULL) {
 		ret = get_root_id(&send,
-				get_subvol_name(send.root_path, snapshot_parent),
+				subvol_path_minus_mnt(send.root_path, snapshot_parent),
 				&parent_root_id);
 		if (ret < 0) {
 			error("could not resolve rootid for %s", snapshot_parent);
diff --git a/utils.c b/utils.c
index e66314db21ed..965356df15c9 100644
--- a/utils.c
+++ b/utils.c
@@ -3157,7 +3157,7 @@ int test_issubvolume(const char *path)
 	return (int)stfs.f_type == BTRFS_SUPER_MAGIC;
 }
 
-char *get_subvol_name(char *mnt, char *full_path)
+char *subvol_path_minus_mnt(char *mnt, char *full_path)
 {
 	int len = strlen(mnt);
 	if (!len)
@@ -3203,7 +3203,7 @@ int get_subvol_info(char *fullpath, struct root_info *get_ri)
 		return 1;
 	}
 	ret = 1;
-	svpath = get_subvol_name(mnt, fullpath);
+	svpath = subvol_path_minus_mnt(mnt, fullpath);
 
 	fd = btrfs_open_dir(fullpath, &dirstream1, 1);
 	if (fd < 0)
diff --git a/utils.h b/utils.h
index 843a1f4faa52..abdd52095854 100644
--- a/utils.h
+++ b/utils.h
@@ -196,7 +196,7 @@ const char* group_profile_str(u64 flags);
 int test_minimum_size(const char *file, u32 leafsize);
 int test_issubvolname(const char *name);
 int test_issubvolume(const char *path);
-char *get_subvol_name(char *mnt, char *full_path);
+char *subvol_path_minus_mnt(char *mnt, char *full_path);
 int get_subvol_info(char *fullpath, struct root_info *get_ri);
 int test_isdir(const char *path);
 
-- 
2.7.0
^ permalink raw reply related	[flat|nested] 8+ messages in thread
* Re: [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg
  2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
                   ` (5 preceding siblings ...)
  2016-03-21  7:21 ` [PATCH 6/6] btrfs-progs: rename get_subvol_name() to subvol_minus_mnt() Anand Jain
@ 2016-03-22 16:11 ` David Sterba
  6 siblings, 0 replies; 8+ messages in thread
From: David Sterba @ 2016-03-22 16:11 UTC (permalink / raw)
  To: Anand Jain; +Cc: linux-btrfs, dsterba
On Mon, Mar 21, 2016 at 03:20:59PM +0800, Anand Jain wrote:
> We need subvolume helper functions easily accessible for features
> around subvolume. This patch set is just a cleanup of subvolume
> functions.
> 
> This is tested fine with fstests group subvol and subvol hand tests.
> 
> v3: Separate changes into 6 commits,
>     Drops the idea of creating subvolume.c, instead update utils.c.
>     Adds 1/5 a minor func mv and 3/5 remove of a duplicate func and
>     6/6 rename of get_subvol_name as per review comment.
> 
> v2: Update commit log. Separate this patch from the encryption
>     patch set.
> 
> 
> Anand Jain (6):
>   btrfs-progs: spatial rearrange subvolume functions together
>   btrfs-progs: move test_issubvolume() to utils.c
>   btrfs-progs: remove duplicate function __is_subvol()
>   btrfs-progs: move get_subvol_name() to utils.c
>   btrfs-progs: create get_subvol_info()
>   btrfs-progs: rename get_subvol_name() to subvol_minus_mnt()
Applied, thanks.
^ permalink raw reply	[flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-03-22 16:11 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-21  7:20 [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg Anand Jain
2016-03-21  7:21 ` [PATCH 1/6] btrfs-progs: spatial rearrange subvolume functions together Anand Jain
2016-03-21  7:21 ` [PATCH 2/6] btrfs-progs: move test_issubvolume() to utils.c Anand Jain
2016-03-21  7:21 ` [PATCH 3/6] btrfs-progs: remove duplicate function __is_subvol() Anand Jain
2016-03-21  7:21 ` [PATCH 4/6] btrfs-progs: move get_subvol_name() to utils.c Anand Jain
2016-03-21  7:21 ` [PATCH 5/6] btrfs-progs: create get_subvol_info() Anand Jain
2016-03-21  7:21 ` [PATCH 6/6] btrfs-progs: rename get_subvol_name() to subvol_minus_mnt() Anand Jain
2016-03-22 16:11 ` [PATCH 0/6 v3] btrfs-progs: subvolume functions reorg David Sterba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).