root/fs/btrfs/send.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */