]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/btrfs-util.h
udev: use inttypes.h types wherever appropriate
[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
LP
50int btrfs_subvol_remove(const char *path);
51int btrfs_subvol_snapshot(const char *old_path, const char *new_path, bool read_only, bool fallback_copy);
10f9c755 52
0d6e763b 53int btrfs_subvol_set_read_only_fd(int fd, bool b);
10f9c755
LP
54int btrfs_subvol_set_read_only(const char *path, bool b);
55int btrfs_subvol_get_read_only_fd(int fd);
56int btrfs_subvol_get_id_fd(int fd, uint64_t *ret);
57int btrfs_subvol_get_info_fd(int fd, BtrfsSubvolInfo *info);
b6b18498 58int btrfs_subvol_get_quota_fd(int fd, BtrfsQuotaInfo *quota);
d7c7c334
LP
59
60int btrfs_reflink(int infd, int outfd);
1c7dd825 61int btrfs_clone_range(int infd, uint64_t in_offset, int ofd, uint64_t out_offset, uint64_t sz);
d7c7c334 62
efe02862 63int btrfs_get_block_device_fd(int fd, dev_t *dev);
d7c7c334 64int btrfs_get_block_device(const char *path, dev_t *dev);
f27a3864
LP
65
66int btrfs_defrag_fd(int fd);
67int btrfs_defrag(const char *p);
754061ce
LP
68
69int btrfs_quota_enable_fd(int fd, bool b);
70int btrfs_quota_enable(const char *path, bool b);
d6ce17c7
LP
71
72int btrfs_quota_limit_fd(int fd, uint64_t referred_max);
73int btrfs_quota_limit(const char *path, uint64_t referred_max);
efe02862 74
26166c88
LP
75int btrfs_resize_loopback_fd(int fd, uint64_t size, bool grow_only);
76int btrfs_resize_loopback(const char *path, uint64_t size, bool grow_only);