diff options
author | Evgeniy Dushistov <dushistov@mail.ru> | 2006-06-25 05:47:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-25 10:01:01 -0700 |
commit | c9a27b5dca52bbd0955e065e49e56eb313d02c34 (patch) | |
tree | 6e5223f9ee942e8a55552138aa67ef2a37e01738 /fs/ufs/balloc.c | |
parent | 2061df0f89201c0abeb4c17d343309c9fae5b861 (diff) | |
download | linux-c9a27b5dca52bbd0955e065e49e56eb313d02c34.tar.gz linux-c9a27b5dca52bbd0955e065e49e56eb313d02c34.tar.bz2 linux-c9a27b5dca52bbd0955e065e49e56eb313d02c34.zip |
[PATCH] ufs: right block allocation
* After block allocation, we map it on the same "address" as 8 others
blocks
* We nullify block several times: once in ufs/block.c and once in
block_*write_full_page, and use different "caches" for this.
Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/ufs/balloc.c')
-rw-r--r-- | fs/ufs/balloc.c | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c index 3ada9dcf55b8..cc0c8f15d8fd 100644 --- a/fs/ufs/balloc.c +++ b/fs/ufs/balloc.c @@ -223,18 +223,6 @@ failed: } - -#define NULLIFY_FRAGMENTS \ - for (i = oldcount; i < newcount; i++) { \ - bh = sb_getblk(sb, result + i); \ - memset (bh->b_data, 0, sb->s_blocksize); \ - set_buffer_uptodate(bh); \ - mark_buffer_dirty (bh); \ - if (IS_SYNC(inode)) \ - sync_dirty_buffer(bh); \ - brelse (bh); \ - } - unsigned ufs_new_fragments (struct inode * inode, __fs32 * p, unsigned fragment, unsigned goal, unsigned count, int * err ) { @@ -312,7 +300,6 @@ unsigned ufs_new_fragments (struct inode * inode, __fs32 * p, unsigned fragment, *err = 0; inode->i_blocks += count << uspi->s_nspfshift; UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); - NULLIFY_FRAGMENTS } unlock_super(sb); UFSD(("EXIT, result %u\n", result)) @@ -327,7 +314,6 @@ unsigned ufs_new_fragments (struct inode * inode, __fs32 * p, unsigned fragment, *err = 0; inode->i_blocks += count << uspi->s_nspfshift; UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); - NULLIFY_FRAGMENTS unlock_super(sb); UFSD(("EXIT, result %u\n", result)) return result; @@ -379,7 +365,6 @@ unsigned ufs_new_fragments (struct inode * inode, __fs32 * p, unsigned fragment, *err = 0; inode->i_blocks += count << uspi->s_nspfshift; UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); - NULLIFY_FRAGMENTS unlock_super(sb); if (newcount < request) ufs_free_fragments (inode, result + newcount, request - newcount); |