/* * Called at the last iput() if i_nlink is zero. */ void ext2_delete_inode (struct inode * inode) { if (is_bad_inode(inode)) goto no_delete; EXT2_I(inode)->i_dtime = get_seconds(); mark_inode_dirty(inode); ext2_update_inode(inode, inode_needs_sync(inode)); inode->i_size = 0; if (inode->i_blocks) ext2_truncate (inode); ext2_free_inode (inode); return; no_delete: clear_inode(inode); /* We must guarantee clearing of inode... */ }
/* * Called at the last iput() if i_nlink is zero. */ void ext2_delete_inode (struct inode * inode) { lock_kernel(); if (is_bad_inode(inode)) goto no_delete; inode->u.ext2_i.i_dtime = CURRENT_TIME; mark_inode_dirty(inode); ext2_update_inode(inode, IS_SYNC(inode)); inode->i_size = 0; if (inode->i_blocks) ext2_truncate (inode); ext2_free_inode (inode); unlock_kernel(); return; no_delete: unlock_kernel(); clear_inode(inode); /* We must guarantee clearing of inode... */ }