1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (C) 2007 Oracle. All rights reserved. 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This program is free software; you can redistribute it and/or 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * modify it under the terms of the GNU General Public 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * License v2 as published by the Free Software Foundation. 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * This program is distributed in the hope that it will be useful, 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * but WITHOUT ANY WARRANTY; without even the implied warranty of 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * General Public License for more details. 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * You should have received a copy of the GNU General Public 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * License along with this program; if not, write to the 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Boston, MA 021110-1307, USA. 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_LINUX_BTRFS_H 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_LINUX_BTRFS_H 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/ioctl.h> 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_MAGIC 0x94 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_VOL_NAME_MAX 255 26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* this should be 4k */ 28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_PATH_NAME_MAX 4087 29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_vol_args { 30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 fd; 31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[BTRFS_PATH_NAME_MAX + 1]; 32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEVICE_PATH_NAME_MAX 1024 35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) 37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SUBVOL_RDONLY (1ULL << 1) 38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2) 39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_FSID_SIZE 16 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_UUID_SIZE 16 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0) 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_qgroup_limit { 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_rfer; 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_excl; 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rsv_rfer; 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rsv_excl; 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_qgroup_inherit { 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_qgroups; 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_ref_copies; 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_excl_copies; 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_limit lim; 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroups[0]; 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_limit_args { 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroupid; 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_limit lim; 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SUBVOL_NAME_MAX 4039 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_vol_args_v2 { 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 fd; 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 transid; 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng union { 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct { 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_inherit __user *qgroup_inherit; 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[4]; 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[BTRFS_SUBVOL_NAME_MAX + 1]; 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * structure to report errors and progress to userspace, either as a 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * result of a finished scrub, a canceled scrub or a progress inquiry 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_scrub_progress { 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 data_extents_scrubbed; /* # of data extents scrubbed */ 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_extents_scrubbed; /* # of tree extents scrubbed */ 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 data_bytes_scrubbed; /* # of data bytes scrubbed */ 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_bytes_scrubbed; /* # of tree bytes scrubbed */ 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 read_errors; /* # of read errors encountered (EIO) */ 91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 csum_errors; /* # of failed csum checks */ 92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 verify_errors; /* # of occurences, where the metadata 93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * of a tree block did not match the 94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * expected values, like generation or 95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * logical */ 96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 no_csum; /* # of 4k data block for which no csum 97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * is present, probably the result of 98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * data written with nodatasum */ 99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 csum_discards; /* # of csum for which no data was found 100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * in the extent tree. */ 101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 super_errors; /* # of bad super blocks encountered */ 102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 malloc_errors; /* # of internal kmalloc errors. These 103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * will likely cause an incomplete 104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * scrub */ 105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 uncorrectable_errors; /* # of errors where either no intact 106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * copy was found or the writeback 107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * failed */ 108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 corrected_errors; /* # of errors corrected */ 109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 last_physical; /* last physical address scrubbed. In 110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * case a scrub was aborted, this can 111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * be used to restart the scrub */ 112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unverified_errors; /* # of occurences where a read for a 113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * full (64k) bio failed, but the re- 114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * check succeeded for each 4k piece. 115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Intermittent error. */ 116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SCRUB_READONLY 1 119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_scrub_args { 120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in */ 121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 start; /* in */ 122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 end; /* in */ 123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_scrub_progress progress; /* out */ 125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* pad to 1k */ 126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8]; 127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0 130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1 131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_start_params { 132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 srcdevid; /* in, if 0, use srcdev_name instead */ 133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cont_reading_from_srcdev_mode; /* in, see #define 134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * above */ 135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */ 136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */ 137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED 0 140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED 1 141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2 142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED 3 143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED 4 144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_status_params { 145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 replace_state; /* out, see #define above */ 146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 progress_1000; /* out, 0 <= x <= 1000 */ 147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 time_started; /* out, seconds since 1-Jan-1970 */ 148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 time_stopped; /* out, seconds since 1-Jan-1970 */ 149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_write_errors; /* out */ 150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_uncorrectable_read_errors; /* out */ 151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0 154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1 155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2 156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0 157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1 158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2 159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_args { 160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cmd; /* in */ 161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 result; /* out */ 162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng union { 164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_start_params start; 165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_status_params status; 166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; /* in/out */ 167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 spare[64]; 169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_info_args { 172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in/out */ 173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 uuid[BTRFS_UUID_SIZE]; /* in/out */ 174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 bytes_used; /* out */ 175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_bytes; /* out */ 176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[379]; /* pad to 4k */ 177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ 178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_fs_info_args { 181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_id; /* out */ 182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_devices; /* out */ 183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 fsid[BTRFS_FSID_SIZE]; /* out */ 184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[124]; /* pad to 1k */ 185224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 186224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 187e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heylstruct btrfs_ioctl_feature_flags { 188e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 compat_flags; 189e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 compat_ro_flags; 190e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 incompat_flags; 191e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl}; 192e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* balance control ioctl modes */ 194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_CTL_PAUSE 1 195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_CTL_CANCEL 2 196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * this is packed, because it should be exactly the same as its disk 199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * byte order counterpart (struct btrfs_disk_balance_args) 200224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 201224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_balance_args { 202224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 profiles; 203224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 usage; 204224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; 205224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pstart; 206224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pend; 207224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 vstart; 208224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 vend; 209224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 210224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 target; 211224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 212224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 213224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 214224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[8]; 215224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng} __attribute__ ((__packed__)); 216224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 217224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* report balance progress to userspace */ 218224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_balance_progress { 219224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 expected; /* estimated # of chunks that will be 220224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * relocated to fulfill the request */ 221224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 considered; /* # of chunks we have considered so far */ 222224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 completed; /* # of chunks relocated so far */ 223224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 224224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 225224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_RUNNING (1ULL << 0) 226224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_PAUSE_REQ (1ULL << 1) 227224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_CANCEL_REQ (1ULL << 2) 228224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 229224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_balance_args { 230224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in/out */ 231224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 state; /* out */ 232224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 233224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args data; /* in/out */ 234224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args meta; /* in/out */ 235224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args sys; /* in/out */ 236224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 237224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_progress stat; /* out */ 238224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 239224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[72]; /* pad to 1k */ 240224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 241224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 242224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_INO_LOOKUP_PATH_MAX 4080 243224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_ino_lookup_args { 244224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 treeid; 245224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 objectid; 246224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[BTRFS_INO_LOOKUP_PATH_MAX]; 247224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 248224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 249224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_key { 250224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* which root are we searching. 0 is the tree of tree roots */ 251224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_id; 252224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 253224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 254224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_objectid; 255224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_objectid; 256224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 257224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 258224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_offset; 259224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_offset; 260224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 261224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* max and min transids to search for */ 262224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_transid; 263224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_transid; 264224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 265224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 266224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 min_type; 267224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 max_type; 268224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 269224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* 270224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * how many items did userland ask for, and how many are we 271224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * returning 272224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 273224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 nr_items; 274224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 275224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* align to 64 bits */ 276224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 unused; 277224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 278224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* some extra for later */ 279224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused1; 280224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused2; 281224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused3; 282224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused4; 283224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 284224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 285224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_header { 286224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 transid; 287224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 objectid; 288224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 offset; 289224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 type; 290224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 len; 291224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 292224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 293224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key)) 294224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 295224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the buf is an array of search headers where 296224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * each header is followed by the actual item 297224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the type field is expanded to 32 bits for alignment 298224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 299224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_args { 300224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_search_key key; 301224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char buf[BTRFS_SEARCH_ARGS_BUFSIZE]; 302224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 303224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 304224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_clone_range_args { 305224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 src_fd; 306224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 src_offset, src_length; 307224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 dest_offset; 308224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 309224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 310224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* flags for the defrag range ioctl */ 311224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEFRAG_RANGE_COMPRESS 1 312224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEFRAG_RANGE_START_IO 2 313224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 314e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_SAME_DATA_DIFFERS 1 315e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl/* For extent-same ioctl */ 316e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heylstruct btrfs_ioctl_same_extent_info { 317e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __s64 fd; /* in - destination file */ 318e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 logical_offset; /* in - start of extent in destination */ 319e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 bytes_deduped; /* out - total # of bytes we were able 320e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * to dedupe from this file */ 321e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl /* status of this dedupe operation: 322e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * 0 if dedup succeeds 323e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * < 0 for error 324e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * == BTRFS_SAME_DATA_DIFFERS if data differs 325e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl */ 326e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __s32 status; /* out - see above description */ 327e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u32 reserved; 328e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl}; 329e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 330e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heylstruct btrfs_ioctl_same_args { 331e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 logical_offset; /* in - start of extent in source */ 332e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u64 length; /* in - length of extent */ 333e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u16 dest_count; /* in - total elements in info array */ 334e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u16 reserved1; 335e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u32 reserved2; 336e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl struct btrfs_ioctl_same_extent_info info[0]; 337e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl}; 338e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 339224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_space_info { 340224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 341224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_bytes; 342224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 used_bytes; 343224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 344224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 345224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_space_args { 346224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 space_slots; 347224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_spaces; 348224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_space_info spaces[0]; 349224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 350224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 351224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_data_container { 352224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 bytes_left; /* out -- bytes not needed to deliver output */ 353224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 bytes_missing; /* out -- additional bytes needed for result */ 354224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 elem_cnt; /* out */ 355224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 elem_missed; /* out */ 356224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 val[0]; /* out */ 357224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 358224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 359224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_ino_path_args { 360224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 inum; /* in */ 361224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; /* in */ 362224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; 363224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* struct btrfs_data_container *fspath; out */ 364224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 fspath; /* out */ 365224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 366224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 367224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_logical_ino_args { 368224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 logical; /* in */ 369224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; /* in */ 370224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; 371224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* struct btrfs_data_container *inodes; out */ 372224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 inodes; 373224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 374224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 375224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengenum btrfs_dev_stat_values { 376224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* disk I/O failure stats */ 377224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_WRITE_ERRS, /* EIO or EREMOTEIO from lower layers */ 378224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_READ_ERRS, /* EIO or EREMOTEIO from lower layers */ 379224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_FLUSH_ERRS, /* EIO or EREMOTEIO from lower layers */ 380224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 381224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* stats for indirect indications for I/O failures */ 382224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_CORRUPTION_ERRS, /* checksum error, bytenr error or 383224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * contents is illegal: this is an 384224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * indication that the block was damaged 385224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * during read or write, or written to 386224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * wrong location or read from wrong 387224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * location */ 388224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_GENERATION_ERRS, /* an indication that blocks have not 389224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * been written */ 390224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 391224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_VALUES_MAX 392224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 393224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 394224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Reset statistics after reading; needs SYS_ADMIN capability */ 395224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEV_STATS_RESET (1ULL << 0) 396224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 397224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_get_dev_stats { 398224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in */ 399224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 nr_items; /* in/out */ 400224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in/out */ 401224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 402224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* out values: */ 403224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; 404224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 405224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ 406224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 407224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 408224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_ENABLE 1 409224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_DISABLE 2 410224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3 411224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_quota_ctl_args { 412224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cmd; 413224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 status; 414224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 415224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 416224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_quota_rescan_args { 417224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 418224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 progress; 419224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[6]; 420224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 421224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 422224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_assign_args { 423224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 assign; 424224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 src; 425224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 dst; 426224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 427224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 428224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_create_args { 429224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 create; 430224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroupid; 431224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 432224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_timespec { 433224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 sec; 434224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 nsec; 435224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 436224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 437224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_received_subvol_args { 438224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char uuid[BTRFS_UUID_SIZE]; /* in */ 439224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 stransid; /* in */ 440224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rtransid; /* out */ 441224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_timespec stime; /* in */ 442224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_timespec rtime; /* out */ 443224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 444224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[16]; /* in */ 445224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 446224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 447224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 448224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Caller doesn't want file data in the send stream, even if the 449224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * search of clone sources doesn't find an extent. UPDATE_EXTENT 450224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * commands will be sent instead of WRITE commands. 451224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 452224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_NO_FILE_DATA 0x1 453224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 454224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 455224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Do not add the leading stream header. Used when multiple snapshots 456224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * are sent back to back. 457224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 458224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2 459224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 460224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 461224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Omit the command at the end of the stream that indicated the end 462224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * of the stream. This option is used when multiple snapshots are 463224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * sent back to back. 464224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 465224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4 466224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 467224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_MASK \ 468224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng (BTRFS_SEND_FLAG_NO_FILE_DATA | \ 469224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | \ 470224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_SEND_FLAG_OMIT_END_CMD) 471224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 472224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_send_args { 473224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 send_fd; /* in */ 474224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 clone_sources_count; /* in */ 475224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 __user *clone_sources; /* in */ 476224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 parent_root; /* in */ 477224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 478224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; /* in */ 479224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 480224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 481e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl/* Error codes as returned by the kernel */ 482e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heylenum btrfs_err_code { 483e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl notused, 484e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET, 485e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET, 486e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET, 487e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET, 488e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_TGT_REPLACE, 489e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_MISSING_NOT_FOUND, 490e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_ONLY_WRITABLE, 491e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS 492e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl}; 493e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl/* An error code to error string mapping for the kernel 494e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl* error codes 495e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl*/ 496e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heylstatic inline char *btrfs_err_str(enum btrfs_err_code err_code) 497e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl{ 498e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl switch (err_code) { 499e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET: 500e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to go below two devices on raid1"; 501e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET: 502e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to go below four devices on raid10"; 503e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET: 504e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to go below two devices on raid5"; 505e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET: 506e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to go below three devices on raid6"; 507e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_TGT_REPLACE: 508e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to remove the dev_replace target dev"; 509e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_MISSING_NOT_FOUND: 510e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "no missing devices found to remove"; 511e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_ONLY_WRITABLE: 512e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "unable to remove the only writeable device"; 513e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl case BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS: 514e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return "add/delete/balance/replace/resize operation "\ 515e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl "in progress"; 516e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl default: 517e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl return NULL; 518e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl } 519e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl} 520e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 521224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ 522224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 523224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ 524224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 525224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \ 526224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 527224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \ 528224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 529224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* trans start and trans end are dangerous, and only for 530224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * use by applications that know how to avoid the 531224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * resulting deadlocks 532224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 533224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6) 534224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7) 535224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8) 536224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 537224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) 538224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, \ 539224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 540224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, \ 541224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 542224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ 543224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 544224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 545224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ 546224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_clone_range_args) 547224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 548224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, \ 549224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 550224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, \ 551224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 552224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16, \ 553224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_defrag_range_args) 554224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \ 555224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_search_args) 556224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, \ 557224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_lookup_args) 558e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, __u64) 559224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \ 560224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_space_args) 561224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64) 562224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64) 563224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \ 564224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args_v2) 565224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24, \ 566224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args_v2) 567224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64) 568224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64) 569224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, \ 570224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_scrub_args) 571224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28) 572224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, \ 573224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_scrub_args) 574224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \ 575224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_info_args) 576224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \ 577224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_fs_info_args) 578224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32, \ 579224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_balance_args) 580224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_CTL _IOW(BTRFS_IOCTL_MAGIC, 33, int) 581224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34, \ 582224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_balance_args) 583224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35, \ 584224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_path_args) 585224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, \ 586224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_path_args) 587224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37, \ 588224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_received_subvol_args) 589224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SEND _IOW(BTRFS_IOCTL_MAGIC, 38, struct btrfs_ioctl_send_args) 590224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, \ 591224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 592224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, \ 593224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_ctl_args) 594224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, \ 595224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_assign_args) 596224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, \ 597224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_create_args) 598224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \ 599224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_limit_args) 600224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \ 601224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_rescan_args) 602224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \ 603224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_rescan_args) 604e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46) 605224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49, \ 606224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char[BTRFS_LABEL_SIZE]) 607224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SET_FSLABEL _IOW(BTRFS_IOCTL_MAGIC, 50, \ 608224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char[BTRFS_LABEL_SIZE]) 609224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \ 610224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_get_dev_stats) 611224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \ 612224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_args) 613e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54, \ 614e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl struct btrfs_ioctl_same_args) 615e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \ 616e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl struct btrfs_ioctl_feature_flags) 617e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, \ 618e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl struct btrfs_ioctl_feature_flags[2]) 619e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \ 620e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl struct btrfs_ioctl_feature_flags[3]) 6216ea19f626488db5efcc757f2d8a2fd362d0567ceChristopher Ferris 622224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_BTRFS_H */ 623