Whamcloud - gitweb
libext2fs, libe2p, misc: git rid of jfs_user.h
[tools/e2fsprogs.git] / lib / ext2fs / ext2fs.h
index d75dd76..613f0d1 100644 (file)
@@ -527,6 +527,8 @@ typedef struct ext2_icount *ext2_icount_t;
  */
 #define BMAP_ALLOC     0x0001
 #define BMAP_SET       0x0002
+#define BMAP_UNINIT    0x0004
+#define BMAP_ZERO      0x0008
 
 /*
  * Returned flags from ext2fs_bmap
@@ -546,13 +548,6 @@ typedef struct ext2_icount *ext2_icount_t;
 #define EXT2_CHECK_MAGIC(struct, code) \
          if ((struct)->magic != (code)) return (code)
 
-
-/*
- * For ext2 compression support
- */
-#define EXT2FS_COMPRESSED_BLKADDR ((blk_t) -1)
-#define HOLE_BLKADDR(_b) ((_b) == 0 || (_b) == EXT2FS_COMPRESSED_BLKADDR)
-
 /*
  * Features supported by this version of the library
  */
@@ -564,19 +559,6 @@ typedef struct ext2_icount *ext2_icount_t;
                                         EXT2_FEATURE_COMPAT_EXT_ATTR|\
                                         EXT4_FEATURE_COMPAT_SPARSE_SUPER2)
 
-/* This #ifdef is temporary until compression is fully supported */
-#ifdef ENABLE_COMPRESSION
-#ifndef I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL
-/* If the below warning bugs you, then have
-   `CPPFLAGS=-DI_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL' in your
-   environment at configure time. */
- #warning "Compression support is experimental"
-#endif
-#define EXT2_LIB_INCOMPAT_COMPRESSION  EXT2_FEATURE_INCOMPAT_COMPRESSION
-#else
-#define EXT2_LIB_INCOMPAT_COMPRESSION  (0)
-#endif
-
 #ifdef CONFIG_MMP
 #define EXT4_LIB_INCOMPAT_MMP          EXT4_FEATURE_INCOMPAT_MMP
 #else
@@ -590,7 +572,6 @@ typedef struct ext2_icount *ext2_icount_t;
 #endif
 
 #define EXT2_LIB_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|\
-                                        EXT2_LIB_INCOMPAT_COMPRESSION|\
                                         EXT3_FEATURE_INCOMPAT_JOURNAL_DEV|\
                                         EXT2_FEATURE_INCOMPAT_META_BG|\
                                         EXT3_FEATURE_INCOMPAT_RECOVER|\
@@ -693,6 +674,17 @@ extern void ext2fs_set_alloc_block_callback(ext2_filsys fs,
                                                              blk64_t *ret));
 blk64_t ext2fs_find_inode_goal(ext2_filsys fs, ext2_ino_t ino,
                               struct ext2_inode *inode, blk64_t lblk);
+#define EXT2_NEWRANGE_FIXED_GOAL       (0x1)
+#define EXT2_NEWRANGE_MIN_LENGTH       (0x2)
+#define EXT2_NEWRANGE_ALL_FLAGS                (0x3)
+errcode_t ext2fs_new_range(ext2_filsys fs, int flags, blk64_t goal,
+                          blk64_t len, ext2fs_block_bitmap map, blk64_t *pblk,
+                          blk64_t *plen);
+#define EXT2_ALLOCRANGE_FIXED_GOAL     (0x1)
+#define EXT2_ALLOCRANGE_ZERO_BLOCKS    (0x2)
+#define EXT2_ALLOCRANGE_ALL_FLAGS      (0x3)
+errcode_t ext2fs_alloc_range(ext2_filsys fs, int flags, blk64_t goal,
+                            blk_t len, blk64_t *ret);
 
 /* alloc_sb.c */
 extern int ext2fs_reserve_super_and_bgd(ext2_filsys fs,
@@ -1053,11 +1045,17 @@ extern void ext2fs_dblist_sort2(ext2_dblist dblist,
 extern errcode_t ext2fs_dblist_iterate(ext2_dblist dblist,
        int (*func)(ext2_filsys fs, struct ext2_db_entry *db_info,
                    void        *priv_data),
-       void *priv_data);
+       void *priv_data);
 extern errcode_t ext2fs_dblist_iterate2(ext2_dblist dblist,
        int (*func)(ext2_filsys fs, struct ext2_db_entry2 *db_info,
                    void        *priv_data),
-       void *priv_data);
+       void *priv_data);
+extern errcode_t ext2fs_dblist_iterate3(ext2_dblist dblist,
+       int (*func)(ext2_filsys fs, struct ext2_db_entry2 *db_info,
+                   void        *priv_data),
+       unsigned long long start,
+       unsigned long long count,
+       void *priv_data);
 extern errcode_t ext2fs_set_dir_block(ext2_dblist dblist, ext2_ino_t ino,
                                      blk_t blk, int blockcnt);
 extern errcode_t ext2fs_set_dir_block2(ext2_dblist dblist, ext2_ino_t ino,
@@ -1086,9 +1084,12 @@ extern errcode_t
                                              void      *priv_data),
                                  void *priv_data);
 
+#if 0
 /* digest_encode.c */
 #define EXT2FS_DIGEST_SIZE EXT2FS_SHA256_LENGTH
-extern int ext2fs_digest_encode(const char *src, unsigned long len, char *dst);
+extern int ext2fs_digest_encode(const char *src, int len, char *dst);
+extern int ext2fs_digest_decode(const char *src, int len, char *dst);
+#endif
 
 /* dirblock.c */
 extern errcode_t ext2fs_read_dir_block(ext2_filsys fs, blk_t block,
@@ -1418,6 +1419,7 @@ extern errcode_t ext2fs_get_next_inode_full(ext2_inode_scan scan,
                                            ext2_ino_t *ino,
                                            struct ext2_inode *inode,
                                            int bufsize);
+#define EXT2_INODE_SCAN_DEFAULT_BUFFER_BLOCKS  8
 extern errcode_t ext2fs_open_inode_scan(ext2_filsys fs, int buffer_blocks,
                                  ext2_inode_scan *ret_scan);
 extern void ext2fs_close_inode_scan(ext2_inode_scan scan);
@@ -1580,8 +1582,10 @@ extern errcode_t ext2fs_create_resize_inode(ext2_filsys fs);
 
 /*sha256.c */
 #define EXT2FS_SHA256_LENGTH 32
+#if 0
 extern void ext2fs_sha256(const unsigned char *in, unsigned long in_size,
                   unsigned char out[EXT2FS_SHA256_LENGTH]);
+#endif
 
 /* sha512.c */
 #define EXT2FS_SHA512_LENGTH 64