1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2012 Alexander Block. All rights reserved.
4 * Copyright (C) 2012 STRATO. All rights reserved.
12 #define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
13 #define BTRFS_SEND_STREAM_VERSION 1
15 #define BTRFS_SEND_BUF_SIZE SZ_64K
28 struct btrfs_stream_header {
29 char magic[sizeof(BTRFS_SEND_STREAM_MAGIC)];
31 } __attribute__ ((__packed__));
33 struct btrfs_cmd_header {
34 /* len excluding the header */
37 /* crc including the header with zero crc field */
39 } __attribute__ ((__packed__));
41 struct btrfs_tlv_header {
43 /* len excluding the header */
45 } __attribute__ ((__packed__));
49 BTRFS_SEND_C_UNSPEC = 0,
52 BTRFS_SEND_C_SUBVOL = 1,
53 BTRFS_SEND_C_SNAPSHOT = 2,
55 BTRFS_SEND_C_MKFILE = 3,
56 BTRFS_SEND_C_MKDIR = 4,
57 BTRFS_SEND_C_MKNOD = 5,
58 BTRFS_SEND_C_MKFIFO = 6,
59 BTRFS_SEND_C_MKSOCK = 7,
60 BTRFS_SEND_C_SYMLINK = 8,
62 BTRFS_SEND_C_RENAME = 9,
63 BTRFS_SEND_C_LINK = 10,
64 BTRFS_SEND_C_UNLINK = 11,
65 BTRFS_SEND_C_RMDIR = 12,
67 BTRFS_SEND_C_SET_XATTR = 13,
68 BTRFS_SEND_C_REMOVE_XATTR = 14,
70 BTRFS_SEND_C_WRITE = 15,
71 BTRFS_SEND_C_CLONE = 16,
73 BTRFS_SEND_C_TRUNCATE = 17,
74 BTRFS_SEND_C_CHMOD = 18,
75 BTRFS_SEND_C_CHOWN = 19,
76 BTRFS_SEND_C_UTIMES = 20,
78 BTRFS_SEND_C_END = 21,
79 BTRFS_SEND_C_UPDATE_EXTENT = 22,
80 BTRFS_SEND_C_MAX_V1 = 22,
83 BTRFS_SEND_C_MAX_V2 = 22,
86 BTRFS_SEND_C_MAX = 22,
89 /* attributes in send stream */
91 BTRFS_SEND_A_UNSPEC = 0,
93 BTRFS_SEND_A_UUID = 1,
94 BTRFS_SEND_A_CTRANSID = 2,
97 BTRFS_SEND_A_SIZE = 4,
98 BTRFS_SEND_A_MODE = 5,
100 BTRFS_SEND_A_GID = 7,
101 BTRFS_SEND_A_RDEV = 8,
102 BTRFS_SEND_A_CTIME = 9,
103 BTRFS_SEND_A_MTIME = 10,
104 BTRFS_SEND_A_ATIME = 11,
105 BTRFS_SEND_A_OTIME = 12,
107 BTRFS_SEND_A_XATTR_NAME = 13,
108 BTRFS_SEND_A_XATTR_DATA = 14,
110 BTRFS_SEND_A_PATH = 15,
111 BTRFS_SEND_A_PATH_TO = 16,
112 BTRFS_SEND_A_PATH_LINK = 17,
114 BTRFS_SEND_A_FILE_OFFSET = 18,
115 BTRFS_SEND_A_DATA = 19,
117 BTRFS_SEND_A_CLONE_UUID = 20,
118 BTRFS_SEND_A_CLONE_CTRANSID = 21,
119 BTRFS_SEND_A_CLONE_PATH = 22,
120 BTRFS_SEND_A_CLONE_OFFSET = 23,
121 BTRFS_SEND_A_CLONE_LEN = 24,
123 BTRFS_SEND_A_MAX = 24,
127 long btrfs_ioctl_send(struct inode *inode, struct btrfs_ioctl_send_args *arg);