]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/btrfs-util.h
dhcp6-option: Add helper function for uncompressed domain names
[thirdparty/systemd.git] / src / basic / 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 39typedef struct BtrfsQuotaInfo {
cb81cd80 40 uint64_t referenced;
b6b18498 41 uint64_t exclusive;
cb81cd80 42 uint64_t referenced_max;
b6b18498
LP
43 uint64_t exclusive_max;
44} BtrfsQuotaInfo;
45
e9bc1871
LP
46typedef enum BtrfsSnapshotFlags {
47 BTRFS_SNAPSHOT_FALLBACK_COPY = 1,
48 BTRFS_SNAPSHOT_READ_ONLY = 2,
f70a17f8 49 BTRFS_SNAPSHOT_RECURSIVE = 4,
e9bc1871
LP
50} BtrfsSnapshotFlags;
51
21222ea5
LP
52int btrfs_is_filesystem(int fd);
53int btrfs_is_subvol(int fd);
d7c7c334
LP
54
55int btrfs_subvol_make(const char *path);
d7b8eec7 56int btrfs_subvol_make_label(const char *path);
587fec42 57
e9bc1871
LP
58int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, BtrfsSnapshotFlags flags);
59int btrfs_subvol_snapshot(const char *old_path, const char *new_path, BtrfsSnapshotFlags flags);
10f9c755 60
0d6e763b 61int btrfs_subvol_set_read_only_fd(int fd, bool b);
10f9c755
LP
62int btrfs_subvol_set_read_only(const char *path, bool b);
63int btrfs_subvol_get_read_only_fd(int fd);
90578cbd 64int btrfs_subvol_get_id(int fd, const char *subvolume, uint64_t *ret);
10f9c755
LP
65int btrfs_subvol_get_id_fd(int fd, uint64_t *ret);
66int btrfs_subvol_get_info_fd(int fd, BtrfsSubvolInfo *info);
b6b18498 67int btrfs_subvol_get_quota_fd(int fd, BtrfsQuotaInfo *quota);
d7c7c334
LP
68
69int btrfs_reflink(int infd, int outfd);
1c7dd825 70int btrfs_clone_range(int infd, uint64_t in_offset, int ofd, uint64_t out_offset, uint64_t sz);
d7c7c334 71
efe02862 72int btrfs_get_block_device_fd(int fd, dev_t *dev);
d7c7c334 73int btrfs_get_block_device(const char *path, dev_t *dev);
f27a3864
LP
74
75int btrfs_defrag_fd(int fd);
76int btrfs_defrag(const char *p);
754061ce
LP
77
78int btrfs_quota_enable_fd(int fd, bool b);
79int btrfs_quota_enable(const char *path, bool b);
d6ce17c7 80
cb81cd80
LP
81int btrfs_quota_limit_fd(int fd, uint64_t referenced_max);
82int btrfs_quota_limit(const char *path, uint64_t referenced_max);
efe02862 83
26166c88
LP
84int btrfs_resize_loopback_fd(int fd, uint64_t size, bool grow_only);
85int btrfs_resize_loopback(const char *path, uint64_t size, bool grow_only);
d9e2daaf
LP
86
87int btrfs_subvol_remove(const char *path, bool recursive);
88int btrfs_subvol_remove_fd(int fd, const char *subvolume, bool recursive);