VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700   1) /* SPDX-License-Identifier: GPL-2.0 */
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700   2) 
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700   3) #ifndef __FAST_COMMIT_H__
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700   4) #define __FAST_COMMIT_H__
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700   5) 
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800   6) /*
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800   7)  * Note this file is present in e2fsprogs/lib/ext2fs/fast_commit.h and
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800   8)  * linux/fs/ext4/fast_commit.h. These file should always be byte identical.
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800   9)  */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800  10) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  11) /* Fast commit tags */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  12) #define EXT4_FC_TAG_ADD_RANGE		0x0001
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  13) #define EXT4_FC_TAG_DEL_RANGE		0x0002
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  14) #define EXT4_FC_TAG_CREAT		0x0003
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  15) #define EXT4_FC_TAG_LINK		0x0004
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  16) #define EXT4_FC_TAG_UNLINK		0x0005
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  17) #define EXT4_FC_TAG_INODE		0x0006
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  18) #define EXT4_FC_TAG_PAD			0x0007
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  19) #define EXT4_FC_TAG_TAIL		0x0008
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  20) #define EXT4_FC_TAG_HEAD		0x0009
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  21) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  22) #define EXT4_FC_SUPPORTED_FEATURES	0x0
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  23) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  24) /* On disk fast commit tlv value structures */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  25) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  26) /* Fast commit on disk tag length structure */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  27) struct ext4_fc_tl {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  28) 	__le16 fc_tag;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  29) 	__le16 fc_len;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  30) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  31) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  32) /* Value structure for tag EXT4_FC_TAG_HEAD. */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  33) struct ext4_fc_head {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  34) 	__le32 fc_features;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  35) 	__le32 fc_tid;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  36) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  37) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  38) /* Value structure for EXT4_FC_TAG_ADD_RANGE. */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  39) struct ext4_fc_add_range {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  40) 	__le32 fc_ino;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  41) 	__u8 fc_ex[12];
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  42) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  43) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  44) /* Value structure for tag EXT4_FC_TAG_DEL_RANGE. */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  45) struct ext4_fc_del_range {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  46) 	__le32 fc_ino;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  47) 	__le32 fc_lblk;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  48) 	__le32 fc_len;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  49) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  50) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  51) /*
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  52)  * This is the value structure for tags EXT4_FC_TAG_CREAT, EXT4_FC_TAG_LINK
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  53)  * and EXT4_FC_TAG_UNLINK.
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  54)  */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  55) struct ext4_fc_dentry_info {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  56) 	__le32 fc_parent_ino;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  57) 	__le32 fc_ino;
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800  58) 	__u8 fc_dname[0];
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  59) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  60) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  61) /* Value structure for EXT4_FC_TAG_INODE and EXT4_FC_TAG_INODE_PARTIAL. */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  62) struct ext4_fc_inode {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  63) 	__le32 fc_ino;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  64) 	__u8 fc_raw_inode[0];
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  65) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  66) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  67) /* Value structure for tag EXT4_FC_TAG_TAIL. */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  68) struct ext4_fc_tail {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  69) 	__le32 fc_tid;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  70) 	__le32 fc_crc;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  71) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  72) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  73) /*
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  74)  * Fast commit reason codes
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  75)  */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  76) enum {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  77) 	/*
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  78) 	 * Commit status codes:
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  79) 	 */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  80) 	EXT4_FC_REASON_OK = 0,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  81) 	EXT4_FC_REASON_INELIGIBLE,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  82) 	EXT4_FC_REASON_ALREADY_COMMITTED,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  83) 	EXT4_FC_REASON_FC_START_FAILED,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  84) 	EXT4_FC_REASON_FC_FAILED,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  85) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  86) 	/*
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  87) 	 * Fast commit ineligiblity reasons:
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  88) 	 */
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  89) 	EXT4_FC_REASON_XATTR = 0,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  90) 	EXT4_FC_REASON_CROSS_RENAME,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  91) 	EXT4_FC_REASON_JOURNAL_FLAG_CHANGE,
b21ebf143af21 (Harshad Shirwadkar 2020-11-05 19:58:51 -0800  92) 	EXT4_FC_REASON_NOMEM,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  93) 	EXT4_FC_REASON_SWAP_BOOT,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  94) 	EXT4_FC_REASON_RESIZE,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  95) 	EXT4_FC_REASON_RENAME_DIR,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  96) 	EXT4_FC_REASON_FALLOC_RANGE,
556e0319fbb8e (Harshad Shirwadkar 2020-11-05 19:59:07 -0800  97) 	EXT4_FC_REASON_INODE_JOURNAL_DATA,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  98) 	EXT4_FC_COMMIT_FAILED,
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700  99) 	EXT4_FC_REASON_MAX
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 100) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 101) 
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 102) #ifdef __KERNEL__
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 103) /*
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 104)  * In memory list of dentry updates that are performed on the file
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 105)  * system used by fast commit code.
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 106)  */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 107) struct ext4_fc_dentry_update {
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 108) 	int fcd_op;		/* Type of update create / unlink / link */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 109) 	int fcd_parent;		/* Parent inode number */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 110) 	int fcd_ino;		/* Inode number */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 111) 	struct qstr fcd_name;	/* Dirent name */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 112) 	unsigned char fcd_iname[DNAME_INLINE_LEN];	/* Dirent name string */
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 113) 	struct list_head fcd_list;
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 114) };
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 115) 
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 116) struct ext4_fc_stats {
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 117) 	unsigned int fc_ineligible_reason_count[EXT4_FC_REASON_MAX];
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 118) 	unsigned long fc_num_commits;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 119) 	unsigned long fc_ineligible_commits;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 120) 	unsigned long fc_numblks;
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 121) };
aa75f4d3daaeb (Harshad Shirwadkar 2020-10-15 13:37:57 -0700 122) 
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 123) #define EXT4_FC_REPLAY_REALLOC_INCREMENT	4
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 124) 
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 125) /*
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 126)  * Physical block regions added to different inodes due to fast commit
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 127)  * recovery. These are set during the SCAN phase. During the replay phase,
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 128)  * our allocator excludes these from its allocation. This ensures that
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 129)  * we don't accidentally allocating a block that is going to be used by
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 130)  * another inode.
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 131)  */
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 132) struct ext4_fc_alloc_region {
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 133) 	ext4_lblk_t lblk;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 134) 	ext4_fsblk_t pblk;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 135) 	int ino, len;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 136) };
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 137) 
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 138) /*
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 139)  * Fast commit replay state.
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 140)  */
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 141) struct ext4_fc_replay_state {
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 142) 	int fc_replay_num_tags;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 143) 	int fc_replay_expected_off;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 144) 	int fc_current_pass;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 145) 	int fc_cur_tag;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 146) 	int fc_crc;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 147) 	struct ext4_fc_alloc_region *fc_regions;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 148) 	int fc_regions_size, fc_regions_used, fc_regions_valid;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 149) 	int *fc_modified_inodes;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 150) 	int fc_modified_inodes_used, fc_modified_inodes_size;
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 151) };
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 152) 
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 153) #define region_last(__region) (((__region)->lblk) + ((__region)->len) - 1)
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 154) #endif
8016e29f4362e (Harshad Shirwadkar 2020-10-15 13:37:59 -0700 155) 
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 156) static inline const char *tag2str(__u16 tag)
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 157) {
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 158) 	switch (tag) {
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 159) 	case EXT4_FC_TAG_LINK:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 160) 		return "ADD_ENTRY";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 161) 	case EXT4_FC_TAG_UNLINK:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 162) 		return "DEL_ENTRY";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 163) 	case EXT4_FC_TAG_ADD_RANGE:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 164) 		return "ADD_RANGE";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 165) 	case EXT4_FC_TAG_CREAT:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 166) 		return "CREAT_DENTRY";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 167) 	case EXT4_FC_TAG_DEL_RANGE:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 168) 		return "DEL_RANGE";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 169) 	case EXT4_FC_TAG_INODE:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 170) 		return "INODE";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 171) 	case EXT4_FC_TAG_PAD:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 172) 		return "PAD";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 173) 	case EXT4_FC_TAG_TAIL:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 174) 		return "TAIL";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 175) 	case EXT4_FC_TAG_HEAD:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 176) 		return "HEAD";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 177) 	default:
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 178) 		return "ERROR";
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 179) 	}
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 180) }
941ba122ca567 (Harshad Shirwadkar 2020-11-20 12:22:31 -0800 181) 
6866d7b3f2bb4 (Harshad Shirwadkar 2020-10-15 13:37:55 -0700 182) #endif /* __FAST_COMMIT_H__ */