net: implement dev_disable_lro() hw_features compatibility
[pandora-kernel.git] / fs / gfs2 / bmap.c
index 3c4039d..ef3dc4b 100644 (file)
@@ -21,6 +21,7 @@
 #include "meta_io.h"
 #include "quota.h"
 #include "rgrp.h"
+#include "super.h"
 #include "trans.h"
 #include "dir.h"
 #include "util.h"
@@ -757,7 +758,7 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh,
        struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
        struct gfs2_rgrp_list rlist;
        u64 bn, bstart;
-       u32 blen;
+       u32 blen, btotal;
        __be64 *p;
        unsigned int rg_blocks = 0;
        int metadata;
@@ -839,6 +840,7 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh,
 
        bstart = 0;
        blen = 0;
+       btotal = 0;
 
        for (p = top; p < bottom; p++) {
                if (!*p)
@@ -851,9 +853,11 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh,
                else {
                        if (bstart) {
                                if (metadata)
-                                       gfs2_free_meta(ip, bstart, blen);
+                                       __gfs2_free_meta(ip, bstart, blen);
                                else
-                                       gfs2_free_data(ip, bstart, blen);
+                                       __gfs2_free_data(ip, bstart, blen);
+
+                               btotal += blen;
                        }
 
                        bstart = bn;
@@ -865,11 +869,17 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh,
        }
        if (bstart) {
                if (metadata)
-                       gfs2_free_meta(ip, bstart, blen);
+                       __gfs2_free_meta(ip, bstart, blen);
                else
-                       gfs2_free_data(ip, bstart, blen);
+                       __gfs2_free_data(ip, bstart, blen);
+
+               btotal += blen;
        }
 
+       gfs2_statfs_change(sdp, 0, +btotal, 0);
+       gfs2_quota_change(ip, -(s64)btotal, ip->i_inode.i_uid,
+                         ip->i_inode.i_gid);
+
        ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME;
 
        gfs2_dinode_out(ip, dibh->b_data);