mirror of
https://github.com/systemd/systemd.git
synced 2025-08-01 00:22:25 +03:00
machined/machinectl: add logic to show list of available images
This adds a new bus call to machined that enumerates /var/lib/container and returns all trees stored in it, distuingishing three types: - GPT disk images, which are files suffixed with ".gpt" - directory trees - btrfs subvolumes
This commit is contained in:
@ -84,18 +84,18 @@ int btrfs_is_snapshot(int fd) {
|
||||
struct stat st;
|
||||
struct statfs sfs;
|
||||
|
||||
if (fstatfs(fd, &sfs) < 0)
|
||||
return -errno;
|
||||
|
||||
if (!F_TYPE_EQUAL(sfs.f_type, BTRFS_SUPER_MAGIC))
|
||||
return 0;
|
||||
/* On btrfs subvolumes always have the inode 256 */
|
||||
|
||||
if (fstat(fd, &st) < 0)
|
||||
return -errno;
|
||||
|
||||
/* On btrfs subvolumes always have the inode 256 */
|
||||
if (!S_ISDIR(st.st_mode) || st.st_ino != 256)
|
||||
return 0;
|
||||
|
||||
return S_ISDIR(st.st_mode) && st.st_ino == 256;
|
||||
if (fstatfs(fd, &sfs) < 0)
|
||||
return -errno;
|
||||
|
||||
return F_TYPE_EQUAL(sfs.f_type, BTRFS_SUPER_MAGIC);
|
||||
}
|
||||
|
||||
int btrfs_subvol_snapshot(const char *old_path, const char *new_path, bool read_only, bool fallback_copy) {
|
||||
@ -232,6 +232,15 @@ int btrfs_subvol_read_only(const char *path, bool b) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int btrfs_subvol_is_read_only_fd(int fd) {
|
||||
uint64_t flags;
|
||||
|
||||
if (ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags) < 0)
|
||||
return -errno;
|
||||
|
||||
return !!(flags & BTRFS_SUBVOL_RDONLY);
|
||||
}
|
||||
|
||||
int btrfs_reflink(int infd, int outfd) {
|
||||
int r;
|
||||
|
||||
|
Reference in New Issue
Block a user