]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/btrfs-util.h
import: add support for pulling raw tar balls as containers
[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
22#include <stdbool.h>
23#include <sys/types.h>
24
10f9c755
LP
25#include "time-util.h"
26
27typedef struct BtrfsSubvolInfo {
28 uint64_t subvol_id;
29 usec_t otime;
30
31 sd_id128_t uuid;
32 sd_id128_t parent_uuid;
33
34 bool read_only;
35} BtrfsSubvolInfo;
36
b6b18498
LP
37typedef struct BtrfsQuotaInfo {
38 uint64_t referred;
39 uint64_t exclusive;
40 uint64_t referred_max;
41 uint64_t exclusive_max;
42} BtrfsQuotaInfo;
43
d7c7c334
LP
44int btrfs_is_snapshot(int fd);
45
46int btrfs_subvol_make(const char *path);
d7b8eec7 47int btrfs_subvol_make_label(const char *path);
d7c7c334
LP
48int btrfs_subvol_remove(const char *path);
49int btrfs_subvol_snapshot(const char *old_path, const char *new_path, bool read_only, bool fallback_copy);
10f9c755
LP
50
51int btrfs_subvol_set_read_only(const char *path, bool b);
52int btrfs_subvol_get_read_only_fd(int fd);
53int btrfs_subvol_get_id_fd(int fd, uint64_t *ret);
54int btrfs_subvol_get_info_fd(int fd, BtrfsSubvolInfo *info);
b6b18498 55int btrfs_subvol_get_quota_fd(int fd, BtrfsQuotaInfo *quota);
d7c7c334
LP
56
57int btrfs_reflink(int infd, int outfd);
1c7dd825 58int btrfs_clone_range(int infd, uint64_t in_offset, int ofd, uint64_t out_offset, uint64_t sz);
d7c7c334
LP
59
60int btrfs_get_block_device(const char *path, dev_t *dev);
f27a3864
LP
61
62int btrfs_defrag_fd(int fd);
63int btrfs_defrag(const char *p);