📄 evms_common.h
字号:
/* -*- linux-c -*- *//* * * Copyright (c) International Business Machines Corp., 2000 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *//* * linux/include/linux/evms/evms_common.h * * EVMS common (kernel and user) header file * */#ifndef __EVMS_COMMON_INCLUDED__#define __EVMS_COMMON_INCLUDED__/* version info */#define EVMS_MAJOR 63 /* use experimental major 63 for now */#define EVMS_MAJOR_VERSION 1#define EVMS_MINOR_VERSION 0#define EVMS_PATCHLEVEL_VERSION 1#define MAX_EVMS_VOLUMES 256 /* There are 256 minors */#define EVMS_VOLUME_NAME_SIZE 127#define IBM_OEM_ID 8112 // could be anything, but used // I=8, B=1, M=12// this one going away as well.#define EVMS_OEM_IBM IBM_OEM_ID#define EVMS_INITIAL_CRC 0xFFFFFFFF#define EVMS_MAGIC_CRC 0x31415926#define EVMS_VSECTOR_SIZE 512#define EVMS_VSECTOR_SIZE_SHIFT 9#define DEV_PATH "/dev"#define EVMS_DIR_NAME "evms"#define EVMS_DEV_NAME "block_device"#define EVMS_DEV_NODE_PATH DEV_PATH "/" EVMS_DIR_NAME "/"#define EVMS_DEVICE_NAME DEV_PATH "/" EVMS_DIR_NAME "/" EVMS_DEV_NAME/* EVMS will always use 64-bit fields */typedef u_int64_t evms_sector_t;typedef struct evms_version_s { /* major changes when incompatible differences are introduced */ u_int32_t major; /* minor changes when additions are made */ u_int32_t minor; /* patchlevel changes when bugs are fixed */ u_int32_t patchlevel;} evms_version_t;typedef enum evms_plugin_code_s { EVMS_NO_PLUGIN, // 0 EVMS_DEVICE_MANAGER, // 1 EVMS_SEGMENT_MANAGER, // 2 EVMS_REGION_MANAGER, // 3 EVMS_FEATURE, // 4 EVMS_ASSOCIATIVE_FEATURE, // 5 EVMS_FILESYSTEM_INTERFACE_MODULE, // 6 EVMS_CLUSTER_MANAGER_INTERFACE_MODULE, // 7 EVMS_DISTRIBUTED_LOCK_MANAGER_INTERFACE_MODULE // 8} evms_plugin_code_t;#define SetPluginID(oem, type, id) ((oem << 16) | (type << 12) | id)#define GetPluginOEM(pluginid) (pluginid >> 16)#define GetPluginType(pluginid) ((pluginid >> 12) & 0xf)#define GetPluginID(pluginid) (pluginid & 0xfff)/* bit definitions for the flags field in * the EVMS LOGICAL NODE (kernel) and * the EVMS LOGICAL VOLUME (user) structures. */#define EVMS_FLAGS_WIDTH 32#define EVMS_VOLUME_FLAG (1<<0)#define EVMS_VOLUME_PARTIAL_FLAG (1<<1)#define EVMS_VOLUME_PARTIAL (1<<1)#define EVMS_VOLUME_SET_READ_ONLY (1<<2)#define EVMS_VOLUME_READ_ONLY (1<<2)/* queued flags bits */#define EVMS_REQUESTED_DELETE (1<<5)#define EVMS_REQUESTED_QUIESCE (1<<6)#define EVMS_REQUESTED_VFS_QUIESCE (1<<7)/* this bit indicates corruption */#define EVMS_VOLUME_CORRUPT (1<<8)/* these bits define the source of the corruption */#define EVMS_VOLUME_SOFT_DELETED (1<<9)#define EVMS_VOLUME_GENDISK_GONE (1<<10)/* these bits define volume status */#define EVMS_MEDIA_CHANGED (1<<20)#define EVMS_DEVICE_UNPLUGGED (1<<21)/* these bits used for removable status */#define EVMS_DEVICE_MEDIA_PRESENT (1<<24)#define EVMS_DEVICE_PRESENT (1<<25)#define EVMS_DEVICE_LOCKABLE (1<<26)#define EVMS_DEVICE_REMOVABLE (1<<27)/* version info for evms_feature_header_t */#define EVMS_FEATURE_HEADER_MAJOR 3#define EVMS_FEATURE_HEADER_MINOR 0#define EVMS_FEATURE_HEADER_PATCHLEVEL 0/* bit definitions of FEATURE HEADER bits in the FLAGS field */#define EVMS_FEATURE_ACTIVE (1<<0)#define EVMS_FEATURE_VOLUME_COMPLETE (1<<1)/* bit definitions for VOLUME bits in the FLAGS field */#define EVMS_VOLUME_DATA_OBJECT (1<<16)#define EVMS_VOLUME_DATA_STOP (1<<17)#define EVMS_FEATURE_HEADER_SIGNATURE 0x54414546 //FEATtypedef struct evms_feature_header_s {/* 0*/ u_int32_t signature;/* 4*/ u_int32_t crc;/* 8*/ evms_version_t version; /* structure version *//* 20*/ evms_version_t engine_version; /* version of the Engine that */ /* wrote this feature header *//* 32*/ u_int32_t flags;/* 36*/ u_int32_t feature_id;/* 40*/ u_int64_t sequence_number;/* 48*/ u_int64_t alignment_padding; //required: starting lsn to 1st copy of feature's metadata./* 56*/ evms_sector_t feature_data1_start_lsn;/* 64*/ evms_sector_t feature_data1_size; //in 512 byte units //optional: starting lsn to 2nd copy of feature's metadata. // if unused set size field to 0./* 72*/ evms_sector_t feature_data2_start_lsn;/* 80*/ evms_sector_t feature_data2_size; //in 512 byte units/* 88*/ u_int64_t volume_serial_number;/* 96*/ u_int32_t volume_system_id; /* the minor is stored here *//*100*/ u_int32_t object_depth; /* depth of object in the volume tree *//*104*/ char object_name[EVMS_VOLUME_NAME_SIZE+1];/*232*/ char volume_name[EVMS_VOLUME_NAME_SIZE+1];/*360*/ unsigned char pad[152];/*512*/} evms_feature_header_t;/* EVMS specific error codes */#define EVMS_FEATURE_FATAL_ERROR 257#define EVMS_VOLUME_FATAL_ERROR 258#define EVMS_FEATURE_INCOMPLETE_ERROR 259#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -