colibri_imx6: fix video stdout in default environment
[oweals/u-boot.git] / include / ext4fs.h
index 13d2c5603bddc0c2bb7dc30aea41240e14e5fccd..cb5d9cc0a5c050dcc0fa33b22eb72c4a8555205d 100644 (file)
 #define __EXT4__
 #include <ext_common.h>
 
+struct disk_partition;
+
+#define EXT4_INDEX_FL          0x00001000 /* Inode uses hash tree index */
 #define EXT4_EXTENTS_FL                0x00080000 /* Inode uses extents */
 #define EXT4_EXT_MAGIC                 0xf30a
 #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM        0x0010
+#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400
 #define EXT4_FEATURE_INCOMPAT_EXTENTS  0x0040
 #define EXT4_FEATURE_INCOMPAT_64BIT    0x0080
 #define EXT4_INDIRECT_BLOCKS           12
@@ -86,6 +90,8 @@ struct ext_filesystem {
        uint32_t inodesz;
        /* Sectors per Block */
        uint32_t sect_perblk;
+       /* Group Descriptor size */
+       uint16_t gdsize;
        /* Group Descriptor Block Number */
        uint32_t gdtable_blkno;
        /* Total block groups of partition */
@@ -95,7 +101,6 @@ struct ext_filesystem {
        /* Superblock */
        struct ext2_sblock *sb;
        /* Block group descritpor table */
-       struct ext2_block_group *bgd;
        char *gdtable;
 
        /* Block Bitmap Related */
@@ -114,6 +119,12 @@ struct ext_filesystem {
        struct blk_desc *dev_desc;
 };
 
+struct ext_block_cache {
+       char *buf;
+       lbaint_t block;
+       int size;
+};
+
 extern struct ext2_data *ext4fs_root;
 extern struct ext2fs_node *ext4fs_file;
 
@@ -124,16 +135,17 @@ extern int gindex;
 
 int ext4fs_init(void);
 void ext4fs_deinit(void);
-int ext4fs_filename_check(char *filename);
-int ext4fs_write(const char *fname, unsigned char *buffer,
-                unsigned long sizebytes);
+int ext4fs_filename_unlink(char *filename);
+int ext4fs_write(const char *fname, const char *buffer,
+                                unsigned long sizebytes, int type);
 int ext4_write_file(const char *filename, void *buf, loff_t offset, loff_t len,
                    loff_t *actwrite);
+int ext4fs_create_link(const char *target, const char *fname);
 #endif
 
 struct ext_filesystem *get_fs(void);
 int ext4fs_open(const char *filename, loff_t *len);
-int ext4fs_read(char *buf, loff_t len, loff_t *actread);
+int ext4fs_read(char *buf, loff_t offset, loff_t len, loff_t *actread);
 int ext4fs_mount(unsigned part_length);
 void ext4fs_close(void);
 void ext4fs_reinit_global(void);
@@ -142,12 +154,16 @@ int ext4fs_exists(const char *filename);
 int ext4fs_size(const char *filename, loff_t *size);
 void ext4fs_free_node(struct ext2fs_node *node, struct ext2fs_node *currroot);
 int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf);
-void ext4fs_set_blk_dev(struct blk_desc *rbdd, disk_partition_t *info);
-long int read_allocated_block(struct ext2_inode *inode, int fileblock);
+void ext4fs_set_blk_dev(struct blk_desc *rbdd, struct disk_partition *info);
+long int read_allocated_block(struct ext2_inode *inode, int fileblock,
+                             struct ext_block_cache *cache);
 int ext4fs_probe(struct blk_desc *fs_dev_desc,
-                disk_partition_t *fs_partition);
+                struct disk_partition *fs_partition);
 int ext4_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
                   loff_t *actread);
 int ext4_read_superblock(char *buffer);
 int ext4fs_uuid(char *uuid_str);
+void ext_cache_init(struct ext_block_cache *cache);
+void ext_cache_fini(struct ext_block_cache *cache);
+int ext_cache_read(struct ext_block_cache *cache, lbaint_t block, int size);
 #endif