From 9acf75eb6172c328c86205bf246dc41637d977b3 Mon Sep 17 00:00:00 2001 From: robi Date: Fri, 21 Sep 2012 18:17:28 +0000 Subject: Bug: #18730 exception Handling --- src/inode.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/inode.c b/src/inode.c index 88642ac..210752e 100644 --- a/src/inode.c +++ b/src/inode.c @@ -745,6 +745,18 @@ struct ring_buf* get_j_inode_list(struct ext2_super_block *es, ext2_ino_t inode_ #endif continue; } +//Correct d_time anomalies if directory delete process not completed BUG: #18730 + if ((LINUX_S_ISDIR(ext2fs_le16_to_cpu(inode_pointer->i_mode))) && + ext2fs_le32_to_cpu(inode_pointer->i_dtime) && ext2fs_le32_to_cpu(inode_pointer->i_blocks) && + ext2fs_le32_to_cpu(inode_pointer->i_size) && (!ext2fs_le16_to_cpu(inode_pointer->i_links_count)) && + ext2fs_le32_to_cpu(inode_pointer->i_ctime) != ext2fs_le32_to_cpu(inode_pointer->i_dtime)){ + if ( buf->count && LINUX_S_ISDIR(item->inode->i_mode) && item->inode->i_blocks){ + continue; + } + else{ + inode_pointer->i_dtime = 0; + } + } //inode with the same ctime + the same size and links and <= block_count, skipped if (ext2fs_le32_to_cpu(inode_pointer->i_ctime) == ctime){ if (item) { -- cgit v1.2.3