]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/btrfs-util.h
importd: add API for exporting container/VM images
[thirdparty/systemd.git] / src / shared / btrfs-util.h
CommitLineData
d7c7c334
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3/***
4 This file is part of systemd.
5
6 Copyright 2014 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
c9403dce
ZJS
22#pragma once
23
d7c7c334
LP
24#include <stdbool.h>
25#include <sys/types.h>
26
10f9c755
LP
27#include "time-util.h"
28
29typedef struct BtrfsSubvolInfo {
30 uint64_t subvol_id;
31 usec_t otime;
32
33 sd_id128_t uuid;
34 sd_id128_t parent_uuid;
35
36 bool read_only;
37} BtrfsSubvolInfo;
38
b6b18498
LP
39typedef struct BtrfsQuotaInfo {
40 uint64_t referred;
41 uint64_t exclusive;
42 uint64_t referred_max;
43 uint64_t exclusive_max;
44} BtrfsQuotaInfo;
45
d7c7c334
LP
46int btrfs_is_snapshot(int fd);
47
48int btrfs_subvol_make(const char *path);
d7b8eec7 49int btrfs_subvol_make_label(const char *path);
d7c7c334 50int btrfs_subvol_remove(const char *path);
587fec42
LP
51
52int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, bool read_only, bool fallback_copy);
d7c7c334 53int btrfs_subvol_snapshot(const char *old_path, const char *new_path, bool read_only, bool fallback_copy);
10f9c755 54
0d6e763b 55int btrfs_subvol_set_read_only_fd(int fd, bool b);
10f9c755
LP
56int btrfs_subvol_set_read_only(const char *path, bool b);
57int btrfs_subvol_get_read_only_fd(int fd);
58int btrfs_subvol_get_id_fd(int fd, uint64_t *ret);
59int btrfs_subvol_get_info_fd(int fd, BtrfsSubvolInfo *info);
b6b18498 60int btrfs_subvol_get_quota_fd(int fd, BtrfsQuotaInfo *quota);
d7c7c334
LP
61
62int btrfs_reflink(int infd, int outfd);
1c7dd825 63int btrfs_clone_range(int infd, uint64_t in_offset, int ofd, uint64_t out_offset, uint64_t sz);
d7c7c334 64
efe02862 65int btrfs_get_block_device_fd(int fd, dev_t *dev);
d7c7c334 66int btrfs_get_block_device(const char *path, dev_t *dev);
f27a3864
LP
67
68int btrfs_defrag_fd(int fd);
69int btrfs_defrag(const char *p);
754061ce
LP
70
71int btrfs_quota_enable_fd(int fd, bool b);
72int btrfs_quota_enable(const char *path, bool b);
d6ce17c7
LP
73
74int btrfs_quota_limit_fd(int fd, uint64_t referred_max);
75int btrfs_quota_limit(const char *path, uint64_t referred_max);
efe02862 76
26166c88
LP
77int btrfs_resize_loopback_fd(int fd, uint64_t size, bool grow_only);
78int btrfs_resize_loopback(const char *path, uint64_t size, bool grow_only);