summaryrefslogtreecommitdiff
path: root/src/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/inode.c')
-rw-r--r--src/inode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/inode.c b/src/inode.c
index 9f8b393..57ca9a1 100644
--- a/src/inode.c
+++ b/src/inode.c
@@ -617,7 +617,8 @@ r_item* get_last_undel_inode(struct ring_buf* buf){
#ifdef DEBUG
printf("UD-Inode %d\n",item->transaction.start);
#endif
- if(! item->inode->i_links_count)
+ if((! item->inode->i_links_count)&&(item->inode->i_ctime)
+ &&(item->inode->i_mode))
item->inode->i_links_count = 1 ;
return item;
}
@@ -648,7 +649,7 @@ r_item* get_last_undel_inode(struct ring_buf* buf){
}
// if (item->inode->i_generation != generation)
// buf->reuse_flag = 1;
- if(! item->inode->i_links_count)
+ if((! item->inode->i_links_count)&&(item->inode->i_ctime)&&(item->inode->i_mode))
item->inode->i_links_count = 1 ;
#ifdef DEBUG
printf("UTD-Inode %d\n",item->transaction.start);
@@ -796,7 +797,7 @@ struct ring_buf* get_j_inode_list(struct ext2_super_block *es, ext2_ino_t inode_
if ( ext2fs_read_inode_full(current_fs, inode_nr, (struct ext2_inode*)inode_buf, pos.size))
goto errout;
inode_pointer = (struct ext2_inode*) inode_buf ;
- if(! inode_pointer->i_dtime){
+ if((! inode_pointer->i_dtime) && inode_pointer->i_ctime){
item = r_item_add(buf);
if ( ! item){
fprintf(stderr,"Error: can not allocate memory for inode\n");