diff options
author | robi <robi> | 2012-09-21 18:17:28 +0000 |
---|---|---|
committer | robi <robi> | 2012-09-21 18:17:28 +0000 |
commit | 9acf75eb6172c328c86205bf246dc41637d977b3 (patch) | |
tree | a2a7460b49eae45c7f1b93b7177c136402815aba | |
parent | 253e59bbf380d809985161b5f97162eacdab8d90 (diff) |
Bug: #18730 exception Handling
-rw-r--r-- | src/inode.c | 12 |
1 files changed, 12 insertions, 0 deletions
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) { |