diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2006-02-03 03:04:43 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-03 08:32:10 -0800 |
commit | e60e5c50aa5389db86e96fc52d02bc7db3d23f4a (patch) | |
tree | dcf9d09c7fed328628750023fecaf3eef4ad8624 /fs | |
parent | 5b00226d4d3aa7969d84e16f857ea100465d9c98 (diff) | |
download | op-kernel-dev-e60e5c50aa5389db86e96fc52d02bc7db3d23f4a.zip op-kernel-dev-e60e5c50aa5389db86e96fc52d02bc7db3d23f4a.tar.gz |
[PATCH] Trivial optimization of ll_rw_block()
The ll_rw_block() needs to get ref-count only if it submits a buffer(). This
patch avoids the needless get/put of ref-count.
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/buffer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 5e4a90e..62cfd17 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2867,22 +2867,22 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhs[]) else if (test_set_buffer_locked(bh)) continue; - get_bh(bh); if (rw == WRITE || rw == SWRITE) { if (test_clear_buffer_dirty(bh)) { bh->b_end_io = end_buffer_write_sync; + get_bh(bh); submit_bh(WRITE, bh); continue; } } else { if (!buffer_uptodate(bh)) { bh->b_end_io = end_buffer_read_sync; + get_bh(bh); submit_bh(rw, bh); continue; } } unlock_buffer(bh); - put_bh(bh); } } |