cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rbd_types.h (2604B)


      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