public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] set kiobuf io_count once, instead of increment
@ 2001-02-28  0:22 Robert Read
  2001-02-28  1:50 ` Marcelo Tosatti
  2001-03-02 18:43 ` Stephen C. Tweedie
  0 siblings, 2 replies; 5+ messages in thread
From: Robert Read @ 2001-02-28  0:22 UTC (permalink / raw)
  To: linux-kernel

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);
 				/* 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2001-03-02 18:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-02-28  0:22 [patch] set kiobuf io_count once, instead of increment Robert Read
2001-02-28  1:50 ` Marcelo Tosatti
2001-02-28 17:18   ` Robert Read
2001-03-02 18:46     ` Stephen C. Tweedie
2001-03-02 18:43 ` Stephen C. Tweedie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox