2010-12-26 18:02:14 +01:00
|
|
|
/*
|
|
|
|
* ext2fsP.h --- private header file for ext2 library
|
|
|
|
*
|
|
|
|
* Copyright (C) 1997 Theodore Ts'o.
|
|
|
|
*
|
|
|
|
* %Begin-Header%
|
|
|
|
* This file may be redistributed under the terms of the GNU Library
|
|
|
|
* General Public License, version 2.
|
|
|
|
* %End-Header%
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "ext2fs.h"
|
|
|
|
|
2012-02-13 21:26:22 +01:00
|
|
|
#define EXT2FS_MAX_NESTED_LINKS 8
|
|
|
|
|
2010-12-26 18:02:14 +01:00
|
|
|
/*
|
|
|
|
* Badblocks list
|
|
|
|
*/
|
|
|
|
struct ext2_struct_u32_list {
|
|
|
|
int magic;
|
|
|
|
int num;
|
|
|
|
int size;
|
|
|
|
__u32 *list;
|
|
|
|
int badblocks_flags;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ext2_struct_u32_iterate {
|
|
|
|
int magic;
|
|
|
|
ext2_u32_list bb;
|
|
|
|
int ptr;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Directory block iterator definition
|
|
|
|
*/
|
|
|
|
struct ext2_struct_dblist {
|
|
|
|
int magic;
|
|
|
|
ext2_filsys fs;
|
|
|
|
unsigned long long size;
|
|
|
|
unsigned long long count;
|
|
|
|
int sorted;
|
|
|
|
struct ext2_db_entry2 * list;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* For directory iterators
|
|
|
|
*/
|
|
|
|
struct dir_context {
|
|
|
|
ext2_ino_t dir;
|
|
|
|
int flags;
|
|
|
|
char *buf;
|
|
|
|
int (*func)(ext2_ino_t dir,
|
|
|
|
int entry,
|
|
|
|
struct ext2_dir_entry *dirent,
|
|
|
|
int offset,
|
|
|
|
int blocksize,
|
|
|
|
char *buf,
|
|
|
|
void *priv_data);
|
|
|
|
void *priv_data;
|
|
|
|
errcode_t errcode;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Inode cache structure
|
|
|
|
*/
|
|
|
|
struct ext2_inode_cache {
|
|
|
|
void * buffer;
|
|
|
|
blk_t buffer_blk;
|
|
|
|
int cache_last;
|
|
|
|
int cache_size;
|
|
|
|
int refcount;
|
|
|
|
struct ext2_inode_cache_ent *cache;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ext2_inode_cache_ent {
|
|
|
|
ext2_ino_t ino;
|
|
|
|
struct ext2_inode inode;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Function prototypes */
|
|
|
|
|
|
|
|
extern int ext2fs_process_dir_block(ext2_filsys fs,
|
|
|
|
blk64_t *blocknr,
|
|
|
|
e2_blkcnt_t blockcnt,
|
|
|
|
blk64_t ref_block,
|
|
|
|
int ref_offset,
|
|
|
|
void *priv_data);
|
|
|
|
|
|
|
|
/* Generic numeric progress meter */
|
|
|
|
|
|
|
|
struct ext2fs_numeric_progress_struct {
|
|
|
|
__u64 max;
|
|
|
|
int log_max;
|
|
|
|
int skip_progress;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern void ext2fs_numeric_progress_init(ext2_filsys fs,
|
|
|
|
struct ext2fs_numeric_progress_struct * progress,
|
|
|
|
const char *label, __u64 max);
|
|
|
|
extern void ext2fs_numeric_progress_update(ext2_filsys fs,
|
|
|
|
struct ext2fs_numeric_progress_struct * progress,
|
|
|
|
__u64 val);
|
|
|
|
extern void ext2fs_numeric_progress_close(ext2_filsys fs,
|
|
|
|
struct ext2fs_numeric_progress_struct * progress,
|
|
|
|
const char *message);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 64-bit bitmap support
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define EXT2FS_BMAP64_BITARRAY 1
|
|
|
|
|
|
|
|
extern errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic,
|
|
|
|
int type, __u64 start, __u64 end,
|
|
|
|
__u64 real_end,
|
|
|
|
const char * description,
|
|
|
|
ext2fs_generic_bitmap *bmap);
|
|
|
|
|
|
|
|
extern void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap);
|
|
|
|
|
|
|
|
extern errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src,
|
|
|
|
ext2fs_generic_bitmap *dest);
|
|
|
|
|
|
|
|
extern errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap,
|
|
|
|
__u64 new_end,
|
|
|
|
__u64 new_real_end);
|
|
|
|
extern errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap,
|
|
|
|
errcode_t neq,
|
|
|
|
__u64 end, __u64 *oend);
|
|
|
|
extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
|
|
|
|
__u64 arg);
|
|
|
|
extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
|
|
|
|
__u64 arg);
|
|
|
|
extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
|
|
|
|
__u64 arg);
|
|
|
|
extern errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bitmap,
|
|
|
|
__u64 start, unsigned int num,
|
|
|
|
void *in);
|
|
|
|
extern errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bitmap,
|
|
|
|
__u64 start, unsigned int num,
|
|
|
|
void *out);
|
2011-11-05 19:50:49 +01:00
|
|
|
extern void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap,const char *func);
|
2010-12-26 18:02:14 +01:00
|
|
|
|
|
|
|
extern int ext2fs_mem_is_zero(const char *mem, size_t len);
|