X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fbuffer.c;h=38653e36e2252189dfad1cbf8f31f5473d2ccb00;hb=1804dc6e145f3f24a8c94deddfc0a986d380a27f;hp=ca12a6bb82b10f6a45da86f3019f1e7d692dfc61;hpb=e4ddcb0a6bf04d53ce77b4eb87bbbb32c4261d11;p=~andy%2Flinux diff --git a/fs/buffer.c b/fs/buffer.c index ca12a6bb82b..38653e36e22 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -580,7 +580,7 @@ EXPORT_SYMBOL(mark_buffer_async_write); /* * The buffer's backing address_space's private_lock must be held */ -static inline void __remove_assoc_queue(struct buffer_head *bh) +static void __remove_assoc_queue(struct buffer_head *bh) { list_del_init(&bh->b_assoc_buffers); WARN_ON(!bh->b_assoc_map); @@ -1720,7 +1720,7 @@ static int __block_write_full_page(struct inode *inode, struct page *page, */ if (wbc->sync_mode != WB_SYNC_NONE || !wbc->nonblocking) { lock_buffer(bh); - } else if (test_set_buffer_locked(bh)) { + } else if (!trylock_buffer(bh)) { redirty_page_for_writepage(wbc, page); continue; } @@ -3000,7 +3000,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhs[]) if (rw == SWRITE || rw == SWRITE_SYNC) lock_buffer(bh); - else if (test_set_buffer_locked(bh)) + else if (!trylock_buffer(bh)) continue; if (rw == WRITE || rw == SWRITE || rw == SWRITE_SYNC) {