ext2fsP.h revision 31dbecd482405e0d3a67eb58e1a1c8cb9f2ad83e
18a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * ext2fsP.h --- private header file for ext2 library
38a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
4f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * Copyright (C) 1997 Theodore Ts'o.
5f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com *
6f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * %Begin-Header%
7f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * This file may be redistributed under the terms of the GNU Public
8f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * License.
9f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * %End-Header%
10f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com */
11f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com
12f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com#include "ext2fs.h"
13f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com
14f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com/*
15f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com * Badblocks list
16f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com */
17f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.comstruct ext2_struct_badblocks_list {
18f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int	magic;
19f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int	num;
20f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int	size;
21f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	blk_t	*list;
22f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int	badblocks_flags;
23f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com};
24f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com
25f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.comstruct ext2_struct_badblocks_iterate {
26f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int		magic;
27f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	badblocks_list	bb;
28f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com	int		ptr;
29f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com};
30f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com
31f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com
32f2eb5ab7806a62e89b8cb572b1b33b70b83b13abreed@google.com/*
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * Directory block iterator definition
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct ext2_struct_dblist {
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int			magic;
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	ext2_filsys		fs;
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	ext2_ino_t		size;
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	ext2_ino_t		count;
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int			sorted;
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	struct ext2_db_entry *	list;
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * For directory iterators
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
4782065d667f64e232bcde2ad849756a6096fcbe6freed@google.comstruct dir_context {
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	ext2_ino_t		dir;
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int		flags;
5082065d667f64e232bcde2ad849756a6096fcbe6freed@google.com	char		*buf;
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int (*func)(struct ext2_dir_entry *dirent,
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		    int	offset,
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		    int	blocksize,
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		    char	*buf,
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		    void	*priv_data);
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int (*func2)(ext2_ino_t	dir,
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		     int	entry,
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		     struct ext2_dir_entry *dirent,
5982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com		     int	offset,
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		     int	blocksize,
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		     char	*buf,
6282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com		     void	*priv_data);
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	void		*priv_data;
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	errcode_t	errcode;
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * Inode cache structure
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct ext2_inode_cache {
7182065d667f64e232bcde2ad849756a6096fcbe6freed@google.com	void *				buffer;
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	blk_t				buffer_blk;
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int				cache_last;
7482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com	int				cache_size;
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	int				refcount;
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	struct ext2_inode_cache_ent	*cache;
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct ext2_inode_cache_ent {
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	ext2_ino_t		ino;
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com	struct ext2_inode	inode;
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/* Function prototypes */
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comextern int ext2fs_process_dir_block(ext2_filsys  	fs,
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com				    blk_t		*blocknr,
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com				    e2_blkcnt_t		blockcnt,
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com				    blk_t		ref_block,
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com				    int			ref_offset,
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com				    void		*priv_data);
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com