Skip to content

Commit

Permalink
[PATCH] ocfs2: Remove expensive bitmap scanning
Browse files Browse the repository at this point in the history
Enable expensive bitmap scanning only if DEBUG option is enabled.
The bitmap scanning quite loads the CPU and on my machine the write
throughput of dd if=/dev/zero of=/ocfs2/file bs=1M count=500 conv=sync
improves from 37 MB/s to 45.4 MB/s in local mode...

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
  • Loading branch information
Jan Kara authored and Mark Fasheh committed Nov 28, 2007
1 parent a46043e commit 5a58c3e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
9 changes: 9 additions & 0 deletions fs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,15 @@ config OCFS2_DEBUG_MASKLOG
This option will enlarge your kernel, but it allows debugging of
ocfs2 filesystem issues.

config OCFS2_DEBUG_FS
bool "OCFS2 expensive checks"
depends on OCFS2_FS
default n
help
This option will enable expensive consistency checks. Enable
this option for debugging only as it is likely to decrease
performance of the filesystem.

config MINIX_FS
tristate "Minix fs support"
help
Expand Down
5 changes: 3 additions & 2 deletions fs/ocfs2/localalloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,7 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,

alloc = (struct ocfs2_dinode *) osb->local_alloc_bh->b_data;

#ifdef OCFS2_DEBUG_FS
if (le32_to_cpu(alloc->id1.bitmap1.i_used) !=
ocfs2_local_alloc_count_bits(alloc)) {
ocfs2_error(osb->sb, "local alloc inode %llu says it has "
Expand All @@ -494,6 +495,7 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,
status = -EIO;
goto bail;
}
#endif

free_bits = le32_to_cpu(alloc->id1.bitmap1.i_total) -
le32_to_cpu(alloc->id1.bitmap1.i_used);
Expand Down Expand Up @@ -712,9 +714,8 @@ static int ocfs2_sync_local_to_main(struct ocfs2_super *osb,
void *bitmap;
struct ocfs2_local_alloc *la = OCFS2_LOCAL_ALLOC(alloc);

mlog_entry("total = %u, COUNT = %u, used = %u\n",
mlog_entry("total = %u, used = %u\n",
le32_to_cpu(alloc->id1.bitmap1.i_total),
ocfs2_local_alloc_count_bits(alloc),
le32_to_cpu(alloc->id1.bitmap1.i_used));

if (!alloc->id1.bitmap1.i_total) {
Expand Down

0 comments on commit 5a58c3e

Please sign in to comment.