[GFS2] Fix cast from unsigned int to s64
authorAndrew Price <andy@andrewprice.me.uk>
Thu, 1 May 2008 10:55:38 +0000 (11:55 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 12 May 2008 07:54:56 +0000 (08:54 +0100)
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>
fs/gfs2/rgrp.c

index 7e8f0b1d6c6ea2d39cb18811a7762c1b8e15ee6c..6387523a31530237da2d2545350787e4db53dd0d 100644 (file)
@@ -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);