]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/btrfs-util.h
btrfs: missing endian conversion fix
[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 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,
49} BtrfsSnapshotFlags;
50
d7c7c334
LP
51int btrfs_is_snapshot(int fd);
52
53int btrfs_subvol_make(const char *path);
d7b8eec7 54int btrfs_subvol_make_label(const char *path);
587fec42 55
e9bc1871
LP
56int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, BtrfsSnapshotFlags flags);
57int btrfs_subvol_snapshot(const char *old_path, const char *new_path, BtrfsSnapshotFlags flags);
10f9c755 58
0d6e763b 59int btrfs_subvol_set_read_only_fd(int fd, bool b);
10f9c755
LP
60int btrfs_subvol_set_read_only(const char *path, bool b);
61int btrfs_subvol_get_read_only_fd(int fd);
62int btrfs_subvol_get_id_fd(int fd, uint64_t *ret);
63int btrfs_subvol_get_info_fd(int fd, BtrfsSubvolInfo *info);
b6b18498 64int btrfs_subvol_get_quota_fd(int fd, BtrfsQuotaInfo *quota);
d7c7c334
LP
65
66int btrfs_reflink(int infd, int outfd);
1c7dd825 67int btrfs_clone_range(int infd, uint64_t in_offset, int ofd, uint64_t out_offset, uint64_t sz);
d7c7c334 68
efe02862 69int btrfs_get_block_device_fd(int fd, dev_t *dev);
d7c7c334 70int btrfs_get_block_device(const char *path, dev_t *dev);
f27a3864
LP
71
72int btrfs_defrag_fd(int fd);
73int btrfs_defrag(const char *p);
754061ce
LP
74
75int btrfs_quota_enable_fd(int fd, bool b);
76int btrfs_quota_enable(const char *path, bool b);
d6ce17c7 77
cb81cd80
LP
78int btrfs_quota_limit_fd(int fd, uint64_t referenced_max);
79int btrfs_quota_limit(const char *path, uint64_t referenced_max);
efe02862 80
26166c88
LP
81int btrfs_resize_loopback_fd(int fd, uint64_t size, bool grow_only);
82int btrfs_resize_loopback(const char *path, uint64_t size, bool grow_only);
d9e2daaf
LP
83
84int btrfs_subvol_remove(const char *path, bool recursive);
85int btrfs_subvol_remove_fd(int fd, const char *subvolume, bool recursive);