Blame view

fs/btrfs/send.h 2.36 KB
9888c3402   David Sterba   btrfs: replace GP...
1
  /* SPDX-License-Identifier: GPL-2.0 */
31db9f7c2   Alexander Block   Btrfs: introduce ...
2
3
4
  /*
   * Copyright (C) 2012 Alexander Block.  All rights reserved.
   * Copyright (C) 2012 STRATO.  All rights reserved.
31db9f7c2   Alexander Block   Btrfs: introduce ...
5
   */
9888c3402   David Sterba   btrfs: replace GP...
6
7
  #ifndef BTRFS_SEND_H
  #define BTRFS_SEND_H
31db9f7c2   Alexander Block   Btrfs: introduce ...
8
9
10
11
  #include "ctree.h"
  
  #define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
  #define BTRFS_SEND_STREAM_VERSION 1
ee22184b5   Byongho Lee   Btrfs: use linux/...
12
13
  #define BTRFS_SEND_BUF_SIZE SZ_64K
  #define BTRFS_SEND_READ_SIZE (48 * SZ_1K)
31db9f7c2   Alexander Block   Btrfs: introduce ...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  
  enum btrfs_tlv_type {
  	BTRFS_TLV_U8,
  	BTRFS_TLV_U16,
  	BTRFS_TLV_U32,
  	BTRFS_TLV_U64,
  	BTRFS_TLV_BINARY,
  	BTRFS_TLV_STRING,
  	BTRFS_TLV_UUID,
  	BTRFS_TLV_TIMESPEC,
  };
  
  struct btrfs_stream_header {
  	char magic[sizeof(BTRFS_SEND_STREAM_MAGIC)];
  	__le32 version;
  } __attribute__ ((__packed__));
  
  struct btrfs_cmd_header {
  	/* len excluding the header */
  	__le32 len;
  	__le16 cmd;
  	/* crc including the header with zero crc field */
  	__le32 crc;
  } __attribute__ ((__packed__));
  
  struct btrfs_tlv_header {
  	__le16 tlv_type;
  	/* len excluding the header */
  	__le16 tlv_len;
  } __attribute__ ((__packed__));
  
  /* commands */
  enum btrfs_send_cmd {
  	BTRFS_SEND_C_UNSPEC,
  
  	BTRFS_SEND_C_SUBVOL,
  	BTRFS_SEND_C_SNAPSHOT,
  
  	BTRFS_SEND_C_MKFILE,
  	BTRFS_SEND_C_MKDIR,
  	BTRFS_SEND_C_MKNOD,
  	BTRFS_SEND_C_MKFIFO,
  	BTRFS_SEND_C_MKSOCK,
  	BTRFS_SEND_C_SYMLINK,
  
  	BTRFS_SEND_C_RENAME,
  	BTRFS_SEND_C_LINK,
  	BTRFS_SEND_C_UNLINK,
  	BTRFS_SEND_C_RMDIR,
  
  	BTRFS_SEND_C_SET_XATTR,
  	BTRFS_SEND_C_REMOVE_XATTR,
  
  	BTRFS_SEND_C_WRITE,
  	BTRFS_SEND_C_CLONE,
  
  	BTRFS_SEND_C_TRUNCATE,
  	BTRFS_SEND_C_CHMOD,
  	BTRFS_SEND_C_CHOWN,
  	BTRFS_SEND_C_UTIMES,
  
  	BTRFS_SEND_C_END,
cb95e7bf7   Mark Fasheh   btrfs: add "no fi...
76
  	BTRFS_SEND_C_UPDATE_EXTENT,
31db9f7c2   Alexander Block   Btrfs: introduce ...
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  	__BTRFS_SEND_C_MAX,
  };
  #define BTRFS_SEND_C_MAX (__BTRFS_SEND_C_MAX - 1)
  
  /* attributes in send stream */
  enum {
  	BTRFS_SEND_A_UNSPEC,
  
  	BTRFS_SEND_A_UUID,
  	BTRFS_SEND_A_CTRANSID,
  
  	BTRFS_SEND_A_INO,
  	BTRFS_SEND_A_SIZE,
  	BTRFS_SEND_A_MODE,
  	BTRFS_SEND_A_UID,
  	BTRFS_SEND_A_GID,
  	BTRFS_SEND_A_RDEV,
  	BTRFS_SEND_A_CTIME,
  	BTRFS_SEND_A_MTIME,
  	BTRFS_SEND_A_ATIME,
  	BTRFS_SEND_A_OTIME,
  
  	BTRFS_SEND_A_XATTR_NAME,
  	BTRFS_SEND_A_XATTR_DATA,
  
  	BTRFS_SEND_A_PATH,
  	BTRFS_SEND_A_PATH_TO,
  	BTRFS_SEND_A_PATH_LINK,
  
  	BTRFS_SEND_A_FILE_OFFSET,
  	BTRFS_SEND_A_DATA,
  
  	BTRFS_SEND_A_CLONE_UUID,
  	BTRFS_SEND_A_CLONE_CTRANSID,
  	BTRFS_SEND_A_CLONE_PATH,
  	BTRFS_SEND_A_CLONE_OFFSET,
  	BTRFS_SEND_A_CLONE_LEN,
  
  	__BTRFS_SEND_A_MAX,
  };
  #define BTRFS_SEND_A_MAX (__BTRFS_SEND_A_MAX - 1)
  
  #ifdef __KERNEL__
2351f431f   Josef Bacik   btrfs: fix send i...
120
  long btrfs_ioctl_send(struct file *mnt_file, struct btrfs_ioctl_send_args *arg);
31db9f7c2   Alexander Block   Btrfs: introduce ...
121
  #endif
9888c3402   David Sterba   btrfs: replace GP...
122
123
  
  #endif