summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Price2008-05-01 12:55:38 +0200
committerSteven Whitehouse2008-05-12 09:54:56 +0200
commitad99f77778e83358c371dab7a50bde69270ed6b8 (patch)
treed01363df916a0235bbea125317697fb05a30712f
parent[GFS2] filesystem consistency error from do_strip (diff)
downloadkernel-qcow2-linux-ad99f77778e83358c371dab7a50bde69270ed6b8.tar.gz
kernel-qcow2-linux-ad99f77778e83358c371dab7a50bde69270ed6b8.tar.xz
kernel-qcow2-linux-ad99f77778e83358c371dab7a50bde69270ed6b8.zip
[GFS2] Fix cast from unsigned int to s64
This fixes bz 444829 where allocating a new block caused gfs2 file systems to report 0 bytes used in df. It was caused by a broken cast from an unsigned int in gfs2_block_alloc() to a negative s64 in gfs2_statfs_change(). This patch casts the unsigned int to an s64 before the unary minus is applied. Signed-off-by: Andrew Price <andy@andrewprice.me.uk> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
-rw-r--r--fs/gfs2/rgrp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 7e8f0b1d6c6e..6387523a3153 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1495,7 +1495,7 @@ u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n)
al->al_alloced += *n;
- gfs2_statfs_change(sdp, 0, -*n, 0);
+ gfs2_statfs_change(sdp, 0, -(s64)*n, 0);
gfs2_quota_change(ip, *n, ip->i_inode.i_uid, ip->i_inode.i_gid);
spin_lock(&sdp->sd_rindex_spin);