Blame view

include/ext4fs.h 4.66 KB
a1596438a   Uma Shankar   ext4fs ls load su...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  /*
   * (C) Copyright 2011 - 2012 Samsung Electronics
   * EXT4 filesystem implementation in Uboot by
   * Uma Shankar <uma.shankar@samsung.com>
   * Manjunatha C Achar <a.manjunatha@samsung.com>
   *
   * Ext4 Extent data structures are taken from  original ext4 fs code
   * as found in the linux kernel.
   *
   * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com
   * Written by Alex Tomas <alex@clusterfs.com>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   */
  
  #ifndef __EXT4__
  #define __EXT4__
  #include <ext_common.h>
  
  #define EXT4_EXTENTS_FL		0x00080000 /* Inode uses extents */
  #define EXT4_EXT_MAGIC			0xf30a
  #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM	0x0010
  #define EXT4_FEATURE_INCOMPAT_EXTENTS	0x0040
  #define EXT4_INDIRECT_BLOCKS		12
  
  #define EXT4_BG_INODE_UNINIT		0x0001
  #define EXT4_BG_BLOCK_UNINIT		0x0002
  #define EXT4_BG_INODE_ZEROED		0x0004
  
  /*
   * ext4_inode has i_block array (60 bytes total).
   * The first 12 bytes store ext4_extent_header;
   * the remainder stores an array of ext4_extent.
   */
  
  /*
   * This is the extent on-disk structure.
   * It's used at the bottom of the tree.
   */
  struct ext4_extent {
  	__le32	ee_block;	/* first logical block extent covers */
  	__le16	ee_len;		/* number of blocks covered by extent */
  	__le16	ee_start_hi;	/* high 16 bits of physical block */
  	__le32	ee_start_lo;	/* low 32 bits of physical block */
  };
  
  /*
   * This is index on-disk structure.
   * It's used at all the levels except the bottom.
   */
  struct ext4_extent_idx {
  	__le32	ei_block;	/* index covers logical blocks from 'block' */
  	__le32	ei_leaf_lo;	/* pointer to the physical block of the next *
  				 * level. leaf or next index could be there */
  	__le16	ei_leaf_hi;	/* high 16 bits of physical block */
  	__u16	ei_unused;
  };
  
  /* Each block (leaves and indexes), even inode-stored has header. */
  struct ext4_extent_header {
  	__le16	eh_magic;	/* probably will support different formats */
  	__le16	eh_entries;	/* number of valid entries */
  	__le16	eh_max;		/* capacity of store in entries */
  	__le16	eh_depth;	/* has tree real underlying blocks? */
  	__le32	eh_generation;	/* generation of the tree */
  };
  
  struct ext_filesystem {
  	/* Total Sector of partition */
  	uint64_t total_sect;
  	/* Block size  of partition */
  	uint32_t blksz;
  	/* Inode size of partition */
  	uint32_t inodesz;
  	/* Sectors per Block */
  	uint32_t sect_perblk;
  	/* Group Descriptor Block Number */
  	uint32_t gdtable_blkno;
  	/* Total block groups of partition */
  	uint32_t no_blkgrp;
  	/* No of blocks required for bgdtable */
  	uint32_t no_blk_pergdt;
  	/* Superblock */
  	struct ext2_sblock *sb;
  	/* Block group descritpor table */
73c15c634   Simon Glass   ext4: Rename bloc...
97
  	struct ext2_block_group *bgd;
a1596438a   Uma Shankar   ext4fs ls load su...
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
  	char *gdtable;
  
  	/* Block Bitmap Related */
  	unsigned char **blk_bmaps;
  	long int curr_blkno;
  	uint16_t first_pass_bbmap;
  
  	/* Inode Bitmap Related */
  	unsigned char **inode_bmaps;
  	int curr_inode_no;
  	uint16_t first_pass_ibmap;
  
  	/* Journal Related */
  
  	/* Block Device Descriptor */
  	block_dev_desc_t *dev_desc;
  };
a1596438a   Uma Shankar   ext4fs ls load su...
115
116
  extern struct ext2_data *ext4fs_root;
  extern struct ext2fs_node *ext4fs_file;
03e2ecf6b   Stephen Warren   fs: separate CONF...
117
  #if defined(CONFIG_EXT4_WRITE)
ed34f34db   Uma Shankar   ext4fs write support
118
119
120
121
122
123
124
125
126
127
  extern struct ext2_inode *g_parent_inode;
  extern int gd_index;
  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);
  #endif
a1596438a   Uma Shankar   ext4fs ls load su...
128
  struct ext_filesystem *get_fs(void);
a1596438a   Uma Shankar   ext4fs ls load su...
129
130
131
132
  int ext4fs_open(const char *filename);
  int ext4fs_read(char *buf, unsigned len);
  int ext4fs_mount(unsigned part_length);
  void ext4fs_close(void);
8b454eeee   Ɓukasz Majewski   fs:ext4:write:fix...
133
  void ext4fs_reinit_global(void);
a1596438a   Uma Shankar   ext4fs ls load su...
134
  int ext4fs_ls(const char *dirname);
55af5c931   Stephen Warren   ext4: implement e...
135
  int ext4fs_exists(const char *filename);
cf6598193   Stephen Warren   fs: implement siz...
136
  int ext4fs_size(const char *filename);
a1596438a   Uma Shankar   ext4fs ls load su...
137
  void ext4fs_free_node(struct ext2fs_node *node, struct ext2fs_node *currroot);
04735e9c5   Frederic Leroy   Fix ext2/ext4 fil...
138
  int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf);
81180819b   Rob Herring   cmd_extX: use com...
139
  void ext4fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info);
a1596438a   Uma Shankar   ext4fs ls load su...
140
  long int read_allocated_block(struct ext2_inode *inode, int fileblock);
e6d524153   Simon Glass   fs: Move ls and r...
141
142
143
  int ext4fs_probe(block_dev_desc_t *fs_dev_desc,
  		 disk_partition_t *fs_partition);
  int ext4_read_file(const char *filename, void *buf, int offset, int len);
50ce4c07d   Egbert Eich   fs/ext4: Support ...
144
  int ext4_read_superblock(char *buffer);
a1596438a   Uma Shankar   ext4fs ls load su...
145
  #endif