summaryrefslogtreecommitdiffstats
path: root/fs/buffer.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
commit99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch)
tree3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /fs/buffer.c
parente73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff)
Merge with Linux 2.3.38.
Diffstat (limited to 'fs/buffer.c')
-rw-r--r--fs/buffer.c11
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++];