Blame view

drivers/block/rbd_types.h 2.24 KB
81f7e3824   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  /*
   * Ceph - scalable distributed file system
   *
   * Copyright (C) 2004-2010 Sage Weil <sage@newdream.net>
   *
   * This is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License version 2.1, as published by the Free Software
   * Foundation.  See file COPYING.
   *
   */
  
  #ifndef CEPH_RBD_TYPES_H
  #define CEPH_RBD_TYPES_H
  
  #include <linux/types.h>
  
  /* For format version 2, rbd image 'foo' consists of objects
   *   rbd_id.foo		- id of image
   *   rbd_header.<id>	- image metadata
   *   rbd_data.<id>.0000000000000000
   *   rbd_data.<id>.0000000000000001
   *   ...		- data
   * Clients do not access header data directly in rbd format 2.
   */
  
  #define RBD_HEADER_PREFIX      "rbd_header."
  #define RBD_ID_PREFIX          "rbd_id."
  #define RBD_V2_DATA_FORMAT     "%s.%016llx"
  
  #define RBD_LOCK_NAME          "rbd_lock"
  #define RBD_LOCK_TAG           "internal"
  #define RBD_LOCK_COOKIE_PREFIX "auto"
  
  enum rbd_notify_op {
  	RBD_NOTIFY_OP_ACQUIRED_LOCK      = 0,
  	RBD_NOTIFY_OP_RELEASED_LOCK      = 1,
  	RBD_NOTIFY_OP_REQUEST_LOCK       = 2,
  	RBD_NOTIFY_OP_HEADER_UPDATE      = 3,
  };
  
  /*
   * For format version 1, rbd image 'foo' consists of objects
   *   foo.rbd		- image metadata
   *   rb.<idhi>.<idlo>.<extra>.000000000000
   *   rb.<idhi>.<idlo>.<extra>.000000000001
   *   ...		- data
   * There is no notion of a persistent image id in rbd format 1.
   */
  
  #define RBD_SUFFIX		".rbd"
  #define RBD_V1_DATA_FORMAT	"%s.%012llx"
  
  #define RBD_DIRECTORY           "rbd_directory"
  #define RBD_INFO                "rbd_info"
  
  #define RBD_DEFAULT_OBJ_ORDER	22   /* 4MB */
  #define RBD_MIN_OBJ_ORDER       16
  #define RBD_MAX_OBJ_ORDER       30
  
  #define RBD_HEADER_TEXT		"<<< Rados Block Device Image >>>
  "
  #define RBD_HEADER_SIGNATURE	"RBD"
  #define RBD_HEADER_VERSION	"001.005"
  
  struct rbd_image_snap_ondisk {
  	__le64 id;
  	__le64 image_size;
  } __attribute__((packed));
  
  struct rbd_image_header_ondisk {
  	char text[40];
  	char object_prefix[24];
  	char signature[4];
  	char version[8];
  	struct {
  		__u8 order;
  		__u8 crypt_type;
  		__u8 comp_type;
  		__u8 unused;
  	} __attribute__((packed)) options;
  	__le64 image_size;
  	__le64 snap_seq;
  	__le32 snap_count;
  	__le32 reserved;
  	__le64 snap_names_len;
  	struct rbd_image_snap_ondisk snaps[0];
  } __attribute__((packed));
  
  
  #endif