lkml.org 
[lkml]   [2001]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[patch] set kiobuf io_count once, instead of increment
Currently in brw_kiovec, iobuf->io_count is being incremented as each
bh is submitted, and decremented in the bh->b_end_io(). This means
io_count can go to zero before all the bhs have been submitted,
especially during a large request. This causes the end_kio_request()
to be called before all of the io is complete.

This suggested patch against 2.4.2 sets io_count to the total amount
before the bhs are submitted, although there is probably a better way
to determine the io_count than this.

robert

diff -ru linux/fs/buffer.c linux-rm/fs/buffer.c
--- linux/fs/buffer.c Mon Jan 15 12:42:32 2001
+++ linux-rm/fs/buffer.c Tue Jan 30 11:41:57 2001
@@ -2085,6 +2085,7 @@
offset = iobuf->offset;
length = iobuf->length;
iobuf->errno = 0;
+ atomic_set(&iobuf->io_count, length/size);

for (pageind = 0; pageind < iobuf->nr_pages; pageind++) {
map = iobuf->maplist[pageind];
@@ -2119,8 +2120,6 @@
bh[bhind++] = tmp;
length -= size;
offset += size;
-
- atomic_inc(&iobuf->io_count);

submit_bh(rw, tmp);
/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.061 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site