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 41314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define BTRFS_UUID_UNPARSED_SIZE 37 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0) 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_qgroup_limit { 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_rfer; 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_excl; 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rsv_rfer; 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rsv_excl; 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_qgroup_inherit { 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_qgroups; 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_ref_copies; 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_excl_copies; 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_limit lim; 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroups[0]; 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_limit_args { 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroupid; 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_limit lim; 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SUBVOL_NAME_MAX 4039 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_vol_args_v2 { 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 fd; 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 transid; 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng union { 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct { 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_qgroup_inherit __user *qgroup_inherit; 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[4]; 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[BTRFS_SUBVOL_NAME_MAX + 1]; 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * structure to report errors and progress to userspace, either as a 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * result of a finished scrub, a canceled scrub or a progress inquiry 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_scrub_progress { 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 data_extents_scrubbed; /* # of data extents scrubbed */ 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_extents_scrubbed; /* # of tree extents scrubbed */ 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 data_bytes_scrubbed; /* # of data bytes scrubbed */ 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_bytes_scrubbed; /* # of tree bytes scrubbed */ 91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 read_errors; /* # of read errors encountered (EIO) */ 92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 csum_errors; /* # of failed csum checks */ 93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 verify_errors; /* # of occurences, where the metadata 94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * of a tree block did not match the 95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * expected values, like generation or 96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * logical */ 97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 no_csum; /* # of 4k data block for which no csum 98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * is present, probably the result of 99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * data written with nodatasum */ 100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 csum_discards; /* # of csum for which no data was found 101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * in the extent tree. */ 102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 super_errors; /* # of bad super blocks encountered */ 103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 malloc_errors; /* # of internal kmalloc errors. These 104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * will likely cause an incomplete 105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * scrub */ 106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 uncorrectable_errors; /* # of errors where either no intact 107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * copy was found or the writeback 108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * failed */ 109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 corrected_errors; /* # of errors corrected */ 110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 last_physical; /* last physical address scrubbed. In 111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * case a scrub was aborted, this can 112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * be used to restart the scrub */ 113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unverified_errors; /* # of occurences where a read for a 114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * full (64k) bio failed, but the re- 115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * check succeeded for each 4k piece. 116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Intermittent error. */ 117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SCRUB_READONLY 1 120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_scrub_args { 121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in */ 122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 start; /* in */ 123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 end; /* in */ 124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_scrub_progress progress; /* out */ 126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* pad to 1k */ 127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8]; 128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0 131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1 132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_start_params { 133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 srcdevid; /* in, if 0, use srcdev_name instead */ 134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cont_reading_from_srcdev_mode; /* in, see #define 135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * above */ 136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */ 137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */ 138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED 0 141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED 1 142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2 143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED 3 144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED 4 145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_status_params { 146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 replace_state; /* out, see #define above */ 147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 progress_1000; /* out, 0 <= x <= 1000 */ 148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 time_started; /* out, seconds since 1-Jan-1970 */ 149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 time_stopped; /* out, seconds since 1-Jan-1970 */ 150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_write_errors; /* out */ 151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_uncorrectable_read_errors; /* out */ 152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0 155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1 156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2 157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0 158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1 159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2 160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_replace_args { 161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cmd; /* in */ 162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 result; /* out */ 163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng union { 165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_start_params start; 166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_status_params status; 167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng }; /* in/out */ 168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 spare[64]; 170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_dev_info_args { 173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in/out */ 174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 uuid[BTRFS_UUID_SIZE]; /* in/out */ 175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 bytes_used; /* out */ 176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_bytes; /* out */ 177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[379]; /* pad to 4k */ 178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ 179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_fs_info_args { 182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_id; /* out */ 183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 num_devices; /* out */ 184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 fsid[BTRFS_FSID_SIZE]; /* out */ 185314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u32 nodesize; /* out */ 186314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u32 sectorsize; /* out */ 187314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u32 clone_alignment; /* out */ 188314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u32 reserved32; 189314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u64 reserved[122]; /* pad to 1k */ 190224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 191224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 192e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct btrfs_ioctl_feature_flags { 193e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 compat_flags; 194e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 compat_ro_flags; 195e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 incompat_flags; 196e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 197e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* balance control ioctl modes */ 199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_CTL_PAUSE 1 200224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_CTL_CANCEL 2 201224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 202224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 203224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * this is packed, because it should be exactly the same as its disk 204224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * byte order counterpart (struct btrfs_disk_balance_args) 205224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 206224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_balance_args { 207224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 profiles; 208224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 usage; 209224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; 210224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pstart; 211224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 pend; 212224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 vstart; 213224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 vend; 214224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 215224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 target; 216224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 217224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 218224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 219314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u64 limit; /* limit number of processed chunks */ 220314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u64 unused[7]; 221224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng} __attribute__ ((__packed__)); 222224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 223224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* report balance progress to userspace */ 224224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_balance_progress { 225224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 expected; /* estimated # of chunks that will be 226224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * relocated to fulfill the request */ 227224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 considered; /* # of chunks we have considered so far */ 228224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 completed; /* # of chunks relocated so far */ 229224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 230224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 231224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_RUNNING (1ULL << 0) 232224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_PAUSE_REQ (1ULL << 1) 233224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_BALANCE_STATE_CANCEL_REQ (1ULL << 2) 234224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 235224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_balance_args { 236224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in/out */ 237224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 state; /* out */ 238224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 239224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args data; /* in/out */ 240224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args meta; /* in/out */ 241224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_args sys; /* in/out */ 242224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 243224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_balance_progress stat; /* out */ 244224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 245224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[72]; /* pad to 1k */ 246224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 247224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 248224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_INO_LOOKUP_PATH_MAX 4080 249224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_ino_lookup_args { 250224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 treeid; 251224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 objectid; 252224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char name[BTRFS_INO_LOOKUP_PATH_MAX]; 253224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 254224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 255224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_key { 256224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* which root are we searching. 0 is the tree of tree roots */ 257224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 tree_id; 258224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 259224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 260224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_objectid; 261224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_objectid; 262224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 263224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 264224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_offset; 265224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_offset; 266224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 267224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* max and min transids to search for */ 268224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 min_transid; 269224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 max_transid; 270224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 271224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* keys returned will be >= min and <= max */ 272224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 min_type; 273224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 max_type; 274224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 275224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* 276224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * how many items did userland ask for, and how many are we 277224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * returning 278224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 279224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 nr_items; 280224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 281224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* align to 64 bits */ 282224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 unused; 283224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 284224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* some extra for later */ 285224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused1; 286224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused2; 287224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused3; 288224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused4; 289224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 290224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 291224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_header { 292224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 transid; 293224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 objectid; 294224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 offset; 295224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 type; 296224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 len; 297224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 298224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 299224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key)) 300224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 301224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the buf is an array of search headers where 302224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * each header is followed by the actual item 303224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the type field is expanded to 32 bits for alignment 304224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 305224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_search_args { 306224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_search_key key; 307224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char buf[BTRFS_SEARCH_ARGS_BUFSIZE]; 308224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 309224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 310314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferrisstruct btrfs_ioctl_search_args_v2 { 311314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris struct btrfs_ioctl_search_key key; /* in/out - search parameters */ 312314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u64 buf_size; /* in - size of buffer 313314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * out - on EOVERFLOW: needed size 314314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * to store item */ 315314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris __u64 buf[0]; /* out - found items */ 316314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris}; 317314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris 318224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_clone_range_args { 319224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 src_fd; 320224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 src_offset, src_length; 321224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 dest_offset; 322224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 323224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 324224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* flags for the defrag range ioctl */ 325224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEFRAG_RANGE_COMPRESS 1 326224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEFRAG_RANGE_START_IO 2 327224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 328e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_SAME_DATA_DIFFERS 1 329e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/* For extent-same ioctl */ 330e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct btrfs_ioctl_same_extent_info { 331e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s64 fd; /* in - destination file */ 332e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 logical_offset; /* in - start of extent in destination */ 333e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 bytes_deduped; /* out - total # of bytes we were able 334e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * to dedupe from this file */ 335e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* status of this dedupe operation: 336e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 0 if dedup succeeds 337e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * < 0 for error 338e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * == BTRFS_SAME_DATA_DIFFERS if data differs 339e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 340e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __s32 status; /* out - see above description */ 341e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 reserved; 342e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 343e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 344e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct btrfs_ioctl_same_args { 345e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 logical_offset; /* in - start of extent in source */ 346e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 length; /* in - length of extent */ 347e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u16 dest_count; /* in - total elements in info array */ 348e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u16 reserved1; 349e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u32 reserved2; 350e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct btrfs_ioctl_same_extent_info info[0]; 351e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 352e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 353224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_space_info { 354224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 355224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_bytes; 356224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 used_bytes; 357224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 358224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 359224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_space_args { 360224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 space_slots; 361224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 total_spaces; 362224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_space_info spaces[0]; 363224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 364224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 365224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_data_container { 366224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 bytes_left; /* out -- bytes not needed to deliver output */ 367224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 bytes_missing; /* out -- additional bytes needed for result */ 368224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 elem_cnt; /* out */ 369224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 elem_missed; /* out */ 370224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 val[0]; /* out */ 371224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 372224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 373224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_ino_path_args { 374224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 inum; /* in */ 375224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; /* in */ 376224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; 377224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* struct btrfs_data_container *fspath; out */ 378224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 fspath; /* out */ 379224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 380224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 381224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_logical_ino_args { 382224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 logical; /* in */ 383224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 size; /* in */ 384224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; 385224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* struct btrfs_data_container *inodes; out */ 386224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 inodes; 387224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 388224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 389224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengenum btrfs_dev_stat_values { 390224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* disk I/O failure stats */ 391224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_WRITE_ERRS, /* EIO or EREMOTEIO from lower layers */ 392224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_READ_ERRS, /* EIO or EREMOTEIO from lower layers */ 393224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_FLUSH_ERRS, /* EIO or EREMOTEIO from lower layers */ 394224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 395224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* stats for indirect indications for I/O failures */ 396224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_CORRUPTION_ERRS, /* checksum error, bytenr error or 397224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * contents is illegal: this is an 398224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * indication that the block was damaged 399224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * during read or write, or written to 400224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * wrong location or read from wrong 401224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * location */ 402224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_GENERATION_ERRS, /* an indication that blocks have not 403224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * been written */ 404224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 405224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_DEV_STAT_VALUES_MAX 406224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 407224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 408224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Reset statistics after reading; needs SYS_ADMIN capability */ 409224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_DEV_STATS_RESET (1ULL << 0) 410224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 411224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_get_dev_stats { 412224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 devid; /* in */ 413224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 nr_items; /* in/out */ 414224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in/out */ 415224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 416224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* out values: */ 417224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; 418224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 419224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ 420224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 421224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 422224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_ENABLE 1 423224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_DISABLE 2 424224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3 425224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_quota_ctl_args { 426224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 cmd; 427224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 status; 428224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 429224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 430224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_quota_rescan_args { 431224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; 432224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 progress; 433224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[6]; 434224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 435224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 436224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_assign_args { 437224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 assign; 438224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 src; 439224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 dst; 440224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 441224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 442224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_qgroup_create_args { 443224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 create; 444224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 qgroupid; 445224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 446224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_timespec { 447224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 sec; 448224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 nsec; 449224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 450224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 451224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_received_subvol_args { 452224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char uuid[BTRFS_UUID_SIZE]; /* in */ 453224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 stransid; /* in */ 454224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rtransid; /* out */ 455224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_timespec stime; /* in */ 456224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_timespec rtime; /* out */ 457224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 458224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[16]; /* in */ 459224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 460224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 461224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 462224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Caller doesn't want file data in the send stream, even if the 463224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * search of clone sources doesn't find an extent. UPDATE_EXTENT 464224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * commands will be sent instead of WRITE commands. 465224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 466224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_NO_FILE_DATA 0x1 467224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 468224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 469224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Do not add the leading stream header. Used when multiple snapshots 470224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * are sent back to back. 471224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 472224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2 473224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 474224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 475224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Omit the command at the end of the stream that indicated the end 476224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * of the stream. This option is used when multiple snapshots are 477224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * sent back to back. 478224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 479224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4 480224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 481224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_SEND_FLAG_MASK \ 482224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng (BTRFS_SEND_FLAG_NO_FILE_DATA | \ 483224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | \ 484224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng BTRFS_SEND_FLAG_OMIT_END_CMD) 485224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 486224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct btrfs_ioctl_send_args { 487224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __s64 send_fd; /* in */ 488224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 clone_sources_count; /* in */ 489224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 __user *clone_sources; /* in */ 490224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 parent_root; /* in */ 491224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 flags; /* in */ 492224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 reserved[4]; /* in */ 493224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 494224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 495e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/* Error codes as returned by the kernel */ 496e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisenum btrfs_err_code { 497e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris notused, 498e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET, 499e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET, 500e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET, 501e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET, 502e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_TGT_REPLACE, 503e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_MISSING_NOT_FOUND, 504e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_ONLY_WRITABLE, 505e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS 506e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 507e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/* An error code to error string mapping for the kernel 508e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris* error codes 509e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris*/ 510e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstatic inline char *btrfs_err_str(enum btrfs_err_code err_code) 511e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris{ 512e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris switch (err_code) { 513e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET: 514e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to go below two devices on raid1"; 515e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET: 516e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to go below four devices on raid10"; 517e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET: 518e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to go below two devices on raid5"; 519e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET: 520e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to go below three devices on raid6"; 521e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_TGT_REPLACE: 522e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to remove the dev_replace target dev"; 523e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_MISSING_NOT_FOUND: 524e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "no missing devices found to remove"; 525e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_ONLY_WRITABLE: 526e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "unable to remove the only writeable device"; 527e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris case BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS: 528e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return "add/delete/balance/replace/resize operation "\ 529e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris "in progress"; 530e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris default: 531e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris return NULL; 532e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris } 533e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris} 534e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 535224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ 536224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 537224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ 538224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 539224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \ 540224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 541224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \ 542224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 543224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* trans start and trans end are dangerous, and only for 544224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * use by applications that know how to avoid the 545224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * resulting deadlocks 546224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 547224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6) 548224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7) 549224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8) 550224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 551224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) 552224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, \ 553224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 554224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, \ 555224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 556224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ 557224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 558224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 559224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ 560224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_clone_range_args) 561224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 562224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, \ 563224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 564224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, \ 565224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 566224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16, \ 567224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_defrag_range_args) 568224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \ 569224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_search_args) 570314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define BTRFS_IOC_TREE_SEARCH_V2 _IOWR(BTRFS_IOCTL_MAGIC, 17, \ 571314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris struct btrfs_ioctl_search_args_v2) 572224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, \ 573224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_lookup_args) 574e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, __u64) 575224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \ 576224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_space_args) 577224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64) 578224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64) 579224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \ 580224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args_v2) 581224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24, \ 582224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args_v2) 583224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64) 584224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64) 585224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, \ 586224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_scrub_args) 587224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28) 588224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, \ 589224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_scrub_args) 590224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \ 591224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_info_args) 592224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \ 593224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_fs_info_args) 594224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32, \ 595224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_balance_args) 596224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_CTL _IOW(BTRFS_IOCTL_MAGIC, 33, int) 597224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34, \ 598224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_balance_args) 599224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35, \ 600224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_path_args) 601224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, \ 602224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_ino_path_args) 603224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37, \ 604224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_received_subvol_args) 605224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SEND _IOW(BTRFS_IOCTL_MAGIC, 38, struct btrfs_ioctl_send_args) 606224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, \ 607224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_vol_args) 608224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, \ 609224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_ctl_args) 610224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, \ 611224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_assign_args) 612224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, \ 613224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_create_args) 614224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \ 615224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_qgroup_limit_args) 616224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \ 617224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_rescan_args) 618224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \ 619224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_quota_rescan_args) 620e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46) 621224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49, \ 622224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char[BTRFS_LABEL_SIZE]) 623224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_SET_FSLABEL _IOW(BTRFS_IOCTL_MAGIC, 50, \ 624224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng char[BTRFS_LABEL_SIZE]) 625224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \ 626224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_get_dev_stats) 627224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \ 628224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct btrfs_ioctl_dev_replace_args) 629e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54, \ 630e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct btrfs_ioctl_same_args) 631e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \ 632e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct btrfs_ioctl_feature_flags) 633e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, \ 634e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct btrfs_ioctl_feature_flags[2]) 635e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \ 636e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct btrfs_ioctl_feature_flags[3]) 6376ea19f626488db5efcc757f2d8a2fd362d0567ceChristopher Ferris 638224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_BTRFS_H */ 639