summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmds-subvolume.c27
-rw-r--r--utils.c27
-rw-r--r--utils.h1
3 files changed, 28 insertions, 27 deletions
diff --git a/cmds-subvolume.c b/cmds-subvolume.c
index 3953d7c0..f62ab958 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 09962f8e..6dea54f2 100644
--- a/utils.c
+++ b/utils.c
@@ -3151,3 +3151,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 a4e55bf5..32bb0200 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);
/*