From 77d77284b56287646e22d926a1e98a2d5b0176f3 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Thu, 17 May 2018 13:43:16 +1000 Subject: [PATCH] e2fsck: add support for dirdata feature Add support for the INCOMPAT_DIRDATA feature, which allows storing extra data in the directory entry beyond the name. This allows the Lustre File IDentifier to be accessed in an efficient manner, and would be useful for expanding a filesystem to allow more than 2^32 inodes in the future. Include this patches: e2fsck: e2fsck -D does not change dirdata content Fix dir optimization to preserve dirdata content for dot and dotdot entries. Lustre-bug: https://jira.hpdd.intel.com/browse/LU-1774 Signed-off-by: Bobi Jam Change-Id: Iae190794da75a2080a8e5cc5b95a49e0c894f72f e2fsprogs: Consider DIRENT_LUFID flag in link_proc(). While adding the new file entry in directory block, link_proc() calculates minimum record length of the existing directory entry without considering the dirent data size and which leads to corruption. Changed the code to use EXT2_DIR_REC_LEN() which will return correct record length including dirent data size. Lustre-bug: https://jira.hpdd.intel.com/browse/LU-2462 Signed-off-by: Manisha Salve Change-Id: Ic593c558c47a78183143ec8e99d8385ac94d06f7 libext2fs, e2fsck: don't use ext2_dir_entry_2 Due to endian issues, do not use ext2_dir_entry_2 because it will have the wrong byte order on directory entries that are swabbed. Instead, use the standard practice of mask-and-shift to access the file_type and dirdata flags. Lustre-bug: https://jira.hpdd.intel.com/browse/LU-4677 Signed-off-by: Pravin Shelar Signed-off-by: Andreas Dilger Signed-off-by: Artem Blagodarenko --- debugfs/debugfs.8.in | 7 +- debugfs/htree.c | 2 +- debugfs/ls.c | 46 +++- debugfs/ncheck.c | 3 + e2fsck/pass1.c | 4 +- e2fsck/pass2.c | 137 ++++++++-- e2fsck/pass3.c | 7 + e2fsck/problem.c | 5 + e2fsck/problem.h | 3 + e2fsck/rehash.c | 79 +++--- e2fsck/unix.c | 8 + lib/ext2fs/dirblock.c | 33 +++ lib/ext2fs/ext2_fs.h | 31 ++- lib/ext2fs/ext2fs.h | 22 +- lib/ext2fs/inline_data.c | 14 +- lib/ext2fs/lfsck.h | 39 +++ lib/ext2fs/link.c | 8 +- lib/ext2fs/newdir.c | 4 +- misc/mke2fs.c | 14 ++ misc/tune2fs.c | 26 ++ tests/f_dir_optimize/expect.1 | 511 ++++++++++++++++++++++++++++++++++++++ tests/f_dir_optimize/expect.2 | 511 ++++++++++++++++++++++++++++++++++++++ tests/f_dir_optimize/image.gz | Bin 0 -> 102520 bytes tests/f_dir_optimize/name | 1 + tests/f_dir_optimize/script | 36 +++ tests/f_dirdata_optimize/expect.1 | 10 + tests/f_dirdata_optimize/expect.2 | 7 + tests/f_dirdata_optimize/image.gz | Bin 0 -> 32121 bytes tests/f_dirdata_optimize/name | 1 + tests/f_dirdata_optimize/script | 3 + 30 files changed, 1491 insertions(+), 81 deletions(-) create mode 100644 lib/ext2fs/lfsck.h create mode 100644 tests/f_dir_optimize/expect.1 create mode 100644 tests/f_dir_optimize/expect.2 create mode 100644 tests/f_dir_optimize/image.gz create mode 100644 tests/f_dir_optimize/name create mode 100644 tests/f_dir_optimize/script create mode 100644 tests/f_dirdata_optimize/expect.1 create mode 100644 tests/f_dirdata_optimize/expect.2 create mode 100644 tests/f_dirdata_optimize/image.gz create mode 100644 tests/f_dirdata_optimize/name create mode 100644 tests/f_dirdata_optimize/script diff --git a/debugfs/debugfs.8.in b/debugfs/debugfs.8.in index 393c000..3497060 100644 --- a/debugfs/debugfs.8.in +++ b/debugfs/debugfs.8.in @@ -549,7 +549,7 @@ option causes logdump to display old (checkpointed) journal entries. This can be used to try to track down journal problems even after the journal has been replayed. .TP -.BI ls " [-l] [-c] [-d] [-p] [-r] filespec" +.BI ls " [-l] [-c] [-d] [-p] [-r] [-D] filespec" Print a listing of the files in the directory .IR filespec . The @@ -569,6 +569,11 @@ non-printing characters at the end of filenames. The .I \-r flag will force the printing of the filename, even if it is encrypted. +The +.I \-D +flag will print the extra data found inside each entry when the +.I \-l +flag is used. .TP .BI list_deleted_inodes " [limit]" List deleted inodes, optionally limited to those deleted within diff --git a/debugfs/htree.c b/debugfs/htree.c index a9f9211..1d94841 100644 --- a/debugfs/htree.c +++ b/debugfs/htree.c @@ -298,7 +298,7 @@ void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)), goto errout; } - rootnode = (struct ext2_dx_root_info *) (buf + 24); + rootnode = get_ext2_dx_root_info(current_fs, buf); fprintf(pager, "Root node dump:\n"); fprintf(pager, "\t Reserved zero: %u\n", rootnode->reserved_zero); diff --git a/debugfs/ls.c b/debugfs/ls.c index 525f084..9b3a7c1 100644 --- a/debugfs/ls.c +++ b/debugfs/ls.c @@ -24,6 +24,7 @@ extern char *optarg; #endif #include "debugfs.h" +#include "ext2fs/lfsck.h" /* * list directory @@ -32,6 +33,7 @@ extern char *optarg; #define LONG_OPT 0x0001 #define PARSE_OPT 0x0002 #define RAW_OPT 0x0004 +#define DIRDATA_OPT 0x0008 #define ENCRYPT_OPT 0x8000 struct list_dir_struct { @@ -44,6 +46,41 @@ struct list_dir_struct { static const char *monstr[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; +static void list_dirdata(struct list_dir_struct *ls, + struct ext2_dir_entry *dirent) +{ + unsigned char *data; + int dlen; + __u8 dirdata_mask; + __u8 file_type = dirent->name_len >> 8; + + data = (unsigned char *)dirent->name + + (dirent->name_len & EXT2_NAME_LEN) + 1; + + for (dirdata_mask = EXT2_FT_MASK + 1; + dirdata_mask != 0; dirdata_mask <<= 1) { + if ((dirdata_mask & file_type) == 0) + continue; + + dlen = data[0]; + + if (dirdata_mask == EXT2_DIRENT_LUFID) { + struct lu_fid *fid = (struct lu_fid *)(data + 1); + + fid_be_to_cpu(fid, fid); + fprintf(ls->f, "fid:"DFID, PFID(fid)); + } else { + int i; + + for (i = 1; i < dlen; i++) + fprintf(ls->f, "%02x", data[i]); + } + + fprintf(ls->f, " "); + data += dlen; + } +} + static int print_filename(FILE *f, struct ext2_dir_entry *dirent, int options) { unsigned char ch; @@ -147,6 +184,8 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)), fprintf(ls->f, "%5llu", (unsigned long long) EXT2_I_SIZE(&inode)); fprintf(ls->f, " %s ", datestr); + if ((ls->options & DIRDATA_OPT) != 0) + list_dirdata(ls, dirent); print_filename(ls->f, dirent, options); fputc('\n', ls->f); } else { @@ -195,7 +234,7 @@ void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)), return; reset_getopt(); - while ((c = getopt (argc, argv, "cdlpr")) != EOF) { + while ((c = getopt(argc, argv, "cdDlpr")) != EOF) { switch (c) { case 'c': flags |= DIRENT_FLAG_INCLUDE_CSUM; @@ -203,6 +242,9 @@ void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)), case 'l': ls.options |= LONG_OPT; break; + case 'D': + ls.options |= DIRDATA_OPT; + break; case 'd': flags |= DIRENT_FLAG_INCLUDE_REMOVED; break; @@ -219,7 +261,7 @@ void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)), if (argc > optind+1) { print_usage: - com_err(0, 0, "Usage: ls [-c] [-d] [-l] [-p] [-r] file"); + com_err(0, 0, "Usage: ls [-c] [-d] [-l] [-p] [-r] [-D] file"); return; } diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c index 011f26d..cbe9ce0 100644 --- a/debugfs/ncheck.c +++ b/debugfs/ncheck.c @@ -51,6 +51,9 @@ static int ncheck_proc(struct ext2_dir_entry *dirent, iw->position++; if (iw->position <= 2) return 0; + if (current_fs->super->s_feature_incompat & + EXT4_FEATURE_INCOMPAT_DIRDATA) + filetype &= EXT2_FT_MASK; for (i=0; i < iw->num_inodes; i++) { if (iw->iarray[i] == dirent->inode) { if (!iw->parent && !iw->get_pathname_failed) { diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 412bbda..904cc07 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -764,7 +764,7 @@ static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx, */ memcpy(&dotdot, inode->i_block, sizeof(dotdot)); memcpy(&de, ((char *)inode->i_block) + EXT4_INLINE_DATA_DOTDOT_SIZE, - EXT2_DIR_REC_LEN(0)); + EXT2_DIR_NAME_LEN(0)); dotdot = ext2fs_le32_to_cpu(dotdot); de.inode = ext2fs_le32_to_cpu(de.inode); de.rec_len = ext2fs_le16_to_cpu(de.rec_len); @@ -4274,7 +4274,7 @@ static int handle_htree(e2fsck_t ctx, struct problem_context *pctx, } /* XXX should check that beginning matches a directory */ - root = (struct ext2_dx_root_info *) (block_buf + 24); + root = get_ext2_dx_root_info(fs, block_buf); if ((root->reserved_zero || root->info_length < 8) && fix_problem(ctx, PR_1_HTREE_BADROOT, pctx)) diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c index 34db6fd..8b5ea57 100644 --- a/e2fsck/pass2.c +++ b/e2fsck/pass2.c @@ -391,13 +391,88 @@ static EXT2_QSORT_TYPE special_dir_block_cmp(const void *a, const void *b) return (int) (db_a->blockcnt - db_b->blockcnt); } +void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de) +{ + __u16 file_type = de->name_len & (EXT2_FT_MASK << 8); + __u8 de_flags = (de->name_len >> 8) & ~EXT2_FT_MASK; + __u8 name_len = de->name_len & EXT2_NAME_LEN; + __u8 new_flag = 0; + int i; + + for (i = 0; i < 4; i++) { + __u8 flags = new_flag | (1 << i) << 4; + + /* new_flag is accumulating flags that are set in de_flags + * and still fit inside rec_len. ext2_get_dirent_dirdata_size() + * returns the size of all the dirdata entries in flags, and + * chops off any that are beyond rec_len. + */ + if ((de_flags & flags) == flags) { + int dirdatalen = ext2_get_dirdata_field_size(de, + flags); + int rlen = EXT2_DIR_NAME_LEN(name_len + dirdatalen); + + if (rlen > de->rec_len) + break; + + new_flag |= flags; + } + } + + de->name_len = name_len | file_type | (new_flag << 8); +} + +/* + * check for dirent data in ext3 dirent. + * return 0 if dirent data is ok. + * return 1 if dirent data does not exist. + * return 2 if dirent was modified due to error. + */ +int e2fsck_check_dirent_data(e2fsck_t ctx, struct ext2_dir_entry *de, + unsigned int offset, struct problem_context *pctx) +{ + if (!(ctx->fs->super->s_feature_incompat & + EXT4_FEATURE_INCOMPAT_DIRDATA)) { + if ((de->name_len >> 8) & ~EXT2_FT_MASK) { + /* clear dirent extra data flags. */ + if (fix_problem(ctx, PR_2_CLEAR_DIRDATA, pctx)) { + de->name_len &= (EXT2_FT_MASK << 8) | + EXT2_NAME_LEN; + return 2; + } + } + return 1; + } + if ((de->name_len >> 8) & ~EXT2_FT_MASK) { + if (de->rec_len >= EXT2_DIR_REC_LEN(de) || + de->rec_len + offset == EXT2_BLOCK_SIZE(ctx->fs->super)) { + if (ext2_get_dirdata_field_size(de, + EXT2_DIRENT_LUFID) % + EXT2_DIRENT_LUFID_SIZE == 1 /*size*/ + 1 /*NULL*/) + return 0; + } + /* just clear dirent data flags for now, we should fix FID data + * in lustre specific pass. + */ + if (fix_problem(ctx, PR_2_CLEAR_DIRDATA, pctx)) { + ext2_fix_dirent_dirdata(de); + if (ext2_get_dirdata_field_size(de, + EXT2_DIRENT_LUFID) != + EXT2_DIRENT_LUFID_SIZE) + de->name_len &= ~(EXT2_DIRENT_LUFID << 8); + + return 2; + } + } + return 1; +} /* * Make sure the first entry in the directory is '.', and that the * directory entry is sane. */ static int check_dot(e2fsck_t ctx, - struct ext2_dir_entry *dirent, + struct ext2_dir_entry *dirent, unsigned int offset, ext2_ino_t ino, struct problem_context *pctx) { struct ext2_dir_entry *nextdir; @@ -405,6 +480,7 @@ static int check_dot(e2fsck_t ctx, int status = 0; int created = 0; problem_t problem = 0; + int dir_data_error; if (!dirent->inode) problem = PR_2_MISSING_DOT; @@ -414,10 +490,12 @@ static int check_dot(e2fsck_t ctx, else if (dirent->name[1] != '\0') problem = PR_2_DOT_NULL_TERM; + dir_data_error = e2fsck_check_dirent_data(ctx, dirent, offset, pctx); + (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len); if (problem) { if (fix_problem(ctx, problem, pctx)) { - if (rec_len < 12) + if (rec_len < 12 && dir_data_error) rec_len = dirent->rec_len = 12; dirent->inode = ino; ext2fs_dirent_set_name_len(dirent, 1); @@ -436,7 +514,7 @@ static int check_dot(e2fsck_t ctx, } if (rec_len > 12) { new_len = rec_len - 12; - if (new_len > 12) { + if (new_len > 12 && dir_data_error) { if (created || fix_problem(ctx, PR_2_SPLIT_DOT, pctx)) { nextdir = (struct ext2_dir_entry *) @@ -461,11 +539,12 @@ static int check_dot(e2fsck_t ctx, * here; this gets done in pass 3. */ static int check_dotdot(e2fsck_t ctx, - struct ext2_dir_entry *dirent, + struct ext2_dir_entry *dirent, unsigned int offset, ext2_ino_t ino, struct problem_context *pctx) { problem_t problem = 0; unsigned int rec_len; + int dir_data_error; if (!dirent->inode) problem = PR_2_MISSING_DOT_DOT; @@ -476,10 +555,12 @@ static int check_dotdot(e2fsck_t ctx, else if (dirent->name[2] != '\0') problem = PR_2_DOT_DOT_NULL_TERM; + dir_data_error = e2fsck_check_dirent_data(ctx, dirent, offset, pctx); + (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len); if (problem) { if (fix_problem(ctx, problem, pctx)) { - if (rec_len < 12) + if (rec_len < 12 && dir_data_error) dirent->rec_len = 12; /* * Note: we don't have the parent inode just @@ -576,6 +657,12 @@ static _INLINE_ int check_filetype(e2fsck_t ctx, int should_be = EXT2_FT_UNKNOWN; __u16 badness = 0; struct ext2_inode inode; + __u8 dirdata = 0; + + if (ext2fs_has_feature_dirdata(ctx->fs->super)) { + dirdata = filetype & ~EXT2_FT_MASK; + filetype = filetype & EXT2_FT_MASK; + } if (!ext2fs_has_feature_filetype(ctx->fs->super)) { if (filetype == 0 || @@ -608,8 +695,7 @@ static _INLINE_ int check_filetype(e2fsck_t ctx, if (fix_problem(ctx, filetype ? PR_2_BAD_FILETYPE : PR_2_SET_FILETYPE, pctx) == 0) return 0; - - ext2fs_dirent_set_file_type(dirent, should_be); + ext2fs_dirent_set_file_type(dirent, should_be | dirdata); return 1; } @@ -631,7 +717,7 @@ static void parse_int_node(ext2_filsys fs, int csum_size = 0; if (db->blockcnt == 0) { - root = (struct ext2_dx_root_info *) (block_buf + 24); + root = get_ext2_dx_root_info(fs, block_buf); #ifdef DX_DEBUG printf("Root node dump:\n"); @@ -641,8 +727,8 @@ static void parse_int_node(ext2_filsys fs, printf("\t Indirect levels: %u\n", root->indirect_levels); printf("\t Flags: %x\n", root->unused_flags); #endif - - ent = (struct ext2_dx_entry *) (block_buf + 24 + root->info_length); + ent = (struct ext2_dx_entry *)((char *)root + + root->info_length); if (failed_csum && (e2fsck_dir_will_be_rehashed(cd->ctx, cd->pctx.ino) || @@ -650,7 +736,7 @@ static void parse_int_node(ext2_filsys fs, &cd->pctx))) goto clear_and_exit; } else { - ent = (struct ext2_dx_entry *) (block_buf+8); + ent = (struct ext2_dx_entry *)(block_buf + 8); if (failed_csum && (e2fsck_dir_will_be_rehashed(cd->ctx, cd->pctx.ino) || @@ -658,8 +744,7 @@ static void parse_int_node(ext2_filsys fs, &cd->pctx))) goto clear_and_exit; } - - limit = (struct ext2_dx_countlimit *) ent; + limit = (struct ext2_dx_countlimit *)ent; #ifdef DX_DEBUG printf("Number of entries (count): %d\n", @@ -833,7 +918,6 @@ static void salvage_directory(ext2_filsys fs, } } -#define NEXT_DIRENT(d) ((void *)((char *)(d) + (d)->rec_len)) static errcode_t insert_dirent_tail(ext2_filsys fs, void *dirbuf) { struct ext2_dir_entry *d; @@ -843,11 +927,11 @@ static errcode_t insert_dirent_tail(ext2_filsys fs, void *dirbuf) d = dirbuf; top = EXT2_DIRENT_TAIL(dirbuf, fs->blocksize); - while (d->rec_len && !(d->rec_len & 0x3) && NEXT_DIRENT(d) <= top) - d = NEXT_DIRENT(d); + while (d->rec_len && !(d->rec_len & 0x3) && EXT2_NEXT_DIRENT(d) <= top) + d = EXT2_NEXT_DIRENT(d); if (d != top) { - unsigned int min_size = EXT2_DIR_REC_LEN( + unsigned int min_size = EXT2_DIR_NAME_LEN( ext2fs_dirent_name_len(dirbuf)); if (min_size > (char *)top - (char *)d) return EXT2_ET_DIR_NO_SPACE_FOR_CSUM; @@ -862,7 +946,6 @@ static errcode_t insert_dirent_tail(ext2_filsys fs, void *dirbuf) return 0; } -#undef NEXT_DIRENT static errcode_t fix_inline_dir_size(e2fsck_t ctx, ext2_ino_t ino, size_t *inline_data_size, @@ -881,7 +964,7 @@ static errcode_t fix_inline_dir_size(e2fsck_t ctx, ext2_ino_t ino, */ if (old_size > EXT4_MIN_INLINE_DATA_SIZE && old_size < EXT4_MIN_INLINE_DATA_SIZE + - EXT2_DIR_REC_LEN(1)) { + EXT2_DIR_NAME_LEN(1)) { old_size = EXT4_MIN_INLINE_DATA_SIZE; new_size = old_size; } else @@ -1168,7 +1251,7 @@ inline_read_fail: if (((inline_data_size & 3) || (inline_data_size > EXT4_MIN_INLINE_DATA_SIZE && inline_data_size < EXT4_MIN_INLINE_DATA_SIZE + - EXT2_DIR_REC_LEN(1))) && + EXT2_DIR_NAME_LEN(1))) && fix_problem(ctx, PR_2_BAD_INLINE_DIR_SIZE, &pctx)) { errcode_t err = fix_inline_dir_size(ctx, ino, &inline_data_size, &pctx, @@ -1218,7 +1301,7 @@ inline_read_fail: (void) ext2fs_get_rec_len(fs, dirent, &rec_len); limit = (struct ext2_dx_countlimit *) (buf+8); if (db->blockcnt == 0) { - root = (struct ext2_dx_root_info *) (buf + 24); + root = get_ext2_dx_root_info(fs, buf); dx_db->type = DX_DIRBLOCK_ROOT; dx_db->flags |= DX_FLAG_FIRST | DX_FLAG_LAST; @@ -1377,7 +1460,7 @@ skip_checksum: memset(&dot, 0, sizeof(dot)); dirent = ˙ dirent->inode = ino; - dirent->rec_len = EXT2_DIR_REC_LEN(1); + dirent->rec_len = EXT2_DIR_NAME_LEN(1); dirent->name_len = 1 | filetype; dirent->name[0] = '.'; } else if (dot_state == 1) { @@ -1385,7 +1468,7 @@ skip_checksum: dirent = &dotdot; dirent->inode = ((struct ext2_dir_entry *)buf)->inode; - dirent->rec_len = EXT2_DIR_REC_LEN(2); + dirent->rec_len = EXT2_DIR_NAME_LEN(2); dirent->name_len = 2 | filetype; dirent->name[0] = '.'; dirent->name[1] = '.'; @@ -1397,10 +1480,10 @@ skip_checksum: } if (dot_state == 0) { - if (check_dot(ctx, dirent, ino, &cd->pctx)) + if (check_dot(ctx, dirent, offset, ino, &cd->pctx)) dir_modified++; } else if (dot_state == 1) { - ret = check_dotdot(ctx, dirent, ino, &cd->pctx); + ret = check_dotdot(ctx, dirent, offset, ino, &cd->pctx); if (ret < 0) goto abort_free_dict; if (ret) @@ -1416,6 +1499,10 @@ skip_checksum: if (!dirent->inode) goto next; + ret = e2fsck_check_dirent_data(ctx, dirent, offset, &cd->pctx); + if (ret == 2) + dir_modified++; + /* * Make sure the inode listed is a legal one. */ diff --git a/e2fsck/pass3.c b/e2fsck/pass3.c index ace3b8b..b0142dc 100644 --- a/e2fsck/pass3.c +++ b/e2fsck/pass3.c @@ -704,6 +704,7 @@ static int fix_dotdot_proc(struct ext2_dir_entry *dirent, struct fix_dotdot_struct *fp = (struct fix_dotdot_struct *) priv_data; errcode_t retval; struct problem_context pctx; + __u16 dirdata = 0; if (ext2fs_dirent_name_len(dirent) != 2) return 0; @@ -723,11 +724,17 @@ static int fix_dotdot_proc(struct ext2_dir_entry *dirent, fix_problem(fp->ctx, PR_3_ADJUST_INODE, &pctx); } dirent->inode = fp->parent; + + dirdata = dirent->name_len & ((__u16)~EXT2_FT_MASK << 8); + if (ext2fs_has_feature_filetype(fp->ctx->fs->super)) ext2fs_dirent_set_file_type(dirent, EXT2_FT_DIR); else ext2fs_dirent_set_file_type(dirent, EXT2_FT_UNKNOWN); + if (ext2fs_has_feature_dirdata(fp->ctx->fs->super)) + dirent->name_len |= dirdata; + fp->done++; return DIRENT_ABORT | DIRENT_CHANGED; } diff --git a/e2fsck/problem.c b/e2fsck/problem.c index ae9cbba..75dfeec 100644 --- a/e2fsck/problem.c +++ b/e2fsck/problem.c @@ -1897,6 +1897,11 @@ static struct e2fsck_problem problem_table[] = { N_("@i %i is badly corrupt (badness value = %N). "), PROMPT_CLEAR, PR_PREEN_OK }, + /* Directory entry dirdata length set incorrectly */ + { PR_2_CLEAR_DIRDATA, + N_("@E dirdata length set incorrectly.\n"), + PROMPT_CLEAR, PR_PREEN_OK }, + /* Pass 3 errors */ /* Pass 3: Checking directory connectivity */ diff --git a/e2fsck/problem.h b/e2fsck/problem.h index ffb1c49..1ee9f5f 100644 --- a/e2fsck/problem.h +++ b/e2fsck/problem.h @@ -1093,6 +1093,9 @@ struct problem_context { /* Inode is badly corrupt (badness value = ) */ #define PR_2_INODE_TOOBAD 0x020055 +/* Entry dirdata length set incorrectly */ +#define PR_2_CLEAR_DIRDATA 0x020056 + /* * Pass 3 errors */ diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c index 204ff7d..2048678 100644 --- a/e2fsck/rehash.c +++ b/e2fsck/rehash.c @@ -86,6 +86,8 @@ struct fill_dir_struct { int compress; ext2_ino_t parent; ext2_ino_t dir; + struct ext2_dir_entry *dot_de; + struct ext2_dir_entry *dotdot_de; }; struct hash_entry { @@ -187,11 +189,14 @@ static int fill_dir_block(ext2_filsys fs, return BLOCK_ABORT; } if (!fd->compress && (name_len == 1) && - (dirent->name[0] == '.')) + (dirent->name[0] == '.')) { + fd->dot_de = dirent; continue; + } if (!fd->compress && (name_len == 2) && (dirent->name[0] == '.') && (dirent->name[1] == '.')) { fd->parent = dirent->inode; + fd->dotdot_de = dirent; continue; } if (fd->num_array >= fd->max_array) { @@ -209,7 +214,7 @@ static int fill_dir_block(ext2_filsys fs, } ent = fd->harray + fd->num_array++; ent->dir = dirent; - fd->dir_size += ext2fs_dir_rec_len(name_len, extended); + fd->dir_size += ext2fs_dirdata_rec_len(dirent, extended); ent->ino = dirent->inode; if (extended) { ent->hash = EXT2_DIRENT_HASH(dirent); @@ -585,8 +590,7 @@ static errcode_t copy_dir_entries(e2fsck_t ctx, ent = fd->harray + i; if (ent->dir->inode == 0) continue; - rec_len = ext2fs_dir_rec_len(ext2fs_dirent_name_len(ent->dir), - hash_in_entry); + rec_len = ext2fs_dirdata_rec_len(ent->dir, hash_in_entry); if (rec_len > left) { if (left) { left += prev_rec_len; @@ -621,8 +625,7 @@ static errcode_t copy_dir_entries(e2fsck_t ctx, if (retval) return retval; prev_rec_len = rec_len; - memcpy(dirent->name, ent->dir->name, - ext2fs_dirent_name_len(dirent)); + memcpy(dirent->name, ent->dir->name, rec_len); if (hash_in_entry) { EXT2_DIRENT_HASHES(dirent)->hash = ext2fs_cpu_to_le32(ent->hash); EXT2_DIRENT_HASHES(dirent)->minor_hash = @@ -653,47 +656,52 @@ static errcode_t copy_dir_entries(e2fsck_t ctx, static struct ext2_dx_root_info *set_root_node(ext2_filsys fs, char *buf, ext2_ino_t ino, ext2_ino_t parent, + struct ext2_dir_entry *dot_de, + struct ext2_dir_entry *dotdot_de, struct ext2_inode *inode) { - struct ext2_dir_entry *dir; - struct ext2_dx_root_info *root; + struct ext2_dir_entry *dirent; + struct ext2_dx_root_info *root; struct ext2_dx_countlimit *limits; - int filetype = 0; int csum_size = 0; - - if (ext2fs_has_feature_filetype(fs->super)) - filetype = EXT2_FT_DIR; + int offset; + int rec_len; memset(buf, 0, fs->blocksize); - dir = (struct ext2_dir_entry *) buf; - dir->inode = ino; - dir->name[0] = '.'; - ext2fs_dirent_set_name_len(dir, 1); - ext2fs_dirent_set_file_type(dir, filetype); - dir->rec_len = 12; - dir = (struct ext2_dir_entry *) (buf + 12); - dir->inode = parent; - dir->name[0] = '.'; - dir->name[1] = '.'; - ext2fs_dirent_set_name_len(dir, 2); - ext2fs_dirent_set_file_type(dir, filetype); - dir->rec_len = fs->blocksize - 12; - - root = (struct ext2_dx_root_info *) (buf+24); + dirent = (struct ext2_dir_entry *) buf; + dirent->inode = ino; + + dirent->name_len = dot_de->name_len; + offset = rec_len = dirent->rec_len = dot_de->rec_len; + memcpy(dirent->name, dot_de->name, rec_len); + + dirent = EXT2_NEXT_DIRENT(dirent); + /* set to jump over the index block */ + + dirent->inode = parent; + + dirent->name_len = dotdot_de->name_len; + dirent->rec_len = fs->blocksize - rec_len; + rec_len = EXT2_DIR_REC_LEN(dotdot_de); + memcpy(dirent->name, dotdot_de->name, rec_len); + offset += rec_len; + + root = (struct ext2_dx_root_info *)(buf + offset); root->reserved_zero = 0; if (ext4_hash_in_dirent(inode)) root->hash_version = EXT2_HASH_SIPHASH; else root->hash_version = fs->super->s_def_hash_version; - root->info_length = 8; + root->info_length = sizeof(*root); root->indirect_levels = 0; root->unused_flags = 0; + offset += root->info_length; if (ext2fs_has_feature_metadata_csum(fs->super)) csum_size = sizeof(struct ext2_dx_tail); - limits = (struct ext2_dx_countlimit *) (buf+32); - limits->limit = (fs->blocksize - (32 + csum_size)) / + limits = (struct ext2_dx_countlimit *) (buf + offset); + limits->limit = (fs->blocksize - (offset + csum_size)) / sizeof(struct ext2_dx_entry); limits->count = 0; @@ -771,6 +779,8 @@ static errcode_t calculate_tree(ext2_filsys fs, struct out_dir *outdir, ext2_ino_t ino, ext2_ino_t parent, + struct ext2_dir_entry *dot_de, + struct ext2_dir_entry *dotdot_de, struct ext2_inode *inode) { struct ext2_dx_root_info *root_info; @@ -780,7 +790,9 @@ static errcode_t calculate_tree(ext2_filsys fs, int i, c1, c2, c3, nblks; int limit_offset, int_offset, root_offset; - root_info = set_root_node(fs, outdir->buf, ino, parent, inode); + root_info = set_root_node(fs, outdir->buf, ino, parent, dot_de, + dotdot_de, inode); + root_offset = limit_offset = ((char *) root_info - outdir->buf) + root_info->info_length; root_limit = (struct ext2_dx_countlimit *) (outdir->buf + limit_offset); @@ -1083,11 +1095,10 @@ resort: if (retval) goto errout; - free(dir_buf); dir_buf = 0; - if (!fd.compress) { /* Calculate the interior nodes */ - retval = calculate_tree(fs, &outdir, ino, fd.parent, fd.inode); + retval = calculate_tree(fs, &outdir, ino, fd.parent, + fd.dot_de, fd.dotdot_de, fd.inode); if (retval) goto errout; } diff --git a/e2fsck/unix.c b/e2fsck/unix.c index d0e12d9..4cda592 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -1983,6 +1983,14 @@ print_unsupp_features: goto get_newer; } + if (ext2fs_has_feature_dirdata(sb) && + ext2fs_has_feature_casefold(sb)) { + com_err(ctx->program_name, 0, + _("%s has both casefold and dirdata, aborting fsck"), + ctx->filesystem_name); + fatal_error(ctx, 0); + } + if (ext2fs_has_feature_casefold(sb) && !fs->encoding) { log_err(ctx, _("%s has unsupported encoding: %0x\n"), ctx->filesystem_name, sb->s_encoding); diff --git a/lib/ext2fs/dirblock.c b/lib/ext2fs/dirblock.c index 54b2777..3563138 100644 --- a/lib/ext2fs/dirblock.c +++ b/lib/ext2fs/dirblock.c @@ -50,6 +50,39 @@ errcode_t ext2fs_read_dir_block3(ext2_filsys fs, blk64_t block, return ext2fs_read_dir_block4(fs, block, buf, flags, 0); } +/* + * Compute the dirdata length. This includes only optional extensions. + * Each extension has a bit set in the high 4 bits of + * de->file_type, and the extension length is the first byte in each entry. + */ +int ext2_get_dirdata_field_size(struct ext2_dir_entry *de, + char dirdata_flags) +{ + char *lenp = de->name + (de->name_len & EXT2_NAME_LEN) + 1 /* NUL */; + __u8 extra_data_flags = (de->name_len & ~(EXT2_FT_MASK << 8)) >> 12; + int dlen = 0; + + dirdata_flags >>= 4; + while ((extra_data_flags & dirdata_flags) != 0) { + if (extra_data_flags & 1) { + if (dirdata_flags & 1) + dlen += *lenp; + + lenp += *lenp; + } + extra_data_flags >>= 1; + dirdata_flags >>= 1; + } + + /* add NUL terminator byte to dirdata length */ + return dlen + (dlen != 0); +} + +int ext2_get_dirdata_size(struct ext2_dir_entry *de) +{ + return ext2_get_dirdata_field_size(de, ~EXT2_FT_MASK); +} + errcode_t ext2fs_read_dir_block2(ext2_filsys fs, blk_t block, void *buf, int flags EXT2FS_ATTR((unused))) { diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h index 57a5d08..313f8e1 100644 --- a/lib/ext2fs/ext2_fs.h +++ b/lib/ext2fs/ext2_fs.h @@ -963,7 +963,8 @@ EXT4_FEATURE_INCOMPAT_FUNCS(casefold, 4, CASEFOLD) #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ EXT4_FEATURE_INCOMPAT_MMP| \ EXT4_FEATURE_INCOMPAT_LARGEDIR| \ - EXT4_FEATURE_INCOMPAT_EA_INODE) + EXT4_FEATURE_INCOMPAT_EA_INODE| \ + EXT4_FEATURE_INCOMPAT_DIRDATA) #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \ @@ -1078,6 +1079,7 @@ struct ext2_dir_entry_tail { #define EXT2_FT_SYMLINK 7 #define EXT2_FT_MAX 8 +#define EXT2_FT_MASK 0x0f /* * Annoyingly, e2fsprogs always swab16s ext2_dir_entry.name_len, so we @@ -1087,6 +1089,9 @@ struct ext2_dir_entry_tail { */ #define EXT2_DIR_NAME_LEN_CSUM 0xDE00 +int ext2_get_dirdata_field_size(struct ext2_dir_entry *de, char dirdata_flags); +int ext2_get_dirdata_size(struct ext2_dir_entry *de); + /* * EXT2_DIR_PAD defines the directory entries boundaries * @@ -1096,7 +1101,13 @@ struct ext2_dir_entry_tail { #define EXT2_DIR_ENTRY_HASH_LEN 8 #define EXT2_DIR_PAD 4 #define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) -#define EXT2_DIR_REC_LEN(name_len) ext2fs_dir_rec_len(name_len, 0) +#define EXT2_DIR_NAME_LEN(name_len) (((name_len) + \ + EXT2_DIR_ENTRY_HEADER_LEN + \ + EXT2_DIR_ROUND) & \ + ~EXT2_DIR_ROUND) +#define EXT2_DIR_REC_LEN(de) (EXT2_DIR_NAME_LEN(((de)->name_len & \ + EXT2_NAME_LEN) + \ + ext2_get_dirdata_size(de))) static inline unsigned int ext2fs_dir_rec_len(__u8 name_len, int extended) @@ -1109,6 +1120,20 @@ static inline unsigned int ext2fs_dir_rec_len(__u8 name_len, return rec_len; } +static inline unsigned int ext2fs_dirdata_rec_len(struct ext2_dir_entry *de, + int extended) +{ + int rec_len = EXT2_DIR_REC_LEN(de); + + if (extended) + rec_len += EXT2_DIR_ENTRY_HASH_LEN; + return rec_len; +} + +/* lu_fid size and NUL char */ +#define EXT2_DIRENT_LUFID_SIZE 16 +#define EXT2_DIRENT_LUFID 0x10 + /* * Constants for ext4's extended time encoding */ @@ -1181,4 +1206,6 @@ struct mmp_struct { #define EXT4_ENC_STRICT_MODE_FL (1 << 0) /* Reject invalid sequences */ +#define EXT2_NEXT_DIRENT(d) ((void *)((char *)(d) + (d)->rec_len)) + #endif /* _LINUX_EXT2_FS_H */ diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index 6d1c2e0..97843b5 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -642,6 +642,7 @@ typedef struct ext2_icount *ext2_icount_t; EXT3_FEATURE_INCOMPAT_EXTENTS|\ EXT4_FEATURE_INCOMPAT_FLEX_BG|\ EXT4_FEATURE_INCOMPAT_EA_INODE|\ + EXT4_FEATURE_INCOMPAT_DIRDATA|\ EXT4_LIB_INCOMPAT_MMP|\ EXT4_FEATURE_INCOMPAT_64BIT|\ EXT4_FEATURE_INCOMPAT_INLINE_DATA|\ @@ -2137,6 +2138,25 @@ _INLINE_ int ext2fs_htree_intnode_maxrecs(ext2_filsys fs, int blocks) sizeof(struct ext2_dx_entry)); } +_INLINE_ struct ext2_dx_root_info *get_ext2_dx_root_info(ext2_filsys fs, + char *buf) +{ + struct ext2_dir_entry *de = (struct ext2_dir_entry *)buf; + + if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA)) + return (struct ext2_dx_root_info *)(buf + + EXT2_DIR_NAME_LEN(1) + + EXT2_DIR_NAME_LEN(2)); + + /* get dotdot first */ + de = (struct ext2_dir_entry *)((char *)de + de->rec_len); + + /* dx root info is after dotdot entry */ + de = (struct ext2_dir_entry *)((char *)de + EXT2_DIR_REC_LEN(de)); + + return (struct ext2_dx_root_info *)de; +} + /* * This is an efficient, overflow safe way of calculating ceil((1.0 * a) / b) */ @@ -2156,7 +2176,7 @@ _INLINE_ __u64 ext2fs_div64_ceil(__u64 a, __u64 b) _INLINE_ int ext2fs_dirent_name_len(const struct ext2_dir_entry *entry) { - return entry->name_len & 0xff; + return entry->name_len & EXT2_NAME_LEN; } _INLINE_ void ext2fs_dirent_set_name_len(struct ext2_dir_entry *entry, int len) diff --git a/lib/ext2fs/inline_data.c b/lib/ext2fs/inline_data.c index b62fb67..cd3e5bc 100644 --- a/lib/ext2fs/inline_data.c +++ b/lib/ext2fs/inline_data.c @@ -149,7 +149,7 @@ int ext2fs_inline_data_dir_iterate(ext2_filsys fs, ext2_ino_t ino, /* we first check '.' and '..' dir */ dirent.inode = ino; dirent.name_len = 1; - ext2fs_set_rec_len(fs, EXT2_DIR_REC_LEN(2), &dirent); + ext2fs_set_rec_len(fs, EXT2_DIR_NAME_LEN(2), &dirent); dirent.name[0] = '.'; dirent.name[1] = '\0'; ctx->buf = (char *)&dirent; @@ -160,7 +160,7 @@ int ext2fs_inline_data_dir_iterate(ext2_filsys fs, ext2_ino_t ino, dirent.inode = ext2fs_le32_to_cpu(inode.i_block[0]); dirent.name_len = 2; - ext2fs_set_rec_len(fs, EXT2_DIR_REC_LEN(3), &dirent); + ext2fs_set_rec_len(fs, EXT2_DIR_NAME_LEN(3), &dirent); dirent.name[0] = '.'; dirent.name[1] = '.'; dirent.name[2] = '\0'; @@ -296,14 +296,14 @@ static errcode_t ext2fs_inline_data_convert_dir(ext2_filsys fs, ext2_ino_t ino, ext2fs_dirent_set_name_len(dir, 1); ext2fs_dirent_set_file_type(dir, filetype); dir->name[0] = '.'; - rec_len = (fs->blocksize - csum_size) - EXT2_DIR_REC_LEN(1); - dir->rec_len = EXT2_DIR_REC_LEN(1); + rec_len = (fs->blocksize - csum_size) - EXT2_DIR_NAME_LEN(1); + dir->rec_len = EXT2_DIR_NAME_LEN(1); /* * Set up entry for '..' */ dir = (struct ext2_dir_entry *) (bbuf + dir->rec_len); - dir->rec_len = EXT2_DIR_REC_LEN(2); + dir->rec_len = EXT2_DIR_NAME_LEN(2); dir->inode = ext2fs_le32_to_cpu(((__u32 *)ibuf)[0]); ext2fs_dirent_set_name_len(dir, 2); ext2fs_dirent_set_file_type(dir, filetype); @@ -313,11 +313,11 @@ static errcode_t ext2fs_inline_data_convert_dir(ext2_filsys fs, ext2_ino_t ino, /* * Adjust the last rec_len */ - offset = EXT2_DIR_REC_LEN(1) + EXT2_DIR_REC_LEN(2); + offset = EXT2_DIR_NAME_LEN(1) + EXT2_DIR_NAME_LEN(2); dir = (struct ext2_dir_entry *) (bbuf + offset); memcpy(bbuf + offset, ibuf + EXT4_INLINE_DATA_DOTDOT_SIZE, size - EXT4_INLINE_DATA_DOTDOT_SIZE); - size += EXT2_DIR_REC_LEN(1) + EXT2_DIR_REC_LEN(2) - + size += EXT2_DIR_NAME_LEN(1) + EXT2_DIR_NAME_LEN(2) - EXT4_INLINE_DATA_DOTDOT_SIZE; do { diff --git a/lib/ext2fs/lfsck.h b/lib/ext2fs/lfsck.h new file mode 100644 index 0000000..6a49042 --- /dev/null +++ b/lib/ext2fs/lfsck.h @@ -0,0 +1,39 @@ +#ifndef LFSCK_H +#define LFSCK_H + +/* This is unfortunately needed for older lustre_user.h to be usable */ +#define LASSERT(cond) do { } while (0) + +#ifdef HAVE_LUSTRE_LUSTREAPI_H +#include +#elif HAVE_LUSTRE_LIBLUSTREAPI_H +#include +#endif + +#ifndef DFID +#define DFID "[%#llx:0x%x:0x%x]" +#define PFID(fid) (unsigned long long)fid_seq(fid), fid_oid(fid), fid_ver(fid) +struct lu_fid { + __u64 f_seq; + __u32 f_oid; + __u32 f_ver; +}; +#endif /* !DFID */ + +/* Unfortunately, neither the 1.8 or 2.x lustre_idl.h file is suitable + * for inclusion by userspace programs because of external dependencies. + * Define the minimum set of replacement functions here until that is fixed. */ +#ifndef HAVE_LUSTRE_LUSTRE_IDL_H +#define fid_seq(fid) ((fid)->f_seq) +#define fid_oid(fid) ((fid)->f_oid) +#define fid_ver(fid) ((fid)->f_ver) + +static inline void fid_be_to_cpu(struct lu_fid *dst, struct lu_fid *src) +{ + dst->f_seq = ext2fs_be64_to_cpu(src->f_seq); + dst->f_oid = ext2fs_be32_to_cpu(src->f_oid); + dst->f_ver = ext2fs_be32_to_cpu(src->f_ver); +} +#endif + +#endif /* LFSCK_H */ diff --git a/lib/ext2fs/link.c b/lib/ext2fs/link.c index a2c34ac..a5ed3de 100644 --- a/lib/ext2fs/link.c +++ b/lib/ext2fs/link.c @@ -196,7 +196,7 @@ static int link_proc(ext2_ino_t dir EXT2FS_ATTR((unused)), if (ls->done) return DIRENT_ABORT; - rec_len = EXT2_DIR_REC_LEN(ls->namelen); + rec_len = EXT2_DIR_NAME_LEN(ls->namelen); ls->err = ext2fs_get_rec_len(ls->fs, dirent, &curr_rec_len); if (ls->err) @@ -225,7 +225,7 @@ static int link_proc(ext2_ino_t dir EXT2FS_ATTR((unused)), * truncate it and return. */ if (dirent->inode) { - min_rec_len = EXT2_DIR_REC_LEN(ext2fs_dirent_name_len(dirent)); + min_rec_len = EXT2_DIR_REC_LEN(dirent); if (curr_rec_len < (min_rec_len + rec_len)) return ret; rec_len = curr_rec_len - min_rec_len; @@ -253,7 +253,7 @@ static int link_proc(ext2_ino_t dir EXT2FS_ATTR((unused)), ext2fs_dirent_set_name_len(dirent, ls->namelen); strncpy(dirent->name, ls->name, ls->namelen); if (ext2fs_has_feature_filetype(ls->sb)) - ext2fs_dirent_set_file_type(dirent, ls->flags & 0x7); + ext2fs_dirent_set_file_type(dirent, ls->flags & EXT2_FT_MASK); ls->done++; return DIRENT_ABORT|DIRENT_CHANGED; @@ -330,7 +330,7 @@ static errcode_t dx_move_dirents(ext2_filsys fs, struct dx_hash_map *map, for (i = 0; i < count; i++) { de = from + map[i].off; - rec_len = EXT2_DIR_REC_LEN(ext2fs_dirent_name_len(de)); + rec_len = EXT2_DIR_REC_LEN(de); memcpy(to, de, rec_len); retval = ext2fs_set_rec_len(fs, rec_len, to); if (retval) diff --git a/lib/ext2fs/newdir.c b/lib/ext2fs/newdir.c index 7f47285..f168d66 100644 --- a/lib/ext2fs/newdir.c +++ b/lib/ext2fs/newdir.c @@ -64,8 +64,8 @@ errcode_t ext2fs_new_dir_block(ext2_filsys fs, ext2_ino_t dir_ino, ext2fs_dirent_set_name_len(dir, 1); ext2fs_dirent_set_file_type(dir, filetype); dir->name[0] = '.'; - rec_len = (fs->blocksize - csum_size) - EXT2_DIR_REC_LEN(1); - dir->rec_len = EXT2_DIR_REC_LEN(1); + rec_len = (fs->blocksize - csum_size) - EXT2_DIR_NAME_LEN(1); + dir->rec_len = EXT2_DIR_NAME_LEN(1); /* * Set up entry for '..' diff --git a/misc/mke2fs.c b/misc/mke2fs.c index afbcf48..2553290 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -1163,6 +1163,7 @@ static __u32 ok_features[3] = { EXT4_FEATURE_INCOMPAT_FLEX_BG| EXT4_FEATURE_INCOMPAT_EA_INODE| EXT4_FEATURE_INCOMPAT_MMP | + EXT4_FEATURE_INCOMPAT_DIRDATA| EXT4_FEATURE_INCOMPAT_64BIT| EXT4_FEATURE_INCOMPAT_INLINE_DATA| EXT4_FEATURE_INCOMPAT_ENCRYPT | @@ -3049,6 +3050,19 @@ int main (int argc, char *argv[]) exit(1); } + if (ext2fs_has_feature_dirdata(fs->super)) { + if (ext2fs_has_feature_inline_data(fs->super)) { + printf("%s", _("The dirdata feature can not enabled " + "with inline data feature.\n")); + exit(1); + } + if (ext2fs_has_feature_casefold(fs->super)) { + printf("%s", _("The dirdata feature can not enabled " + "with casefold feature.\n")); + exit(1); + } + } + /* Calculate journal blocks */ if (!journal_device && ((journal_size) || ext2fs_has_feature_journal(&fs_param))) diff --git a/misc/tune2fs.c b/misc/tune2fs.c index f739f16..e518ea9 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -159,6 +159,7 @@ static __u32 ok_features[3] = { EXT4_FEATURE_INCOMPAT_FLEX_BG | EXT4_FEATURE_INCOMPAT_EA_INODE| EXT4_FEATURE_INCOMPAT_MMP | + EXT4_FEATURE_INCOMPAT_DIRDATA | EXT4_FEATURE_INCOMPAT_64BIT | EXT4_FEATURE_INCOMPAT_ENCRYPT | EXT4_FEATURE_INCOMPAT_CSUM_SEED | @@ -188,6 +189,7 @@ static __u32 clear_ok_features[3] = { EXT2_FEATURE_INCOMPAT_FILETYPE | EXT4_FEATURE_INCOMPAT_FLEX_BG | EXT4_FEATURE_INCOMPAT_MMP | + EXT4_FEATURE_INCOMPAT_DIRDATA | EXT4_FEATURE_INCOMPAT_64BIT | EXT4_FEATURE_INCOMPAT_CSUM_SEED, /* R/O compat */ @@ -1477,6 +1479,11 @@ mmp_error: } if (FEATURE_ON(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_CASEFOLD)) { + if (ext2fs_has_feature_dirdata(sb)) { + fputs(_("Can not enable casefold feature on " + "filesystem has dirdata.\n"), stderr); + return 1; + } if (mount_flags & EXT2_MF_MOUNTED) { fputs(_("The casefold feature may only be enabled when " "the filesystem is unmounted.\n"), stderr); @@ -1521,6 +1528,25 @@ mmp_error: } } + if (FEATURE_ON(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_DIRDATA)) { + if (ext2fs_has_feature_inline_data(sb)) { + fputs(_("Can not enable dirdata feature on " + "filesystem has inline_data.\n"), stderr); + return 1; + } + if (ext2fs_has_feature_casefold(sb)) { + fputs(_("Can not enable dirdata feature on " + "filesystem has casefold.\n"), stderr); + return 1; + } + if (FEATURE_ON(E2P_FEATURE_INCOMPAT, + EXT4_FEATURE_INCOMPAT_CASEFOLD)) { + fputs(_("Can not enable dirdata feature with" + "casefold feature.\n"), stderr); + return 1; + } + } + if (sb->s_rev_level == EXT2_GOOD_OLD_REV && (sb->s_feature_compat || sb->s_feature_ro_compat || sb->s_feature_incompat)) diff --git a/tests/f_dir_optimize/expect.1 b/tests/f_dir_optimize/expect.1 new file mode 100644 index 0000000..4457fa7 --- /dev/null +++ b/tests/f_dir_optimize/expect.1 @@ -0,0 +1,511 @@ + + 94 40755 (18) 0 0 4096 25-Aug-2012 06:09 fid:[0x5e:0xf6d09ca7:0x0] .. + 105 40755 (18) 0 0 36864 25-Aug-2012 06:09 fid:[0x200000400:0x1:0x0] . + 106 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2:0x0] file0 + 107 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3:0x0] file1 + 108 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4:0x0] file2 + 109 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5:0x0] file3 + 110 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6:0x0] file4 + 111 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7:0x0] file5 + 112 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8:0x0] file6 + 113 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9:0x0] file7 + 114 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa:0x0] file8 + 115 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb:0x0] file9 + 116 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc:0x0] file10 + 117 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd:0x0] file11 + 118 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe:0x0] file12 + 119 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf:0x0] file13 + 120 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10:0x0] file14 + 121 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11:0x0] file15 + 122 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12:0x0] file16 + 123 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13:0x0] file17 + 124 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14:0x0] file18 + 125 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15:0x0] file19 + 126 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16:0x0] file20 + 127 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17:0x0] file21 + 128 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18:0x0] file22 + 129 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19:0x0] file23 + 130 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a:0x0] file24 + 131 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b:0x0] file25 + 132 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c:0x0] file26 + 133 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d:0x0] file27 + 134 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e:0x0] file28 + 135 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f:0x0] file29 + 136 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x20:0x0] file30 + 137 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x21:0x0] file31 + 138 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x22:0x0] file32 + 139 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x23:0x0] file33 + 140 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x24:0x0] file34 + 141 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x25:0x0] file35 + 142 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x26:0x0] file36 + 143 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x27:0x0] file37 + 144 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x28:0x0] file38 + 145 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x29:0x0] file39 + 146 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2a:0x0] file40 + 147 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2b:0x0] file41 + 148 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2c:0x0] file42 + 149 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2d:0x0] file43 + 150 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2e:0x0] file44 + 151 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2f:0x0] file45 + 152 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x30:0x0] file46 + 153 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x31:0x0] file47 + 154 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x32:0x0] file48 + 155 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x33:0x0] file49 + 156 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x34:0x0] file50 + 157 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x35:0x0] file51 + 158 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x36:0x0] file52 + 159 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x37:0x0] file53 + 160 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x38:0x0] file54 + 161 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x39:0x0] file55 + 162 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3a:0x0] file56 + 163 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3b:0x0] file57 + 164 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3c:0x0] file58 + 165 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3d:0x0] file59 + 166 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3e:0x0] file60 + 167 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3f:0x0] file61 + 168 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x40:0x0] file62 + 169 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x41:0x0] file63 + 170 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x42:0x0] file64 + 171 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x43:0x0] file65 + 172 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x44:0x0] file66 + 173 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x45:0x0] file67 + 174 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x46:0x0] file68 + 175 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x47:0x0] file69 + 176 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x48:0x0] file70 + 177 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x49:0x0] file71 + 178 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4a:0x0] file72 + 179 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4b:0x0] file73 + 180 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4c:0x0] file74 + 181 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4d:0x0] file75 + 182 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4e:0x0] file76 + 183 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4f:0x0] file77 + 184 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x50:0x0] file78 + 185 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x51:0x0] file79 + 186 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x52:0x0] file80 + 187 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x53:0x0] file81 + 188 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x54:0x0] file82 + 189 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x55:0x0] file83 + 190 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x56:0x0] file84 + 191 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x57:0x0] file85 + 192 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x58:0x0] file86 + 193 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x59:0x0] file87 + 194 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5a:0x0] file88 + 195 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5b:0x0] file89 + 196 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5c:0x0] file90 + 197 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5d:0x0] file91 + 198 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5e:0x0] file92 + 199 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5f:0x0] file93 + 200 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x60:0x0] file94 + 201 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x61:0x0] file95 + 202 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x62:0x0] file96 + 203 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x63:0x0] file97 + 204 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x64:0x0] file98 + 205 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x65:0x0] file99 + 206 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x66:0x0] file100 + 207 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x67:0x0] file101 + 208 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x68:0x0] file102 + 209 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x69:0x0] file103 + 210 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6a:0x0] file104 + 211 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6b:0x0] file105 + 212 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6c:0x0] file106 + 213 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6d:0x0] file107 + 214 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6e:0x0] file108 + 215 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6f:0x0] file109 + 216 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x70:0x0] file110 + 217 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x71:0x0] file111 + 218 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x72:0x0] file112 + 219 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x73:0x0] file113 + 220 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x74:0x0] file114 + 221 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x75:0x0] file115 + 222 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x76:0x0] file116 + 223 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x77:0x0] file117 + 224 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x78:0x0] file118 + 225 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x79:0x0] file119 + 226 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7a:0x0] file120 + 227 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7b:0x0] file121 + 228 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7c:0x0] file122 + 229 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7d:0x0] file123 + 230 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7e:0x0] file124 + 231 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7f:0x0] file125 + 232 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x80:0x0] file126 + 233 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x81:0x0] file127 + 234 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x82:0x0] file128 + 235 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x83:0x0] file129 + 236 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x84:0x0] file130 + 237 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x85:0x0] file131 + 238 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x86:0x0] file132 + 239 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x87:0x0] file133 + 240 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x88:0x0] file134 + 241 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x89:0x0] file135 + 242 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8a:0x0] file136 + 243 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8b:0x0] file137 + 244 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8c:0x0] file138 + 245 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8d:0x0] file139 + 246 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8e:0x0] file140 + 247 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8f:0x0] file141 + 248 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x90:0x0] file142 + 249 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x91:0x0] file143 + 250 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x92:0x0] file144 + 251 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x93:0x0] file145 + 252 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x94:0x0] file146 + 253 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x95:0x0] file147 + 254 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x96:0x0] file148 + 255 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x97:0x0] file149 + 256 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x98:0x0] file150 + 257 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x99:0x0] file151 + 258 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9a:0x0] file152 + 259 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9b:0x0] file153 + 260 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9c:0x0] file154 + 261 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9d:0x0] file155 + 262 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9e:0x0] file156 + 263 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9f:0x0] file157 + 264 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa0:0x0] file158 + 265 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa1:0x0] file159 + 266 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa2:0x0] file160 + 267 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa3:0x0] file161 + 268 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa4:0x0] file162 + 269 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa5:0x0] file163 + 270 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa6:0x0] file164 + 271 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa7:0x0] file165 + 272 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa8:0x0] file166 + 273 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa9:0x0] file167 + 274 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xaa:0x0] file168 + 275 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xab:0x0] file169 + 276 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xac:0x0] file170 + 277 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xad:0x0] file171 + 278 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xae:0x0] file172 + 279 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xaf:0x0] file173 + 280 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb0:0x0] file174 + 281 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb1:0x0] file175 + 282 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb2:0x0] file176 + 283 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb3:0x0] file177 + 284 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb4:0x0] file178 + 285 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb5:0x0] file179 + 286 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb6:0x0] file180 + 287 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb7:0x0] file181 + 288 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb8:0x0] file182 + 289 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb9:0x0] file183 + 290 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xba:0x0] file184 + 291 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbb:0x0] file185 + 292 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbc:0x0] file186 + 293 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbd:0x0] file187 + 294 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbe:0x0] file188 + 295 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbf:0x0] file189 + 296 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc0:0x0] file190 + 297 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc1:0x0] file191 + 298 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc2:0x0] file192 + 299 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc3:0x0] file193 + 300 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc4:0x0] file194 + 301 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc5:0x0] file195 + 302 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc6:0x0] file196 + 303 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc7:0x0] file197 + 304 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc8:0x0] file198 + 305 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc9:0x0] file199 + 306 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xca:0x0] file200 + 307 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcb:0x0] file201 + 308 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcc:0x0] file202 + 309 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcd:0x0] file203 + 310 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xce:0x0] file204 + 311 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcf:0x0] file205 + 312 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd0:0x0] file206 + 313 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd1:0x0] file207 + 314 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd2:0x0] file208 + 315 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd3:0x0] file209 + 316 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd4:0x0] file210 + 317 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd5:0x0] file211 + 318 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd6:0x0] file212 + 319 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd7:0x0] file213 + 320 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd8:0x0] file214 + 321 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd9:0x0] file215 + 322 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xda:0x0] file216 + 323 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdb:0x0] file217 + 324 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdc:0x0] file218 + 325 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdd:0x0] file219 + 326 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xde:0x0] file220 + 327 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdf:0x0] file221 + 328 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe0:0x0] file222 + 329 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe1:0x0] file223 + 330 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe2:0x0] file224 + 331 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe3:0x0] file225 + 332 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe4:0x0] file226 + 333 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe5:0x0] file227 + 334 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe6:0x0] file228 + 335 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe7:0x0] file229 + 336 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe8:0x0] file230 + 337 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe9:0x0] file231 + 338 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xea:0x0] file232 + 339 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xeb:0x0] file233 + 340 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xec:0x0] file234 + 341 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xed:0x0] file235 + 342 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xee:0x0] file236 + 343 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xef:0x0] file237 + 344 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf0:0x0] file238 + 345 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf1:0x0] file239 + 346 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf2:0x0] file240 + 347 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf3:0x0] file241 + 348 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf4:0x0] file242 + 349 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf5:0x0] file243 + 350 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf6:0x0] file244 + 351 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf7:0x0] file245 + 352 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf8:0x0] file246 + 353 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf9:0x0] file247 + 354 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfa:0x0] file248 + 355 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfb:0x0] file249 + 356 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfc:0x0] file250 + 357 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfd:0x0] file251 + 358 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfe:0x0] file252 + 359 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xff:0x0] file253 + 360 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x100:0x0] file254 + 361 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x101:0x0] file255 + 362 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x102:0x0] file256 + 363 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x103:0x0] file257 + 364 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x104:0x0] file258 + 365 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x105:0x0] file259 + 366 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x106:0x0] file260 + 367 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x107:0x0] file261 + 368 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x108:0x0] file262 + 369 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x109:0x0] file263 + 370 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10a:0x0] file264 + 371 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10b:0x0] file265 + 372 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10c:0x0] file266 + 373 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10d:0x0] file267 + 374 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10e:0x0] file268 + 375 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10f:0x0] file269 + 376 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x110:0x0] file270 + 377 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x111:0x0] file271 + 378 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x112:0x0] file272 + 379 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x113:0x0] file273 + 380 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x114:0x0] file274 + 381 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x115:0x0] file275 + 382 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x116:0x0] file276 + 383 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x117:0x0] file277 + 384 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x118:0x0] file278 + 385 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x119:0x0] file279 + 386 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11a:0x0] file280 + 387 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11b:0x0] file281 + 388 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11c:0x0] file282 + 389 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11d:0x0] file283 + 390 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11e:0x0] file284 + 391 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11f:0x0] file285 + 392 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x120:0x0] file286 + 393 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x121:0x0] file287 + 394 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x122:0x0] file288 + 395 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x123:0x0] file289 + 396 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x124:0x0] file290 + 397 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x125:0x0] file291 + 398 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x126:0x0] file292 + 399 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x127:0x0] file293 + 400 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x128:0x0] file294 + 401 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x129:0x0] file295 + 402 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12a:0x0] file296 + 403 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12b:0x0] file297 + 404 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12c:0x0] file298 + 405 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12d:0x0] file299 + 406 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12e:0x0] file300 + 407 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12f:0x0] file301 + 408 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x130:0x0] file302 + 409 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x131:0x0] file303 + 410 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x132:0x0] file304 + 411 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x133:0x0] file305 + 412 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x134:0x0] file306 + 413 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x135:0x0] file307 + 414 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x136:0x0] file308 + 415 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x137:0x0] file309 + 416 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x138:0x0] file310 + 417 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x139:0x0] file311 + 418 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13a:0x0] file312 + 419 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13b:0x0] file313 + 420 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13c:0x0] file314 + 421 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13d:0x0] file315 + 422 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13e:0x0] file316 + 423 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13f:0x0] file317 + 424 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x140:0x0] file318 + 425 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x141:0x0] file319 + 426 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x142:0x0] file320 + 427 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x143:0x0] file321 + 428 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x144:0x0] file322 + 429 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x145:0x0] file323 + 430 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x146:0x0] file324 + 431 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x147:0x0] file325 + 432 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x148:0x0] file326 + 433 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x149:0x0] file327 + 434 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14a:0x0] file328 + 435 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14b:0x0] file329 + 436 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14c:0x0] file330 + 437 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14d:0x0] file331 + 438 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14e:0x0] file332 + 439 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14f:0x0] file333 + 440 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x150:0x0] file334 + 441 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x151:0x0] file335 + 442 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x152:0x0] file336 + 443 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x153:0x0] file337 + 444 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x154:0x0] file338 + 445 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x155:0x0] file339 + 446 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x156:0x0] file340 + 447 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x157:0x0] file341 + 448 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x158:0x0] file342 + 449 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x159:0x0] file343 + 450 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15a:0x0] file344 + 451 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15b:0x0] file345 + 452 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15c:0x0] file346 + 453 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15d:0x0] file347 + 454 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15e:0x0] file348 + 455 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15f:0x0] file349 + 456 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x160:0x0] file350 + 457 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x161:0x0] file351 + 458 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x162:0x0] file352 + 459 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x163:0x0] file353 + 460 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x164:0x0] file354 + 461 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x165:0x0] file355 + 462 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x166:0x0] file356 + 463 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x167:0x0] file357 + 464 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x168:0x0] file358 + 465 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x169:0x0] file359 + 466 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16a:0x0] file360 + 467 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16b:0x0] file361 + 468 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16c:0x0] file362 + 469 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16d:0x0] file363 + 470 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16e:0x0] file364 + 471 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16f:0x0] file365 + 472 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x170:0x0] file366 + 473 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x171:0x0] file367 + 474 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x172:0x0] file368 + 475 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x173:0x0] file369 + 476 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x174:0x0] file370 + 477 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x175:0x0] file371 + 478 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x176:0x0] file372 + 479 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x177:0x0] file373 + 480 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x178:0x0] file374 + 481 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x179:0x0] file375 + 482 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17a:0x0] file376 + 483 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17b:0x0] file377 + 484 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17c:0x0] file378 + 485 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17d:0x0] file379 + 486 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17e:0x0] file380 + 487 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17f:0x0] file381 + 488 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x180:0x0] file382 + 489 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x181:0x0] file383 + 490 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x182:0x0] file384 + 491 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x183:0x0] file385 + 492 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x184:0x0] file386 + 493 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x185:0x0] file387 + 494 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x186:0x0] file388 + 495 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x187:0x0] file389 + 496 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x188:0x0] file390 + 497 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x189:0x0] file391 + 498 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18a:0x0] file392 + 499 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18b:0x0] file393 + 500 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18c:0x0] file394 + 501 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18d:0x0] file395 + 502 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18e:0x0] file396 + 503 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18f:0x0] file397 + 504 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x190:0x0] file398 + 505 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x191:0x0] file399 + 506 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x192:0x0] file400 + 507 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x193:0x0] file401 + 508 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x194:0x0] file402 + 509 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x195:0x0] file403 + 510 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x196:0x0] file404 + 511 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x197:0x0] file405 + 512 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x198:0x0] file406 + 513 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x199:0x0] file407 + 514 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19a:0x0] file408 + 515 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19b:0x0] file409 + 516 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19c:0x0] file410 + 517 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19d:0x0] file411 + 518 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19e:0x0] file412 + 519 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19f:0x0] file413 + 520 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a0:0x0] file414 + 521 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a1:0x0] file415 + 522 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a2:0x0] file416 + 523 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a3:0x0] file417 + 524 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a4:0x0] file418 + 525 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a5:0x0] file419 + 526 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a6:0x0] file420 + 527 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a7:0x0] file421 + 528 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a8:0x0] file422 + 529 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a9:0x0] file423 + 530 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1aa:0x0] file424 + 531 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ab:0x0] file425 + 532 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ac:0x0] file426 + 533 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ad:0x0] file427 + 534 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ae:0x0] file428 + 535 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1af:0x0] file429 + 536 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b0:0x0] file430 + 537 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b1:0x0] file431 + 538 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b2:0x0] file432 + 539 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b3:0x0] file433 + 540 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b4:0x0] file434 + 541 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b5:0x0] file435 + 542 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b6:0x0] file436 + 543 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b7:0x0] file437 + 544 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b8:0x0] file438 + 545 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b9:0x0] file439 + 546 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ba:0x0] file440 + 547 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bb:0x0] file441 + 548 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bc:0x0] file442 + 549 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bd:0x0] file443 + 550 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1be:0x0] file444 + 551 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bf:0x0] file445 + 552 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c0:0x0] file446 + 553 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c1:0x0] file447 + 554 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c2:0x0] file448 + 555 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c3:0x0] file449 + 556 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c4:0x0] file450 + 557 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c5:0x0] file451 + 558 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c6:0x0] file452 + 559 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c7:0x0] file453 + 560 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c8:0x0] file454 + 561 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c9:0x0] file455 + 562 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ca:0x0] file456 + 563 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cb:0x0] file457 + 564 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cc:0x0] file458 + 565 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cd:0x0] file459 + 566 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ce:0x0] file460 + 567 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cf:0x0] file461 + 568 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d0:0x0] file462 + 569 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d1:0x0] file463 + 570 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d2:0x0] file464 + 571 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d3:0x0] file465 + 572 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d4:0x0] file466 + 573 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d5:0x0] file467 + 574 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d6:0x0] file468 + 575 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d7:0x0] file469 + 576 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d8:0x0] file470 + 577 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d9:0x0] file471 + 578 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1da:0x0] file472 + 579 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1db:0x0] file473 + 580 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1dc:0x0] file474 + 581 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1dd:0x0] file475 + 582 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1de:0x0] file476 + 583 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1df:0x0] file477 + 584 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e0:0x0] file478 + 585 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e1:0x0] file479 + 586 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e2:0x0] file480 + 587 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e3:0x0] file481 + 588 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e4:0x0] file482 + 589 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e5:0x0] file483 + 590 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e6:0x0] file484 + 591 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e7:0x0] file485 + 592 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e8:0x0] file486 + 593 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e9:0x0] file487 + 594 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ea:0x0] file488 + 595 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1eb:0x0] file489 + 596 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ec:0x0] file490 + 597 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ed:0x0] file491 + 598 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ee:0x0] file492 + 599 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ef:0x0] file493 + 600 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f0:0x0] file494 + 601 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f1:0x0] file495 + 602 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f2:0x0] file496 + 603 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f3:0x0] file497 + 604 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f4:0x0] file498 + 605 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f5:0x0] file499 + 606 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f6:0x0] file500 + 607 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f7:0x0] file501 + 608 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f8:0x0] file502 + 609 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f9:0x0] file503 + 610 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fa:0x0] file504 + 611 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fb:0x0] file505 + 612 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fc:0x0] file506 + 613 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fd:0x0] file507 diff --git a/tests/f_dir_optimize/expect.2 b/tests/f_dir_optimize/expect.2 new file mode 100644 index 0000000..3649a36 --- /dev/null +++ b/tests/f_dir_optimize/expect.2 @@ -0,0 +1,511 @@ + + 94 40755 (18) 0 0 4096 25-Aug-2012 06:09 fid:[0x5e:0xf6d09ca7:0x0] .. + 105 40755 (18) 0 0 28672 25-Aug-2012 06:09 fid:[0x200000400:0x1:0x0] . + 106 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2:0x0] file0 + 107 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3:0x0] file1 + 108 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4:0x0] file2 + 109 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5:0x0] file3 + 110 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6:0x0] file4 + 111 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7:0x0] file5 + 112 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8:0x0] file6 + 113 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9:0x0] file7 + 114 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa:0x0] file8 + 115 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb:0x0] file9 + 116 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc:0x0] file10 + 117 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd:0x0] file11 + 118 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe:0x0] file12 + 119 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf:0x0] file13 + 120 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10:0x0] file14 + 121 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11:0x0] file15 + 122 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12:0x0] file16 + 123 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13:0x0] file17 + 124 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14:0x0] file18 + 125 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15:0x0] file19 + 126 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16:0x0] file20 + 127 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17:0x0] file21 + 128 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18:0x0] file22 + 129 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19:0x0] file23 + 130 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a:0x0] file24 + 131 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b:0x0] file25 + 132 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c:0x0] file26 + 133 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d:0x0] file27 + 134 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e:0x0] file28 + 135 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f:0x0] file29 + 136 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x20:0x0] file30 + 137 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x21:0x0] file31 + 138 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x22:0x0] file32 + 139 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x23:0x0] file33 + 140 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x24:0x0] file34 + 141 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x25:0x0] file35 + 142 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x26:0x0] file36 + 143 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x27:0x0] file37 + 144 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x28:0x0] file38 + 145 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x29:0x0] file39 + 146 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2a:0x0] file40 + 147 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2b:0x0] file41 + 148 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2c:0x0] file42 + 149 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2d:0x0] file43 + 150 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2e:0x0] file44 + 151 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x2f:0x0] file45 + 152 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x30:0x0] file46 + 153 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x31:0x0] file47 + 154 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x32:0x0] file48 + 155 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x33:0x0] file49 + 156 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x34:0x0] file50 + 157 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x35:0x0] file51 + 158 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x36:0x0] file52 + 159 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x37:0x0] file53 + 160 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x38:0x0] file54 + 161 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x39:0x0] file55 + 162 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3a:0x0] file56 + 163 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3b:0x0] file57 + 164 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3c:0x0] file58 + 165 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3d:0x0] file59 + 166 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3e:0x0] file60 + 167 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x3f:0x0] file61 + 168 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x40:0x0] file62 + 169 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x41:0x0] file63 + 170 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x42:0x0] file64 + 171 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x43:0x0] file65 + 172 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x44:0x0] file66 + 173 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x45:0x0] file67 + 174 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x46:0x0] file68 + 175 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x47:0x0] file69 + 176 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x48:0x0] file70 + 177 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x49:0x0] file71 + 178 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4a:0x0] file72 + 179 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4b:0x0] file73 + 180 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4c:0x0] file74 + 181 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4d:0x0] file75 + 182 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4e:0x0] file76 + 183 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x4f:0x0] file77 + 184 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x50:0x0] file78 + 185 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x51:0x0] file79 + 186 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x52:0x0] file80 + 187 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x53:0x0] file81 + 188 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x54:0x0] file82 + 189 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x55:0x0] file83 + 190 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x56:0x0] file84 + 191 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x57:0x0] file85 + 192 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x58:0x0] file86 + 193 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x59:0x0] file87 + 194 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5a:0x0] file88 + 195 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5b:0x0] file89 + 196 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5c:0x0] file90 + 197 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5d:0x0] file91 + 198 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5e:0x0] file92 + 199 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x5f:0x0] file93 + 200 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x60:0x0] file94 + 201 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x61:0x0] file95 + 202 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x62:0x0] file96 + 203 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x63:0x0] file97 + 204 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x64:0x0] file98 + 205 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x65:0x0] file99 + 206 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x66:0x0] file100 + 207 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x67:0x0] file101 + 208 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x68:0x0] file102 + 209 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x69:0x0] file103 + 210 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6a:0x0] file104 + 211 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6b:0x0] file105 + 212 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6c:0x0] file106 + 213 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6d:0x0] file107 + 214 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6e:0x0] file108 + 215 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x6f:0x0] file109 + 216 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x70:0x0] file110 + 217 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x71:0x0] file111 + 218 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x72:0x0] file112 + 219 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x73:0x0] file113 + 220 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x74:0x0] file114 + 221 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x75:0x0] file115 + 222 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x76:0x0] file116 + 223 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x77:0x0] file117 + 224 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x78:0x0] file118 + 225 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x79:0x0] file119 + 226 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7a:0x0] file120 + 227 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7b:0x0] file121 + 228 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7c:0x0] file122 + 229 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7d:0x0] file123 + 230 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7e:0x0] file124 + 231 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x7f:0x0] file125 + 232 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x80:0x0] file126 + 233 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x81:0x0] file127 + 234 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x82:0x0] file128 + 235 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x83:0x0] file129 + 236 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x84:0x0] file130 + 237 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x85:0x0] file131 + 238 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x86:0x0] file132 + 239 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x87:0x0] file133 + 240 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x88:0x0] file134 + 241 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x89:0x0] file135 + 242 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8a:0x0] file136 + 243 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8b:0x0] file137 + 244 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8c:0x0] file138 + 245 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8d:0x0] file139 + 246 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8e:0x0] file140 + 247 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x8f:0x0] file141 + 248 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x90:0x0] file142 + 249 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x91:0x0] file143 + 250 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x92:0x0] file144 + 251 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x93:0x0] file145 + 252 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x94:0x0] file146 + 253 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x95:0x0] file147 + 254 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x96:0x0] file148 + 255 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x97:0x0] file149 + 256 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x98:0x0] file150 + 257 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x99:0x0] file151 + 258 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9a:0x0] file152 + 259 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9b:0x0] file153 + 260 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9c:0x0] file154 + 261 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9d:0x0] file155 + 262 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9e:0x0] file156 + 263 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x9f:0x0] file157 + 264 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa0:0x0] file158 + 265 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa1:0x0] file159 + 266 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa2:0x0] file160 + 267 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa3:0x0] file161 + 268 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa4:0x0] file162 + 269 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa5:0x0] file163 + 270 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa6:0x0] file164 + 271 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa7:0x0] file165 + 272 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa8:0x0] file166 + 273 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xa9:0x0] file167 + 274 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xaa:0x0] file168 + 275 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xab:0x0] file169 + 276 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xac:0x0] file170 + 277 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xad:0x0] file171 + 278 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xae:0x0] file172 + 279 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xaf:0x0] file173 + 280 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb0:0x0] file174 + 281 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb1:0x0] file175 + 282 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb2:0x0] file176 + 283 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb3:0x0] file177 + 284 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb4:0x0] file178 + 285 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb5:0x0] file179 + 286 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb6:0x0] file180 + 287 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb7:0x0] file181 + 288 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb8:0x0] file182 + 289 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xb9:0x0] file183 + 290 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xba:0x0] file184 + 291 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbb:0x0] file185 + 292 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbc:0x0] file186 + 293 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbd:0x0] file187 + 294 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbe:0x0] file188 + 295 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xbf:0x0] file189 + 296 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc0:0x0] file190 + 297 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc1:0x0] file191 + 298 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc2:0x0] file192 + 299 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc3:0x0] file193 + 300 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc4:0x0] file194 + 301 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc5:0x0] file195 + 302 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc6:0x0] file196 + 303 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc7:0x0] file197 + 304 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc8:0x0] file198 + 305 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xc9:0x0] file199 + 306 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xca:0x0] file200 + 307 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcb:0x0] file201 + 308 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcc:0x0] file202 + 309 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcd:0x0] file203 + 310 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xce:0x0] file204 + 311 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xcf:0x0] file205 + 312 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd0:0x0] file206 + 313 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd1:0x0] file207 + 314 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd2:0x0] file208 + 315 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd3:0x0] file209 + 316 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd4:0x0] file210 + 317 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd5:0x0] file211 + 318 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd6:0x0] file212 + 319 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd7:0x0] file213 + 320 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd8:0x0] file214 + 321 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xd9:0x0] file215 + 322 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xda:0x0] file216 + 323 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdb:0x0] file217 + 324 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdc:0x0] file218 + 325 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdd:0x0] file219 + 326 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xde:0x0] file220 + 327 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xdf:0x0] file221 + 328 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe0:0x0] file222 + 329 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe1:0x0] file223 + 330 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe2:0x0] file224 + 331 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe3:0x0] file225 + 332 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe4:0x0] file226 + 333 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe5:0x0] file227 + 334 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe6:0x0] file228 + 335 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe7:0x0] file229 + 336 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe8:0x0] file230 + 337 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xe9:0x0] file231 + 338 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xea:0x0] file232 + 339 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xeb:0x0] file233 + 340 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xec:0x0] file234 + 341 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xed:0x0] file235 + 342 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xee:0x0] file236 + 343 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xef:0x0] file237 + 344 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf0:0x0] file238 + 345 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf1:0x0] file239 + 346 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf2:0x0] file240 + 347 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf3:0x0] file241 + 348 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf4:0x0] file242 + 349 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf5:0x0] file243 + 350 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf6:0x0] file244 + 351 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf7:0x0] file245 + 352 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf8:0x0] file246 + 353 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xf9:0x0] file247 + 354 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfa:0x0] file248 + 355 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfb:0x0] file249 + 356 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfc:0x0] file250 + 357 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfd:0x0] file251 + 358 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xfe:0x0] file252 + 359 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0xff:0x0] file253 + 360 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x100:0x0] file254 + 361 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x101:0x0] file255 + 362 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x102:0x0] file256 + 363 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x103:0x0] file257 + 364 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x104:0x0] file258 + 365 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x105:0x0] file259 + 366 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x106:0x0] file260 + 367 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x107:0x0] file261 + 368 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x108:0x0] file262 + 369 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x109:0x0] file263 + 370 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10a:0x0] file264 + 371 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10b:0x0] file265 + 372 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10c:0x0] file266 + 373 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10d:0x0] file267 + 374 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10e:0x0] file268 + 375 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x10f:0x0] file269 + 376 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x110:0x0] file270 + 377 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x111:0x0] file271 + 378 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x112:0x0] file272 + 379 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x113:0x0] file273 + 380 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x114:0x0] file274 + 381 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x115:0x0] file275 + 382 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x116:0x0] file276 + 383 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x117:0x0] file277 + 384 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x118:0x0] file278 + 385 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x119:0x0] file279 + 386 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11a:0x0] file280 + 387 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11b:0x0] file281 + 388 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11c:0x0] file282 + 389 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11d:0x0] file283 + 390 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11e:0x0] file284 + 391 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x11f:0x0] file285 + 392 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x120:0x0] file286 + 393 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x121:0x0] file287 + 394 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x122:0x0] file288 + 395 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x123:0x0] file289 + 396 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x124:0x0] file290 + 397 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x125:0x0] file291 + 398 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x126:0x0] file292 + 399 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x127:0x0] file293 + 400 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x128:0x0] file294 + 401 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x129:0x0] file295 + 402 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12a:0x0] file296 + 403 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12b:0x0] file297 + 404 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12c:0x0] file298 + 405 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12d:0x0] file299 + 406 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12e:0x0] file300 + 407 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x12f:0x0] file301 + 408 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x130:0x0] file302 + 409 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x131:0x0] file303 + 410 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x132:0x0] file304 + 411 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x133:0x0] file305 + 412 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x134:0x0] file306 + 413 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x135:0x0] file307 + 414 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x136:0x0] file308 + 415 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x137:0x0] file309 + 416 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x138:0x0] file310 + 417 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x139:0x0] file311 + 418 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13a:0x0] file312 + 419 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13b:0x0] file313 + 420 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13c:0x0] file314 + 421 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13d:0x0] file315 + 422 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13e:0x0] file316 + 423 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x13f:0x0] file317 + 424 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x140:0x0] file318 + 425 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x141:0x0] file319 + 426 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x142:0x0] file320 + 427 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x143:0x0] file321 + 428 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x144:0x0] file322 + 429 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x145:0x0] file323 + 430 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x146:0x0] file324 + 431 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x147:0x0] file325 + 432 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x148:0x0] file326 + 433 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x149:0x0] file327 + 434 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14a:0x0] file328 + 435 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14b:0x0] file329 + 436 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14c:0x0] file330 + 437 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14d:0x0] file331 + 438 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14e:0x0] file332 + 439 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x14f:0x0] file333 + 440 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x150:0x0] file334 + 441 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x151:0x0] file335 + 442 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x152:0x0] file336 + 443 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x153:0x0] file337 + 444 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x154:0x0] file338 + 445 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x155:0x0] file339 + 446 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x156:0x0] file340 + 447 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x157:0x0] file341 + 448 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x158:0x0] file342 + 449 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x159:0x0] file343 + 450 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15a:0x0] file344 + 451 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15b:0x0] file345 + 452 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15c:0x0] file346 + 453 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15d:0x0] file347 + 454 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15e:0x0] file348 + 455 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x15f:0x0] file349 + 456 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x160:0x0] file350 + 457 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x161:0x0] file351 + 458 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x162:0x0] file352 + 459 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x163:0x0] file353 + 460 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x164:0x0] file354 + 461 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x165:0x0] file355 + 462 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x166:0x0] file356 + 463 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x167:0x0] file357 + 464 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x168:0x0] file358 + 465 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x169:0x0] file359 + 466 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16a:0x0] file360 + 467 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16b:0x0] file361 + 468 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16c:0x0] file362 + 469 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16d:0x0] file363 + 470 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16e:0x0] file364 + 471 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x16f:0x0] file365 + 472 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x170:0x0] file366 + 473 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x171:0x0] file367 + 474 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x172:0x0] file368 + 475 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x173:0x0] file369 + 476 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x174:0x0] file370 + 477 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x175:0x0] file371 + 478 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x176:0x0] file372 + 479 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x177:0x0] file373 + 480 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x178:0x0] file374 + 481 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x179:0x0] file375 + 482 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17a:0x0] file376 + 483 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17b:0x0] file377 + 484 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17c:0x0] file378 + 485 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17d:0x0] file379 + 486 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17e:0x0] file380 + 487 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x17f:0x0] file381 + 488 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x180:0x0] file382 + 489 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x181:0x0] file383 + 490 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x182:0x0] file384 + 491 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x183:0x0] file385 + 492 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x184:0x0] file386 + 493 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x185:0x0] file387 + 494 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x186:0x0] file388 + 495 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x187:0x0] file389 + 496 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x188:0x0] file390 + 497 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x189:0x0] file391 + 498 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18a:0x0] file392 + 499 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18b:0x0] file393 + 500 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18c:0x0] file394 + 501 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18d:0x0] file395 + 502 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18e:0x0] file396 + 503 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x18f:0x0] file397 + 504 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x190:0x0] file398 + 505 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x191:0x0] file399 + 506 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x192:0x0] file400 + 507 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x193:0x0] file401 + 508 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x194:0x0] file402 + 509 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x195:0x0] file403 + 510 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x196:0x0] file404 + 511 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x197:0x0] file405 + 512 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x198:0x0] file406 + 513 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x199:0x0] file407 + 514 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19a:0x0] file408 + 515 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19b:0x0] file409 + 516 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19c:0x0] file410 + 517 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19d:0x0] file411 + 518 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19e:0x0] file412 + 519 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x19f:0x0] file413 + 520 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a0:0x0] file414 + 521 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a1:0x0] file415 + 522 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a2:0x0] file416 + 523 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a3:0x0] file417 + 524 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a4:0x0] file418 + 525 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a5:0x0] file419 + 526 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a6:0x0] file420 + 527 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a7:0x0] file421 + 528 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a8:0x0] file422 + 529 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1a9:0x0] file423 + 530 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1aa:0x0] file424 + 531 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ab:0x0] file425 + 532 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ac:0x0] file426 + 533 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ad:0x0] file427 + 534 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ae:0x0] file428 + 535 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1af:0x0] file429 + 536 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b0:0x0] file430 + 537 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b1:0x0] file431 + 538 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b2:0x0] file432 + 539 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b3:0x0] file433 + 540 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b4:0x0] file434 + 541 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b5:0x0] file435 + 542 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b6:0x0] file436 + 543 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b7:0x0] file437 + 544 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b8:0x0] file438 + 545 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1b9:0x0] file439 + 546 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ba:0x0] file440 + 547 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bb:0x0] file441 + 548 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bc:0x0] file442 + 549 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bd:0x0] file443 + 550 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1be:0x0] file444 + 551 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1bf:0x0] file445 + 552 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c0:0x0] file446 + 553 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c1:0x0] file447 + 554 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c2:0x0] file448 + 555 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c3:0x0] file449 + 556 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c4:0x0] file450 + 557 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c5:0x0] file451 + 558 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c6:0x0] file452 + 559 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c7:0x0] file453 + 560 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c8:0x0] file454 + 561 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1c9:0x0] file455 + 562 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ca:0x0] file456 + 563 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cb:0x0] file457 + 564 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cc:0x0] file458 + 565 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cd:0x0] file459 + 566 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ce:0x0] file460 + 567 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1cf:0x0] file461 + 568 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d0:0x0] file462 + 569 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d1:0x0] file463 + 570 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d2:0x0] file464 + 571 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d3:0x0] file465 + 572 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d4:0x0] file466 + 573 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d5:0x0] file467 + 574 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d6:0x0] file468 + 575 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d7:0x0] file469 + 576 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d8:0x0] file470 + 577 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1d9:0x0] file471 + 578 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1da:0x0] file472 + 579 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1db:0x0] file473 + 580 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1dc:0x0] file474 + 581 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1dd:0x0] file475 + 582 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1de:0x0] file476 + 583 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1df:0x0] file477 + 584 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e0:0x0] file478 + 585 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e1:0x0] file479 + 586 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e2:0x0] file480 + 587 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e3:0x0] file481 + 588 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e4:0x0] file482 + 589 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e5:0x0] file483 + 590 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e6:0x0] file484 + 591 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e7:0x0] file485 + 592 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e8:0x0] file486 + 593 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1e9:0x0] file487 + 594 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ea:0x0] file488 + 595 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1eb:0x0] file489 + 596 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ec:0x0] file490 + 597 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ed:0x0] file491 + 598 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ee:0x0] file492 + 599 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1ef:0x0] file493 + 600 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f0:0x0] file494 + 601 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f1:0x0] file495 + 602 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f2:0x0] file496 + 603 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f3:0x0] file497 + 604 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f4:0x0] file498 + 605 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f5:0x0] file499 + 606 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f6:0x0] file500 + 607 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f7:0x0] file501 + 608 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f8:0x0] file502 + 609 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1f9:0x0] file503 + 610 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fa:0x0] file504 + 611 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fb:0x0] file505 + 612 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fc:0x0] file506 + 613 100644 (17) 0 0 0 25-Aug-2012 06:09 fid:[0x200000400:0x1fd:0x0] file507 diff --git a/tests/f_dir_optimize/image.gz b/tests/f_dir_optimize/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..d457d3b67019f0047fd626bc90ee55f2724a73c6 GIT binary patch literal 102520 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
  • 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 $TMPFILE + +$DEBUGFS -R 'ls -lD /ROOT/testdir' $TMPFILE 2>&1 | tail -n +2 | \ + sort > $test_name.1.log + +cmp -s $test_dir/expect.1 $test_name.1.log +status1=$? + +$FSCK $FSCK_OPT -N test_filesys $TMPFILE > /dev/null 2>&1 + +$DEBUGFS -R 'ls -lD /ROOT/testdir' $TMPFILE 2>&1 | tail -n +2 | \ + sort > $test_name.2.log +cmp -s $test_dir/expect.2 $test_name.2.log +status2=$? + +if [ "$status1" -eq 0 -a "$status2" -eq 0 ]; then + echo "$test_name: $test_description: ok" + touch $test_name.ok +else + echo "$test_name: $test_description: failed" + [ $status1 -ne 0 ] && + diff $DIFF_OPTS $test_dir/expect.1 $test_name.1.log \ + >> $test_name.failed + [ $status2 -ne 0 ] && + diff $DIFF_OPTS $test_dir/expect.2 $test_name.2.log \ + >> $test_name.failed +fi + +if [ "$SKIP_CLEANUP" != "true" ] ; then + unset IMAGE FSCK_OPT + unset SKIP_CLEANUP + unset DESCRIPTION SKIP_UNLINK +fi diff --git a/tests/f_dirdata_optimize/expect.1 b/tests/f_dirdata_optimize/expect.1 new file mode 100644 index 0000000..52368d3 --- /dev/null +++ b/tests/f_dirdata_optimize/expect.1 @@ -0,0 +1,10 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 3A: Optimizing directories +Pass 4: Checking reference counts +Pass 5: Checking group summary information + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 102/4096 files (2.9% non-contiguous), 686/2048 blocks +Exit status is 0 diff --git a/tests/f_dirdata_optimize/expect.2 b/tests/f_dirdata_optimize/expect.2 new file mode 100644 index 0000000..3cf9314 --- /dev/null +++ b/tests/f_dirdata_optimize/expect.2 @@ -0,0 +1,7 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +test_filesys: 102/4096 files (2.9% non-contiguous), 686/2048 blocks +Exit status is 0 diff --git a/tests/f_dirdata_optimize/image.gz b/tests/f_dirdata_optimize/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..fcb7f4f866cea3160b77da4998ec69c0817afebd GIT binary patch literal 32121 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 literal 0 HcmV?d00001 diff --git a/tests/f_dirdata_optimize/name b/tests/f_dirdata_optimize/name new file mode 100644 index 0000000..1649a37 --- /dev/null +++ b/tests/f_dirdata_optimize/name @@ -0,0 +1 @@ +optimize directories with dirdata diff --git a/tests/f_dirdata_optimize/script b/tests/f_dirdata_optimize/script new file mode 100644 index 0000000..52cf88e --- /dev/null +++ b/tests/f_dirdata_optimize/script @@ -0,0 +1,3 @@ +FSCK_OPT="-Dyf" +SECOND_FSCK_OPT="-yf" +. $cmd_dir/run_e2fsck -- 1.8.3.1