summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/ops_inode.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-06 10:01:23 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-06 10:01:23 -0800
commitb08b27213384d1bd6eda04a2b6f788b4cdee0f34 (patch)
tree8e6514091c468456738d106fdaef0f1e4c7dcbd4 /fs/gfs2/ops_inode.c
parent8484baaa5065b460e5eb18ee721d8417251f7897 (diff)
parent846f40455276617275284a4b76b89311b4aed0b9 (diff)
downloadlinux-stable-b08b27213384d1bd6eda04a2b6f788b4cdee0f34.tar.gz
linux-stable-b08b27213384d1bd6eda04a2b6f788b4cdee0f34.tar.bz2
linux-stable-b08b27213384d1bd6eda04a2b6f788b4cdee0f34.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: GFS2: Don't flush delete workqueue when releasing the transaction lock GFS2: fsck.gfs2 reported statfs error after gfs2_grow GFS2: Merge glock state fields into a bitfield GFS2: Fix uninitialised error value in previous patch GFS2: fix recursive locking during rindex truncates GFS2: reread rindex when necessary to grow rindex GFS2: Remove duplicate #defines from glock.h GFS2: Clean up of gdlm_lock function GFS2: Allow gfs2 to update quota usage values through the quotactl interface GFS2: fs/gfs2/glock.h: Add __attribute__((format(printf,2,3)) to gfs2_print_dbg GFS2: fs/gfs2/glock.c: Use printf extension %pV GFS2: Clean up duplicated setattr code GFS2: Remove unreachable calls to vmtruncate GFS2: fs/gfs2/glock.c: Convert sprintf_symbol to %pS GFS2: Change two WQ_RESCUERs into WQ_MEM_RECLAIM
Diffstat (limited to 'fs/gfs2/ops_inode.c')
-rw-r--r--fs/gfs2/ops_inode.c18
1 files changed, 1 insertions, 17 deletions
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
index 12cbea7502c2..1db6b7343229 100644
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -1069,7 +1069,6 @@ static int setattr_chown(struct inode *inode, struct iattr *attr)
{
struct gfs2_inode *ip = GFS2_I(inode);
struct gfs2_sbd *sdp = GFS2_SB(inode);
- struct buffer_head *dibh;
u32 ouid, ogid, nuid, ngid;
int error;
@@ -1100,25 +1099,10 @@ static int setattr_chown(struct inode *inode, struct iattr *attr)
if (error)
goto out_gunlock_q;
- error = gfs2_meta_inode_buffer(ip, &dibh);
+ error = gfs2_setattr_simple(ip, attr);
if (error)
goto out_end_trans;
- 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);
- brelse(dibh);
-
if (ouid != NO_QUOTA_CHANGE || ogid != NO_QUOTA_CHANGE) {
u64 blocks = gfs2_get_inode_blocks(&ip->i_inode);
gfs2_quota_change(ip, -blocks, ouid, ogid);