]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blobdiff - lib/ext2fs/ext2fs.h
mke2fs: set overhead in super block
[thirdparty/e2fsprogs.git] / lib / ext2fs / ext2fs.h
index 041e8dee3f534981a34f24f40dc22a0133f918a2..67576204c3bd38430e6b0d2ad9c2b913217c8dc4 100644 (file)
@@ -77,8 +77,8 @@ typedef __u32 __bitwise               ext2_ino_t;
 typedef __u32 __bitwise                blk_t;
 typedef __u64 __bitwise                blk64_t;
 typedef __u32 __bitwise                dgrp_t;
-typedef __u32 __bitwise                ext2_off_t;
-typedef __u64 __bitwise                ext2_off64_t;
+typedef __s32 __bitwise                ext2_off_t;
+typedef __s64 __bitwise                ext2_off64_t;
 typedef __s64 __bitwise                e2_blkcnt_t;
 typedef __u32 __bitwise                ext2_dirhash_t;
 
@@ -204,6 +204,8 @@ typedef struct ext2_file *ext2_file_t;
 #define EXT2_FLAG_IGNORE_CSUM_ERRORS   0x200000
 #define EXT2_FLAG_SHARE_DUP            0x400000
 #define EXT2_FLAG_IGNORE_SB_ERRORS     0x800000
+#define EXT2_FLAG_BBITMAP_TAIL_PROBLEM 0x1000000
+#define EXT2_FLAG_IBITMAP_TAIL_PROBLEM 0x2000000
 
 /*
  * Special flag in the ext2 inode i_flag field that means that this is
@@ -308,7 +310,7 @@ struct struct_ext2_filsys {
        /* hashmap for SHA of data blocks */
        struct ext2fs_hashmap* block_sha_map;
 
-       const struct nls_table *encoding;
+       const struct ext2fs_nls_table *encoding;
 };
 
 #if EXT2_FLAT_INCLUDES
@@ -577,6 +579,16 @@ typedef struct ext2_icount *ext2_icount_t;
  */
 #define BMAP_RET_UNINIT        0x0001
 
+/*
+ * Flags for ext2fs_read_inode2
+ */
+#define READ_INODE_NOCSUM      0x0001
+
+/*
+ * Flags for ext2fs_write_inode2
+ */
+#define WRITE_INODE_NOCSUM     0x0001
+
 /*
  * Flags for imager.c functions
  */
@@ -599,7 +611,9 @@ typedef struct ext2_icount *ext2_icount_t;
                                         EXT2_FEATURE_COMPAT_RESIZE_INODE|\
                                         EXT2_FEATURE_COMPAT_DIR_INDEX|\
                                         EXT2_FEATURE_COMPAT_EXT_ATTR|\
-                                        EXT4_FEATURE_COMPAT_SPARSE_SUPER2)
+                                        EXT4_FEATURE_COMPAT_SPARSE_SUPER2|\
+                                        EXT4_FEATURE_COMPAT_FAST_COMMIT|\
+                                        EXT4_FEATURE_COMPAT_STABLE_INODES)
 
 #ifdef CONFIG_MMP
 #define EXT4_LIB_INCOMPAT_MMP          EXT4_FEATURE_INCOMPAT_MMP
@@ -618,7 +632,7 @@ typedef struct ext2_icount *ext2_icount_t;
                                         EXT4_FEATURE_INCOMPAT_64BIT|\
                                         EXT4_FEATURE_INCOMPAT_INLINE_DATA|\
                                         EXT4_FEATURE_INCOMPAT_ENCRYPT|\
-                                        EXT4_FEATURE_INCOMPAT_FNAME_ENCODING|\
+                                        EXT4_FEATURE_INCOMPAT_CASEFOLD|\
                                         EXT4_FEATURE_INCOMPAT_CSUM_SEED|\
                                         EXT4_FEATURE_INCOMPAT_LARGEDIR)
 
@@ -896,7 +910,9 @@ extern int ext2fs_group_blocks_count(ext2_filsys fs, dgrp_t group);
 extern blk64_t ext2fs_inode_data_blocks2(ext2_filsys fs,
                                         struct ext2_inode *inode);
 extern blk64_t ext2fs_inode_i_blocks(ext2_filsys fs,
-                                        struct ext2_inode *inode);
+                                    struct ext2_inode *inode);
+extern blk64_t ext2fs_get_stat_i_blocks(ext2_filsys fs,
+                                       struct ext2_inode *inode);
 extern blk64_t ext2fs_blocks_count(struct ext2_super_block *super);
 extern void ext2fs_blocks_count_set(struct ext2_super_block *super,
                                    blk64_t blk);
@@ -1068,6 +1084,9 @@ extern errcode_t ext2fs_get_dx_countlimit(ext2_filsys fs,
                                          struct ext2_dir_entry *dirent,
                                          struct ext2_dx_countlimit **cc,
                                          int *offset);
+extern errcode_t ext2fs_dx_csum(ext2_filsys fs, ext2_ino_t inum,
+                               struct ext2_dir_entry *dirent,
+                               __u32 *crc, struct ext2_dx_tail **ret_t);
 extern errcode_t ext2fs_extent_block_csum_set(ext2_filsys fs,
                                              ext2_ino_t inum,
                                              struct ext3_extent_header *eh);
@@ -1177,7 +1196,7 @@ extern errcode_t ext2fs_dirhash(int version, const char *name, int len,
                                ext2_dirhash_t *ret_minor_hash);
 
 extern errcode_t ext2fs_dirhash2(int version, const char *name, int len,
-                                const struct nls_table *charset,
+                                const struct ext2fs_nls_table *charset,
                                 int hash_flags,
                                 const __u32 *seed,
                                 ext2_dirhash_t *ret_hash,
@@ -1425,6 +1444,8 @@ errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap,
                                        void *in);
 errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
                                           ext2fs_block_bitmap *bitmap);
+errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
+                                    blk64_t end, blk64_t *out);
 
 /* get_num_dirs.c */
 extern errcode_t ext2fs_get_num_dirs(ext2_filsys fs, ext2_ino_t *ret_num_dirs);
@@ -1530,13 +1551,19 @@ extern int ext2fs_inode_scan_flags(ext2_inode_scan scan, int set_flags,
 extern errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino,
                                        struct ext2_inode * inode,
                                        int bufsize);
-extern errcode_t ext2fs_read_inode (ext2_filsys fs, ext2_ino_t ino,
+extern errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
+extern errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino,
+                                   struct ext2_inode * inode,
+                                   int bufsize, int flags);
 extern errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
                                         struct ext2_inode * inode,
                                         int bufsize);
 extern errcode_t ext2fs_write_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
+extern errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino,
+                                    struct ext2_inode * inode,
+                                    int bufsize, int flags);
 extern errcode_t ext2fs_write_new_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
 extern errcode_t ext2fs_get_blocks(ext2_filsys fs, ext2_ino_t ino, blk_t *blocks);
@@ -1584,6 +1611,9 @@ extern errcode_t ext2fs_new_dir_block(ext2_filsys fs, ext2_ino_t dir_ino,
 extern errcode_t ext2fs_new_dir_inline_data(ext2_filsys fs, ext2_ino_t dir_ino,
                                ext2_ino_t parent_ino, __u32 *iblock);
 
+/* nls_utf8.c */
+extern const struct ext2fs_nls_table *ext2fs_load_nls_table(int encoding);
+
 /* mkdir.c */
 extern errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
                              const char *name);