ext4: introduce ext4_trunc_inode to deal with ftruncate operation
[lwext4.git] / lwext4 / ext4_config.h
index 62382f594b064e8fd175d4f0c07005d17ba089eb..17da6bb68116a6ffbd77c58a02842f8b0b3ce989 100644 (file)
 #ifndef EXT4_CONFIG_H_
 #define EXT4_CONFIG_H_
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifdef CONFIG_HAVE_OWN_CFG
 #include <config.h>
 #endif
 /*****************************************************************************/
 
 #if CONFIG_EXT_FEATURE_SET_LVL == F_SET_EXT2
-#define CONFIG_DIR_INDEX_ENABLE 0
-#define CONFIG_EXTENT_ENABLE 0
-
-/*Superblock features flag*/
-#define CONFIG_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_SUPP
-
-#define CONFIG_FEATURE_INCOMPAT_SUPP                                           \
-       (EXT2_FEATURE_INCOMPAT_SUPP | FEATURE_INCOMPAT_IGNORED)
+/*Superblock features flag EXT2*/
+#define CONFIG_SUPPORTED_FCOM EXT2_SUPPORTED_FCOM
+#define CONFIG_SUPPORTED_FINCOM (EXT2_SUPPORTED_FINCOM | EXT_FINCOM_IGNORED)
+#define CONFIG_SUPPORTED_FRO_COM EXT2_SUPPORTED_FRO_COM
 
-#define CONFIG_FEATURE_RO_COMPAT_SUPP EXT2_FEATURE_RO_COMPAT_SUPP
 #elif CONFIG_EXT_FEATURE_SET_LVL == F_SET_EXT3
-#define CONFIG_DIR_INDEX_ENABLE 1
-#define CONFIG_EXTENT_ENABLE 0
-
-/*Superblock features flag*/
-#define CONFIG_FEATURE_COMPAT_SUPP EXT3_FEATURE_COMPAT_SUPP
-
-#define CONFIG_FEATURE_INCOMPAT_SUPP                                           \
-       (EXT3_FEATURE_INCOMPAT_SUPP | FEATURE_INCOMPAT_IGNORED)
-
-#define CONFIG_FEATURE_RO_COMPAT_SUPP EXT3_FEATURE_RO_COMPAT_SUPP
+/*Superblock features flag EXT3*/
+#define CONFIG_SUPPORTED_FCOM EXT3_SUPPORTED_FCOM
+#define CONFIG_SUPPORTED_FINCOM (EXT3_SUPPORTED_FINCOM | EXT_FINCOM_IGNORED)
+#define CONFIG_SUPPORTED_FRO_COM EXT3_SUPPORTED_FRO_COM
 #elif CONFIG_EXT_FEATURE_SET_LVL == F_SET_EXT4
-#define CONFIG_DIR_INDEX_ENABLE 1
-#define CONFIG_EXTENT_ENABLE 1
-
-/*Superblock features flag*/
-#define CONFIG_FEATURE_COMPAT_SUPP EXT4_FEATURE_COMPAT_SUPP
-
-#define CONFIG_FEATURE_INCOMPAT_SUPP                                           \
-       (EXT4_FEATURE_INCOMPAT_SUPP | FEATURE_INCOMPAT_IGNORED)
-
-#define CONFIG_FEATURE_RO_COMPAT_SUPP EXT4_FEATURE_RO_COMPAT_SUPP
+/*Superblock features flag EXT4*/
+#define CONFIG_SUPPORTED_FCOM EXT4_SUPPORTED_FCOM
+#define CONFIG_SUPPORTED_FINCOM (EXT4_SUPPORTED_FINCOM | EXT_FINCOM_IGNORED)
+#define CONFIG_SUPPORTED_FRO_COM EXT4_SUPPORTED_FRO_COM
 #else
 #define "Unsupported CONFIG_EXT_FEATURE_SET_LVL"
 #endif
 
+#define CONFIG_DIR_INDEX_ENABLE (CONFIG_SUPPORTED_FCOM & EXT4_FCOM_DIR_INDEX)
+#define CONFIG_EXTENT_ENABLE (CONFIG_SUPPORTED_FINCOM & EXT4_FINCOM_EXTENTS)
+#define CONFIG_META_CSUM_ENABLE (CONFIG_SUPPORTED_FRO_COM & EXT4_FRO_COM_METADATA_CSUM)
+
 /*****************************************************************************/
 
 /**@brief   Enable directory indexing comb sort*/
 
 /**@brief   Include open flags from ext4_errno or standard library.*/
 #ifndef CONFIG_HAVE_OWN_OFLAGS
-#define CONFIG_HAVE_OWN_OFLAGS 0
+#define CONFIG_HAVE_OWN_OFLAGS 1
 #endif
 
-#ifdef __GNUC__
-#ifndef __unused
-#define __unused __attribute__ ((__unused__))
+/**@brief   Use full extent implemrntation*/
+#ifndef CONFIG_EXTENT_FULL
+#define CONFIG_EXTENT_FULL 1
 #endif
+
+/**@brief Maximum single truncate size. Transactions must be limited to reduce
+ *        number of allocetions for single transaction*/
+#ifndef CONFIG_MAX_TRUNCATE_SIZE
+#define CONFIG_MAX_TRUNCATE_SIZE (16 * 1024 * 1024)
+#endif
+
+#ifdef __cplusplus
+}
 #endif
 
 #endif /* EXT4_CONFIG_H_ */