Linux Audio

Check our new training course

Loading...
v3.1
 1/*
 2 * Ceph - scalable distributed file system
 3 *
 4 * Copyright (C) 2004-2010 Sage Weil <sage@newdream.net>
 5 *
 6 * This is free software; you can redistribute it and/or
 7 * modify it under the terms of the GNU Lesser General Public
 8 * License version 2.1, as published by the Free Software
 9 * Foundation.  See file COPYING.
10 *
11 */
12
13#ifndef CEPH_RBD_TYPES_H
14#define CEPH_RBD_TYPES_H
15
16#include <linux/types.h>
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18/*
19 * rbd image 'foo' consists of objects
20 *   foo.rbd      - image metadata
21 *   foo.00000000
22 *   foo.00000001
23 *   ...          - data
 
24 */
25
26#define RBD_SUFFIX		".rbd"
 
 
27#define RBD_DIRECTORY           "rbd_directory"
28#define RBD_INFO                "rbd_info"
29
30#define RBD_DEFAULT_OBJ_ORDER	22   /* 4MB */
31#define RBD_MIN_OBJ_ORDER       16
32#define RBD_MAX_OBJ_ORDER       30
33
34#define RBD_MAX_OBJ_NAME_LEN	96
35#define RBD_MAX_SEG_NAME_LEN	128
36
37#define RBD_COMP_NONE		0
38#define RBD_CRYPT_NONE		0
39
40#define RBD_HEADER_TEXT		"<<< Rados Block Device Image >>>\n"
41#define RBD_HEADER_SIGNATURE	"RBD"
42#define RBD_HEADER_VERSION	"001.005"
43
44struct rbd_info {
45	__le64 max_id;
46} __attribute__ ((packed));
47
48struct rbd_image_snap_ondisk {
49	__le64 id;
50	__le64 image_size;
51} __attribute__((packed));
52
53struct rbd_image_header_ondisk {
54	char text[40];
55	char block_name[24];
56	char signature[4];
57	char version[8];
58	struct {
59		__u8 order;
60		__u8 crypt_type;
61		__u8 comp_type;
62		__u8 unused;
63	} __attribute__((packed)) options;
64	__le64 image_size;
65	__le64 snap_seq;
66	__le32 snap_count;
67	__le32 reserved;
68	__le64 snap_names_len;
69	struct rbd_image_snap_ondisk snaps[0];
70} __attribute__((packed));
71
72
73#endif
v5.14.15
  1/*
  2 * Ceph - scalable distributed file system
  3 *
  4 * Copyright (C) 2004-2010 Sage Weil <sage@newdream.net>
  5 *
  6 * This is free software; you can redistribute it and/or
  7 * modify it under the terms of the GNU Lesser General Public
  8 * License version 2.1, as published by the Free Software
  9 * Foundation.  See file COPYING.
 10 *
 11 */
 12
 13#ifndef CEPH_RBD_TYPES_H
 14#define CEPH_RBD_TYPES_H
 15
 16#include <linux/types.h>
 17
 18/* For format version 2, rbd image 'foo' consists of objects
 19 *   rbd_id.foo		- id of image
 20 *   rbd_header.<id>	- image metadata
 21 *   rbd_object_map.<id> - optional image object map
 22 *   rbd_data.<id>.0000000000000000
 23 *   rbd_data.<id>.0000000000000001
 24 *   ...		- data
 25 * Clients do not access header data directly in rbd format 2.
 26 */
 27
 28#define RBD_HEADER_PREFIX      "rbd_header."
 29#define RBD_OBJECT_MAP_PREFIX  "rbd_object_map."
 30#define RBD_ID_PREFIX          "rbd_id."
 31#define RBD_V2_DATA_FORMAT     "%s.%016llx"
 32
 33#define RBD_LOCK_NAME          "rbd_lock"
 34#define RBD_LOCK_TAG           "internal"
 35#define RBD_LOCK_COOKIE_PREFIX "auto"
 36
 37enum rbd_notify_op {
 38	RBD_NOTIFY_OP_ACQUIRED_LOCK      = 0,
 39	RBD_NOTIFY_OP_RELEASED_LOCK      = 1,
 40	RBD_NOTIFY_OP_REQUEST_LOCK       = 2,
 41	RBD_NOTIFY_OP_HEADER_UPDATE      = 3,
 42};
 43
 44#define OBJECT_NONEXISTENT	0
 45#define OBJECT_EXISTS		1
 46#define OBJECT_PENDING		2
 47#define OBJECT_EXISTS_CLEAN	3
 48
 49#define RBD_FLAG_OBJECT_MAP_INVALID	(1ULL << 0)
 50#define RBD_FLAG_FAST_DIFF_INVALID	(1ULL << 1)
 51
 52/*
 53 * For format version 1, rbd image 'foo' consists of objects
 54 *   foo.rbd		- image metadata
 55 *   rb.<idhi>.<idlo>.<extra>.000000000000
 56 *   rb.<idhi>.<idlo>.<extra>.000000000001
 57 *   ...		- data
 58 * There is no notion of a persistent image id in rbd format 1.
 59 */
 60
 61#define RBD_SUFFIX		".rbd"
 62#define RBD_V1_DATA_FORMAT	"%s.%012llx"
 63
 64#define RBD_DIRECTORY           "rbd_directory"
 65#define RBD_INFO                "rbd_info"
 66
 67#define RBD_DEFAULT_OBJ_ORDER	22   /* 4MB */
 68#define RBD_MIN_OBJ_ORDER       16
 69#define RBD_MAX_OBJ_ORDER       30
 70
 
 
 
 
 
 
 71#define RBD_HEADER_TEXT		"<<< Rados Block Device Image >>>\n"
 72#define RBD_HEADER_SIGNATURE	"RBD"
 73#define RBD_HEADER_VERSION	"001.005"
 74
 
 
 
 
 75struct rbd_image_snap_ondisk {
 76	__le64 id;
 77	__le64 image_size;
 78} __attribute__((packed));
 79
 80struct rbd_image_header_ondisk {
 81	char text[40];
 82	char object_prefix[24];
 83	char signature[4];
 84	char version[8];
 85	struct {
 86		__u8 order;
 87		__u8 crypt_type;
 88		__u8 comp_type;
 89		__u8 unused;
 90	} __attribute__((packed)) options;
 91	__le64 image_size;
 92	__le64 snap_seq;
 93	__le32 snap_count;
 94	__le32 reserved;
 95	__le64 snap_names_len;
 96	struct rbd_image_snap_ondisk snaps[];
 97} __attribute__((packed));
 98
 99
100#endif