diff options
Diffstat (limited to 'fs/buffer.c')
-rw-r--r-- | fs/buffer.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 6bf84ca27..b2bc7670f 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -727,8 +727,7 @@ static void end_buffer_io_async(struct buffer_head * bh, int uptodate) atomic_dec(&bh->b_count); tmp = bh->b_this_page; while (tmp != bh) { - if (atomic_read(&tmp->b_count) && - (tmp->b_end_io == end_buffer_io_async)) + if (tmp->b_end_io == end_buffer_io_async && buffer_locked(tmp)) goto still_busy; tmp = tmp->b_this_page; } @@ -1089,7 +1088,7 @@ static struct buffer_head * get_unused_buffer_head(int async) return NULL; } -void set_bh_page (struct buffer_head *bh, struct page *page, unsigned int offset) +void set_bh_page (struct buffer_head *bh, struct page *page, unsigned long offset) { bh->b_page = page; if (offset >= PAGE_SIZE) @@ -1630,7 +1629,6 @@ int brw_kiovec(int rw, int nr, struct kiobuf *iovec[], int offset; unsigned long blocknr; struct kiobuf * iobuf = NULL; - unsigned long page; struct page * map; struct buffer_head *tmp, *bh[KIO_MAX_SECTORS]; @@ -1662,11 +1660,6 @@ int brw_kiovec(int rw, int nr, struct kiobuf *iovec[], for (pageind = 0; pageind < iobuf->nr_pages; pageind++) { map = iobuf->maplist[pageind]; - if (map && PageHighMem(map)) { - err = -EIO; - goto error; - } - page = page_address(map); while (length > 0) { blocknr = b[bufind++]; |