diff --git a/[refs] b/[refs] index 72ba905fc874..6a2344333ce2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5b00226d4d3aa7969d84e16f857ea100465d9c98 +refs/heads/master: e60e5c50aa5389db86e96fc52d02bc7db3d23f4a diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index 5e4a90ee103f..62cfd17dc5fe 100644 --- a/trunk/fs/buffer.c +++ b/trunk/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); } }