|
@@ -655,9 +655,18 @@ static int ocfs2_mknod_locked(struct ocfs2_super *osb,
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
- return __ocfs2_mknod_locked(dir, inode, dev, new_fe_bh,
|
|
|
|
|
|
+ status = __ocfs2_mknod_locked(dir, inode, dev, new_fe_bh,
|
|
parent_fe_bh, handle, inode_ac,
|
|
parent_fe_bh, handle, inode_ac,
|
|
fe_blkno, suballoc_loc, suballoc_bit);
|
|
fe_blkno, suballoc_loc, suballoc_bit);
|
|
|
|
+ if (status < 0) {
|
|
|
|
+ u64 bg_blkno = ocfs2_which_suballoc_group(fe_blkno, suballoc_bit);
|
|
|
|
+ int tmp = ocfs2_free_suballoc_bits(handle, inode_ac->ac_inode,
|
|
|
|
+ inode_ac->ac_bh, suballoc_bit, bg_blkno, 1);
|
|
|
|
+ if (tmp)
|
|
|
|
+ mlog_errno(tmp);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return status;
|
|
}
|
|
}
|
|
|
|
|
|
static int ocfs2_mkdir(struct inode *dir,
|
|
static int ocfs2_mkdir(struct inode *dir,
|