162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * ocfs1_fs_compat.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * OCFS1 volume header definitions.  OCFS2 creates valid but unmountable
662306a36Sopenharmony_ci * OCFS1 volume headers on the first two sectors of an OCFS2 volume.
762306a36Sopenharmony_ci * This allows an OCFS1 volume to see the partition and cleanly fail to
862306a36Sopenharmony_ci * mount it.
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * Copyright (C) 2002, 2004 Oracle.  All rights reserved.
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef _OCFS1_FS_COMPAT_H
1462306a36Sopenharmony_ci#define _OCFS1_FS_COMPAT_H
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define OCFS1_MAX_VOL_SIGNATURE_LEN          128
1762306a36Sopenharmony_ci#define OCFS1_MAX_MOUNT_POINT_LEN            128
1862306a36Sopenharmony_ci#define OCFS1_MAX_VOL_ID_LENGTH               16
1962306a36Sopenharmony_ci#define OCFS1_MAX_VOL_LABEL_LEN               64
2062306a36Sopenharmony_ci#define OCFS1_MAX_CLUSTER_NAME_LEN            64
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define OCFS1_MAJOR_VERSION              (2)
2362306a36Sopenharmony_ci#define OCFS1_MINOR_VERSION              (0)
2462306a36Sopenharmony_ci#define OCFS1_VOLUME_SIGNATURE		 "OracleCFS"
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/*
2762306a36Sopenharmony_ci * OCFS1 superblock.  Lives at sector 0.
2862306a36Sopenharmony_ci */
2962306a36Sopenharmony_cistruct ocfs1_vol_disk_hdr
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci/*00*/	__u32 minor_version;
3262306a36Sopenharmony_ci	__u32 major_version;
3362306a36Sopenharmony_ci/*08*/	__u8 signature[OCFS1_MAX_VOL_SIGNATURE_LEN];
3462306a36Sopenharmony_ci/*88*/	__u8 mount_point[OCFS1_MAX_MOUNT_POINT_LEN];
3562306a36Sopenharmony_ci/*108*/	__u64 serial_num;
3662306a36Sopenharmony_ci/*110*/	__u64 device_size;
3762306a36Sopenharmony_ci	__u64 start_off;
3862306a36Sopenharmony_ci/*120*/	__u64 bitmap_off;
3962306a36Sopenharmony_ci	__u64 publ_off;
4062306a36Sopenharmony_ci/*130*/	__u64 vote_off;
4162306a36Sopenharmony_ci	__u64 root_bitmap_off;
4262306a36Sopenharmony_ci/*140*/	__u64 data_start_off;
4362306a36Sopenharmony_ci	__u64 root_bitmap_size;
4462306a36Sopenharmony_ci/*150*/	__u64 root_off;
4562306a36Sopenharmony_ci	__u64 root_size;
4662306a36Sopenharmony_ci/*160*/	__u64 cluster_size;
4762306a36Sopenharmony_ci	__u64 num_nodes;
4862306a36Sopenharmony_ci/*170*/	__u64 num_clusters;
4962306a36Sopenharmony_ci	__u64 dir_node_size;
5062306a36Sopenharmony_ci/*180*/	__u64 file_node_size;
5162306a36Sopenharmony_ci	__u64 internal_off;
5262306a36Sopenharmony_ci/*190*/	__u64 node_cfg_off;
5362306a36Sopenharmony_ci	__u64 node_cfg_size;
5462306a36Sopenharmony_ci/*1A0*/	__u64 new_cfg_off;
5562306a36Sopenharmony_ci	__u32 prot_bits;
5662306a36Sopenharmony_ci	__s32 excl_mount;
5762306a36Sopenharmony_ci/*1B0*/
5862306a36Sopenharmony_ci};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cistruct ocfs1_disk_lock
6262306a36Sopenharmony_ci{
6362306a36Sopenharmony_ci/*00*/	__u32 curr_master;
6462306a36Sopenharmony_ci	__u8 file_lock;
6562306a36Sopenharmony_ci	__u8 compat_pad[3];  /* Not in original definition.  Used to
6662306a36Sopenharmony_ci				make the already existing alignment
6762306a36Sopenharmony_ci				explicit */
6862306a36Sopenharmony_ci	__u64 last_write_time;
6962306a36Sopenharmony_ci/*10*/	__u64 last_read_time;
7062306a36Sopenharmony_ci	__u32 writer_node_num;
7162306a36Sopenharmony_ci	__u32 reader_node_num;
7262306a36Sopenharmony_ci/*20*/	__u64 oin_node_map;
7362306a36Sopenharmony_ci	__u64 dlock_seq_num;
7462306a36Sopenharmony_ci/*30*/
7562306a36Sopenharmony_ci};
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci/*
7862306a36Sopenharmony_ci * OCFS1 volume label.  Lives at sector 1.
7962306a36Sopenharmony_ci */
8062306a36Sopenharmony_cistruct ocfs1_vol_label
8162306a36Sopenharmony_ci{
8262306a36Sopenharmony_ci/*00*/	struct ocfs1_disk_lock disk_lock;
8362306a36Sopenharmony_ci/*30*/	__u8 label[OCFS1_MAX_VOL_LABEL_LEN];
8462306a36Sopenharmony_ci/*70*/	__u16 label_len;
8562306a36Sopenharmony_ci/*72*/	__u8 vol_id[OCFS1_MAX_VOL_ID_LENGTH];
8662306a36Sopenharmony_ci/*82*/	__u16 vol_id_len;
8762306a36Sopenharmony_ci/*84*/	__u8 cluster_name[OCFS1_MAX_CLUSTER_NAME_LEN];
8862306a36Sopenharmony_ci/*A4*/	__u16 cluster_name_len;
8962306a36Sopenharmony_ci/*A6*/
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci#endif /* _OCFS1_FS_COMPAT_H */
9462306a36Sopenharmony_ci
95