btrfs-progs: move find_mount_root to utils.[ch]
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Mon, 10 Feb 2014 07:28:28 +0000 (15:28 +0800)
committerChris Mason <clm@fb.com>
Fri, 21 Mar 2014 13:23:12 +0000 (06:23 -0700)
Move find_mount_root to utils.[ch] for general use.

Signed-off-by: Qu Wenruo <quwenruo@cn.fuijitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
cmds-send.c
commands.h
utils.c
utils.h

index fc9a01e..9d49ce9 100644 (file)
@@ -39,6 +39,7 @@
 #include "ioctl.h"
 #include "commands.h"
 #include "list.h"
+#include "utils.h"
 
 #include "send.h"
 #include "send-utils.h"
@@ -57,54 +58,6 @@ struct btrfs_send {
        struct subvol_uuid_search sus;
 };
 
-int find_mount_root(const char *path, char **mount_root)
-{
-       FILE *mnttab;
-       int fd;
-       struct mntent *ent;
-       int len;
-       int ret;
-       int longest_matchlen = 0;
-       char *longest_match = NULL;
-
-       fd = open(path, O_RDONLY | O_NOATIME);
-       if (fd < 0)
-               return -errno;
-       close(fd);
-
-       mnttab = setmntent("/proc/self/mounts", "r");
-       if (!mnttab)
-               return -errno;
-
-       while ((ent = getmntent(mnttab))) {
-               len = strlen(ent->mnt_dir);
-               if (strncmp(ent->mnt_dir, path, len) == 0) {
-                       /* match found */
-                       if (longest_matchlen < len) {
-                               free(longest_match);
-                               longest_matchlen = len;
-                               longest_match = strdup(ent->mnt_dir);
-                       }
-               }
-       }
-       endmntent(mnttab);
-
-       if (!longest_match) {
-               fprintf(stderr,
-                       "ERROR: Failed to find mount root for path %s.\n",
-                       path);
-               return -ENOENT;
-       }
-
-       ret = 0;
-       *mount_root = realpath(longest_match, NULL);
-       if (!*mount_root)
-               ret = -errno;
-
-       free(longest_match);
-       return ret;
-}
-
 static int get_root_id(struct btrfs_send *s, const char *path, u64 *root_id)
 {
        struct subvol_info *si;
index 23c1201..db70043 100644 (file)
@@ -126,5 +126,4 @@ int cmd_rescue(int argc, char **argv);
 int test_issubvolume(char *path);
 
 /* send.c */
-int find_mount_root(const char *path, char **mount_root);
 char *get_subvol_name(char *mnt, char *full_path);
diff --git a/utils.c b/utils.c
index acd27b8..8006e49 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -2110,3 +2110,51 @@ int lookup_ino_rootid(int fd, u64 *rootid)
 
        return 0;
 }
+
+int find_mount_root(const char *path, char **mount_root)
+{
+       FILE *mnttab;
+       int fd;
+       struct mntent *ent;
+       int len;
+       int ret;
+       int longest_matchlen = 0;
+       char *longest_match = NULL;
+
+       fd = open(path, O_RDONLY | O_NOATIME);
+       if (fd < 0)
+               return -errno;
+       close(fd);
+
+       mnttab = setmntent("/proc/self/mounts", "r");
+       if (!mnttab)
+               return -errno;
+
+       while ((ent = getmntent(mnttab))) {
+               len = strlen(ent->mnt_dir);
+               if (strncmp(ent->mnt_dir, path, len) == 0) {
+                       /* match found */
+                       if (longest_matchlen < len) {
+                               free(longest_match);
+                               longest_matchlen = len;
+                               longest_match = strdup(ent->mnt_dir);
+                       }
+               }
+       }
+       endmntent(mnttab);
+
+       if (!longest_match) {
+               fprintf(stderr,
+                       "ERROR: Failed to find mount root for path %s.\n",
+                       path);
+               return -ENOENT;
+       }
+
+       ret = 0;
+       *mount_root = realpath(longest_match, NULL);
+       if (!*mount_root)
+               ret = -errno;
+
+       free(longest_match);
+       return ret;
+}
diff --git a/utils.h b/utils.h
index 512c51b..e074732 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -96,5 +96,6 @@ int ask_user(char *question);
 int lookup_ino_rootid(int fd, u64 *rootid);
 int btrfs_scan_lblkid(int update_kernel);
 int get_btrfs_mount(const char *dev, char *mp, size_t mp_size);
+int find_mount_root(const char *path, char **mount_root);
 
 #endif