1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* -*- mode: c; c-basic-offset: 8; -*- 3*4882a593Smuzhiyun * vim: noexpandtab sw=8 ts=8 sts=0: 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * ocfs1_fs_compat.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * OCFS1 volume header definitions. OCFS2 creates valid but unmountable 8*4882a593Smuzhiyun * OCFS1 volume headers on the first two sectors of an OCFS2 volume. 9*4882a593Smuzhiyun * This allows an OCFS1 volume to see the partition and cleanly fail to 10*4882a593Smuzhiyun * mount it. 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Copyright (C) 2002, 2004 Oracle. All rights reserved. 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #ifndef _OCFS1_FS_COMPAT_H 16*4882a593Smuzhiyun #define _OCFS1_FS_COMPAT_H 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define OCFS1_MAX_VOL_SIGNATURE_LEN 128 19*4882a593Smuzhiyun #define OCFS1_MAX_MOUNT_POINT_LEN 128 20*4882a593Smuzhiyun #define OCFS1_MAX_VOL_ID_LENGTH 16 21*4882a593Smuzhiyun #define OCFS1_MAX_VOL_LABEL_LEN 64 22*4882a593Smuzhiyun #define OCFS1_MAX_CLUSTER_NAME_LEN 64 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define OCFS1_MAJOR_VERSION (2) 25*4882a593Smuzhiyun #define OCFS1_MINOR_VERSION (0) 26*4882a593Smuzhiyun #define OCFS1_VOLUME_SIGNATURE "OracleCFS" 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* 29*4882a593Smuzhiyun * OCFS1 superblock. Lives at sector 0. 30*4882a593Smuzhiyun */ 31*4882a593Smuzhiyun struct ocfs1_vol_disk_hdr 32*4882a593Smuzhiyun { 33*4882a593Smuzhiyun /*00*/ __u32 minor_version; 34*4882a593Smuzhiyun __u32 major_version; 35*4882a593Smuzhiyun /*08*/ __u8 signature[OCFS1_MAX_VOL_SIGNATURE_LEN]; 36*4882a593Smuzhiyun /*88*/ __u8 mount_point[OCFS1_MAX_MOUNT_POINT_LEN]; 37*4882a593Smuzhiyun /*108*/ __u64 serial_num; 38*4882a593Smuzhiyun /*110*/ __u64 device_size; 39*4882a593Smuzhiyun __u64 start_off; 40*4882a593Smuzhiyun /*120*/ __u64 bitmap_off; 41*4882a593Smuzhiyun __u64 publ_off; 42*4882a593Smuzhiyun /*130*/ __u64 vote_off; 43*4882a593Smuzhiyun __u64 root_bitmap_off; 44*4882a593Smuzhiyun /*140*/ __u64 data_start_off; 45*4882a593Smuzhiyun __u64 root_bitmap_size; 46*4882a593Smuzhiyun /*150*/ __u64 root_off; 47*4882a593Smuzhiyun __u64 root_size; 48*4882a593Smuzhiyun /*160*/ __u64 cluster_size; 49*4882a593Smuzhiyun __u64 num_nodes; 50*4882a593Smuzhiyun /*170*/ __u64 num_clusters; 51*4882a593Smuzhiyun __u64 dir_node_size; 52*4882a593Smuzhiyun /*180*/ __u64 file_node_size; 53*4882a593Smuzhiyun __u64 internal_off; 54*4882a593Smuzhiyun /*190*/ __u64 node_cfg_off; 55*4882a593Smuzhiyun __u64 node_cfg_size; 56*4882a593Smuzhiyun /*1A0*/ __u64 new_cfg_off; 57*4882a593Smuzhiyun __u32 prot_bits; 58*4882a593Smuzhiyun __s32 excl_mount; 59*4882a593Smuzhiyun /*1B0*/ 60*4882a593Smuzhiyun }; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun struct ocfs1_disk_lock 64*4882a593Smuzhiyun { 65*4882a593Smuzhiyun /*00*/ __u32 curr_master; 66*4882a593Smuzhiyun __u8 file_lock; 67*4882a593Smuzhiyun __u8 compat_pad[3]; /* Not in original definition. Used to 68*4882a593Smuzhiyun make the already existing alignment 69*4882a593Smuzhiyun explicit */ 70*4882a593Smuzhiyun __u64 last_write_time; 71*4882a593Smuzhiyun /*10*/ __u64 last_read_time; 72*4882a593Smuzhiyun __u32 writer_node_num; 73*4882a593Smuzhiyun __u32 reader_node_num; 74*4882a593Smuzhiyun /*20*/ __u64 oin_node_map; 75*4882a593Smuzhiyun __u64 dlock_seq_num; 76*4882a593Smuzhiyun /*30*/ 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun /* 80*4882a593Smuzhiyun * OCFS1 volume label. Lives at sector 1. 81*4882a593Smuzhiyun */ 82*4882a593Smuzhiyun struct ocfs1_vol_label 83*4882a593Smuzhiyun { 84*4882a593Smuzhiyun /*00*/ struct ocfs1_disk_lock disk_lock; 85*4882a593Smuzhiyun /*30*/ __u8 label[OCFS1_MAX_VOL_LABEL_LEN]; 86*4882a593Smuzhiyun /*70*/ __u16 label_len; 87*4882a593Smuzhiyun /*72*/ __u8 vol_id[OCFS1_MAX_VOL_ID_LENGTH]; 88*4882a593Smuzhiyun /*82*/ __u16 vol_id_len; 89*4882a593Smuzhiyun /*84*/ __u8 cluster_name[OCFS1_MAX_CLUSTER_NAME_LEN]; 90*4882a593Smuzhiyun /*A4*/ __u16 cluster_name_len; 91*4882a593Smuzhiyun /*A6*/ 92*4882a593Smuzhiyun }; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #endif /* _OCFS1_FS_COMPAT_H */ 96*4882a593Smuzhiyun 97