if (unlikely(!bh)) {
ext4_error(sb, __func__,
"Cannot read block bitmap - "
- "block_group = %d, block_bitmap = %llu",
- (int)block_group, (unsigned long long)bitmap_blk);
+ "block_group = %lu, block_bitmap = %llu",
+ block_group, bitmap_blk);
return NULL;
}
if (bh_uptodate_or_lock(bh))
return bh;
+ spin_lock(sb_bgl_lock(EXT4_SB(sb), block_group));
if (desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
ext4_init_block_bitmap(sb, bh, block_group, desc);
set_buffer_uptodate(bh);
unlock_buffer(bh);
+ spin_unlock(sb_bgl_lock(EXT4_SB(sb), block_group));
return bh;
}
+ spin_unlock(sb_bgl_lock(EXT4_SB(sb), block_group));
if (bh_submit_read(bh) < 0) {
put_bh(bh);
ext4_error(sb, __func__,
"Cannot read block bitmap - "
- "block_group = %d, block_bitmap = %llu",
- (int)block_group, (unsigned long long)bitmap_blk);
+ "block_group = %lu, block_bitmap = %llu",
+ block_group, bitmap_blk);
return NULL;
}
ext4_valid_block_bitmap(sb, desc, block_group, bh);
bad = 0;
prev = NULL;
- printk("Block Allocation Reservation Windows Map (%s):\n", fn);
+ printk(KERN_DEBUG "Block Allocation Reservation "
+ "Windows Map (%s):\n", fn);
while (n) {
rsv = rb_entry(n, struct ext4_reserve_window_node, rsv_node);
if (verbose)
- printk("reservation window 0x%p "
+ printk(KERN_DEBUG "reservation window 0x%p "
"start: %llu, end: %llu\n",
rsv, rsv->rsv_start, rsv->rsv_end);
if (rsv->rsv_start && rsv->rsv_start >= rsv->rsv_end) {
- printk("Bad reservation %p (start >= end)\n",
+ printk(KERN_DEBUG "Bad reservation %p (start >= end)\n",
rsv);
bad = 1;
}
if (prev && prev->rsv_end >= rsv->rsv_start) {
- printk("Bad reservation %p (prev->end >= start)\n",
- rsv);
+ printk(KERN_DEBUG "Bad reservation %p "
+ "(prev->end >= start)\n", rsv);
bad = 1;
}
if (bad) {
if (!verbose) {
- printk("Restarting reservation walk in verbose mode\n");
+ printk(KERN_DEBUG "Restarting reservation "
+ "walk in verbose mode\n");
verbose = 1;
goto restart;
}
n = rb_next(n);
prev = rsv;
}
- printk("Window map complete.\n");
+ printk(KERN_DEBUG "Window map complete.\n");
BUG_ON(bad);
}
#define rsv_window_dump(root, verbose) \
#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;
sb = inode->i_sb;
if (!sb) {
*errp = -ENODEV;
- printk("ext4_new_block: nonexistent device");
+ printk(KERN_ERR "ext4_new_block: nonexistent superblock");
return 0;
}
for (i = 0; i < num; i++) {
if (ext4_test_bit(grp_alloc_blk+i,
bh2jh(bitmap_bh)->b_committed_data)) {
- printk("%s: block was unexpectedly set in "
- "b_committed_data\n", __func__);
+ printk(KERN_ERR "%s: block was unexpectedly "
+ "set in b_committed_data\n", __func__);
}
}
}
bitmap_count += x;
}
brelse(bitmap_bh);
- printk("ext4_count_free_blocks: stored = %llu"
- ", computed = %llu, %llu\n",
- ext4_free_blocks_count(es),
- desc_count, bitmap_count);
+ printk(KERN_DEBUG "ext4_count_free_blocks: stored = %llu"
+ ", computed = %llu, %llu\n", ext4_free_blocks_count(es),
+ desc_count, bitmap_count);
return bitmap_count;
#else
desc_count = 0;