Blame view

drivers/block/rbd_types.h 2.24 KB
602adf400   Yehuda Sadeh   rbd: introduce ra...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  /*
   * 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>
3bb59ad51   Alex Elder   rbd: define some ...
17
18
19
20
21
22
23
24
25
26
  /* 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."
3bb59ad51   Alex Elder   rbd: define some ...
27
  #define RBD_ID_PREFIX          "rbd_id."
223768d02   Ilya Dryomov   rbd: RBD_V{1,2}_D...
28
  #define RBD_V2_DATA_FORMAT     "%s.%016llx"
3bb59ad51   Alex Elder   rbd: define some ...
29

ed95b21a4   Ilya Dryomov   rbd: support for ...
30
31
32
33
34
35
36
37
38
39
  #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,
  };
602adf400   Yehuda Sadeh   rbd: introduce ra...
40
  /*
3bb59ad51   Alex Elder   rbd: define some ...
41
42
   * For format version 1, rbd image 'foo' consists of objects
   *   foo.rbd		- image metadata
223768d02   Ilya Dryomov   rbd: RBD_V{1,2}_D...
43
44
   *   rb.<idhi>.<idlo>.<extra>.000000000000
   *   rb.<idhi>.<idlo>.<extra>.000000000001
3bb59ad51   Alex Elder   rbd: define some ...
45
46
   *   ...		- data
   * There is no notion of a persistent image id in rbd format 1.
602adf400   Yehuda Sadeh   rbd: introduce ra...
47
48
49
   */
  
  #define RBD_SUFFIX		".rbd"
223768d02   Ilya Dryomov   rbd: RBD_V{1,2}_D...
50
  #define RBD_V1_DATA_FORMAT	"%s.%012llx"
3bb59ad51   Alex Elder   rbd: define some ...
51

602adf400   Yehuda Sadeh   rbd: introduce ra...
52
53
54
55
56
57
  #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
602adf400   Yehuda Sadeh   rbd: introduce ra...
58
59
60
61
  #define RBD_HEADER_TEXT		"<<< Rados Block Device Image >>>
  "
  #define RBD_HEADER_SIGNATURE	"RBD"
  #define RBD_HEADER_VERSION	"001.005"
602adf400   Yehuda Sadeh   rbd: introduce ra...
62
63
64
65
66
67
68
  struct rbd_image_snap_ondisk {
  	__le64 id;
  	__le64 image_size;
  } __attribute__((packed));
  
  struct rbd_image_header_ondisk {
  	char text[40];
843a0d087   Alex Elder   rbd: rename block...
69
  	char object_prefix[24];
602adf400   Yehuda Sadeh   rbd: introduce ra...
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  	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