btrfs-progs: move test_issubvolume() to utils.c

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
master
Anand Jain 2016-03-21 15:21:01 +08:00 committed by David Sterba
parent 906dfb9e38
commit a5dbd2064e
3 changed files with 28 additions and 27 deletions

View File

@ -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;

27
utils.c
View File

@ -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;
}

View File

@ -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);
/*