chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
btrfs-util: introduce btrfs_is_filesystem() and make use of it where appropriate
[elogind.git]
/
src
/
shared
/
btrfs-util.c
diff --git
a/src/shared/btrfs-util.c
b/src/shared/btrfs-util.c
index 5bf87a389e46faa94d26600700a022eaaca7ea06..5a1ed60558be24e0eea6c3f52c4fd111bf231c24 100644
(file)
--- a/
src/shared/btrfs-util.c
+++ b/
src/shared/btrfs-util.c
@@
-83,10
+83,22
@@
static int extract_subvolume_name(const char *path, const char **subvolume) {
return 0;
}
return 0;
}
-int btrfs_is_snapshot(int fd) {
- struct stat st;
+int btrfs_is_filesystem(int fd) {
struct statfs sfs;
struct statfs sfs;
+ assert(fd >= 0);
+
+ if (fstatfs(fd, &sfs) < 0)
+ return -errno;
+
+ return F_TYPE_EQUAL(sfs.f_type, BTRFS_SUPER_MAGIC);
+}
+
+int btrfs_is_subvol(int fd) {
+ struct stat st;
+
+ assert(fd >= 0);
+
/* On btrfs subvolumes always have the inode 256 */
if (fstat(fd, &st) < 0)
/* On btrfs subvolumes always have the inode 256 */
if (fstat(fd, &st) < 0)
@@
-95,10
+107,7
@@
int btrfs_is_snapshot(int fd) {
if (!S_ISDIR(st.st_mode) || st.st_ino != 256)
return 0;
if (!S_ISDIR(st.st_mode) || st.st_ino != 256)
return 0;
- if (fstatfs(fd, &sfs) < 0)
- return -errno;
-
- return F_TYPE_EQUAL(sfs.f_type, BTRFS_SUPER_MAGIC);
+ return btrfs_is_filesystem(fd);
}
int btrfs_subvol_make(const char *path) {
}
int btrfs_subvol_make(const char *path) {
@@
-970,7
+979,7
@@
int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, BtrfsSnapshotFlag
assert(old_fd >= 0);
assert(new_path);
assert(old_fd >= 0);
assert(new_path);
- r = btrfs_is_s
napshot
(old_fd);
+ r = btrfs_is_s
ubvol
(old_fd);
if (r < 0)
return r;
if (r == 0) {
if (r < 0)
return r;
if (r == 0) {