]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/ext4/balloc.c
percpu counter: clean up percpu_counter_sum_and_set()
[linux-2.6-omap-h63xx.git] / fs / ext4 / balloc.c
index 1ae5004e93fc20ffd99a652efa6be9897a0518c1..00a94d5866c29a2c0b1ce4a6e2380a7b2d895d10 100644 (file)
@@ -1624,8 +1624,11 @@ ext4_fsblk_t ext4_has_free_blocks(struct ext4_sb_info *sbi,
 #ifdef CONFIG_SMP
        if (free_blocks - root_blocks < FBC_BATCH)
                free_blocks =
-                       percpu_counter_sum_and_set(&sbi->s_freeblocks_counter);
+                       percpu_counter_sum(&sbi->s_freeblocks_counter);
 #endif
+       if (free_blocks <= root_blocks)
+               /* we don't have free space */
+               return 0;
        if (free_blocks - root_blocks < nblocks)
                return free_blocks - root_blocks;
        return nblocks;