|
@@ -1471,9 +1471,11 @@ static void gfs2_evict_inode(struct inode *inode)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
|
|
|
- if (error)
|
|
|
- goto out_truncate;
|
|
|
+ if (!test_bit(GIF_ALLOC_FAILED, &ip->i_flags)) {
|
|
|
+ error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
|
|
|
+ if (error)
|
|
|
+ goto out_truncate;
|
|
|
+ }
|
|
|
|
|
|
if (test_bit(GIF_INVALID, &ip->i_flags)) {
|
|
|
error = gfs2_inode_refresh(ip);
|
|
@@ -1513,6 +1515,10 @@ static void gfs2_evict_inode(struct inode *inode)
|
|
|
goto out_unlock;
|
|
|
|
|
|
out_truncate:
|
|
|
+ gfs2_log_flush(sdp, ip->i_gl);
|
|
|
+ write_inode_now(inode, 1);
|
|
|
+ gfs2_ail_flush(ip->i_gl);
|
|
|
+
|
|
|
/* Case 2 starts here */
|
|
|
error = gfs2_trans_begin(sdp, 0, sdp->sd_jdesc->jd_blocks);
|
|
|
if (error)
|