ocfs2: no need get dinode bh when zeroing extend
[cascardo/linux.git] / fs / ocfs2 / aops.c
index 44db180..2a618dd 100644 (file)
@@ -706,7 +706,7 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb,
        }
 
        if (append_write) {
-               ret = ocfs2_inode_lock(inode, &di_bh, 1);
+               ret = ocfs2_inode_lock(inode, NULL, 1);
                if (ret < 0) {
                        mlog_errno(ret);
                        goto clean_orphan;
@@ -720,7 +720,6 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb,
                if (ret < 0) {
                        mlog_errno(ret);
                        ocfs2_inode_unlock(inode, 1);
-                       brelse(di_bh);
                        goto clean_orphan;
                }
 
@@ -728,13 +727,10 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb,
                if (is_overwrite < 0) {
                        mlog_errno(is_overwrite);
                        ocfs2_inode_unlock(inode, 1);
-                       brelse(di_bh);
                        goto clean_orphan;
                }
 
                ocfs2_inode_unlock(inode, 1);
-               brelse(di_bh);
-               di_bh = NULL;
        }
 
        written = __blockdev_direct_IO(WRITE, iocb, inode, inode->i_sb->s_bdev,
@@ -771,7 +767,7 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb,
                        if (ret < 0)
                                mlog_errno(ret);
                }
-       } else if (written < 0 && append_write && !is_overwrite &&
+       } else if (written > 0 && append_write && !is_overwrite &&
                        !cluster_align) {
                u32 p_cpos = 0;
                u32 v_cpos = ocfs2_bytes_to_clusters(osb->sb, offset);