remove inode_setattr
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / gfs2 / ops_inode.c
index 98cdd05f3316f17b98a82bf11d95805168445aee..d7d410a4ca421a8586d2b35c5113f2441dcd8b70 100644 (file)
@@ -1136,8 +1136,16 @@ static int setattr_chown(struct inode *inode, struct iattr *attr)
        if (error)
                goto out_end_trans;
 
-       error = inode_setattr(inode, attr);
-       gfs2_assert_warn(sdp, !error);
+       if ((attr->ia_valid & ATTR_SIZE) &&
+           attr->ia_size != i_size_read(inode)) {
+               int error;
+
+               error = vmtruncate(inode, attr->ia_size);
+               gfs2_assert_warn(sdp, !error);
+       }
+
+       setattr_copy(inode, attr);
+       mark_inode_dirty(inode);
 
        gfs2_trans_add_bh(ip->i_gl, dibh, 1);
        gfs2_dinode_out(ip, dibh->b_data);