linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] 2.4.14-pre7 Missing disk req queue unplugs
@ 2001-11-03 15:30 Anton Altaparmakov
  2001-11-03 22:09 ` Anton Altaparmakov
  0 siblings, 1 reply; 2+ messages in thread
From: Anton Altaparmakov @ 2001-11-03 15:30 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, will_dyson

Linus,

Please apply below patch for your next -pre kernel.

This patch adds two disk request queue unplugs in mm/filemap.c which are
present in -ac kernels but not in -pre kernels.

Without this patch NTFS TNG will hang when it tries to read anything using
the page cache. Same for BeFS as reported by Will Dyson. The hangs would
"unhang" as soon as something else caused disk io to happen (e.g. doing
md5sum on an ext2 partition on a file that hasn't been accessed before
so it isn't in the page cache yet).

With this patch NTFS TNG no longer hangs. I haven't tried BeFS but I am
confident it will be fixed by this patch, too.

Thanks go to Andrew Morton for locating the problem causing the hangs.

Best regards,

	Anton
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Linux NTFS maintainer / WWW: http://linux-ntfs.sf.net/
ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/

--- linux-2.4.14-pre7-unplug.diff ---

diff -u -urN linux-2.4.14-pre7-vanilla/mm/filemap.c linux-2.4.14-pre7-aia1/mm/filemap.c
--- linux-2.4.14-pre7-vanilla/mm/filemap.c	Sat Nov  3 12:17:55 2001
+++ linux-2.4.14-pre7-aia1/mm/filemap.c	Sat Nov  3 15:18:22 2001
@@ -769,6 +769,7 @@
 		if (!PageLocked(page))
 			break;
 		sync_page(page);
+		run_task_queue(&tq_disk);
 		schedule();
 	} while (PageLocked(page));
 	tsk->state = TASK_RUNNING;
@@ -800,7 +801,9 @@
 		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
 		if (PageLocked(page)) {
 			sync_page(page);
+			run_task_queue(&tq_disk);
 			schedule();
+			continue;
 		}
 		if (!TryLockPage(page))
 			break;


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

* Re: [PATCH] 2.4.14-pre7 Missing disk req queue unplugs
  2001-11-03 15:30 [PATCH] 2.4.14-pre7 Missing disk req queue unplugs Anton Altaparmakov
@ 2001-11-03 22:09 ` Anton Altaparmakov
  0 siblings, 0 replies; 2+ messages in thread
From: Anton Altaparmakov @ 2001-11-03 22:09 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, will_dyson

This patch is not needed after all. Implementing the sync_page method in 
the address_space operations using fs/buffer.c::block_sync_page() 
completely fixed the hangs I was seing with NTFS TNG.

Best regards,

Anton

At 15:30 03/11/2001, Anton Altaparmakov wrote:
>Linus,
>
>Please apply below patch for your next -pre kernel.
>
>This patch adds two disk request queue unplugs in mm/filemap.c which are
>present in -ac kernels but not in -pre kernels.
>
>Without this patch NTFS TNG will hang when it tries to read anything using
>the page cache. Same for BeFS as reported by Will Dyson. The hangs would
>"unhang" as soon as something else caused disk io to happen (e.g. doing
>md5sum on an ext2 partition on a file that hasn't been accessed before
>so it isn't in the page cache yet).
>
>With this patch NTFS TNG no longer hangs. I haven't tried BeFS but I am
>confident it will be fixed by this patch, too.
>
>Thanks go to Andrew Morton for locating the problem causing the hangs.
>
>Best regards,
>
>         Anton
>--
>Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
>Linux NTFS maintainer / WWW: http://linux-ntfs.sf.net/
>ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/
>
>--- linux-2.4.14-pre7-unplug.diff ---
>
>diff -u -urN linux-2.4.14-pre7-vanilla/mm/filemap.c 
>linux-2.4.14-pre7-aia1/mm/filemap.c
>--- linux-2.4.14-pre7-vanilla/mm/filemap.c      Sat Nov  3 12:17:55 2001
>+++ linux-2.4.14-pre7-aia1/mm/filemap.c Sat Nov  3 15:18:22 2001
>@@ -769,6 +769,7 @@
>                 if (!PageLocked(page))
>                         break;
>                 sync_page(page);
>+               run_task_queue(&tq_disk);
>                 schedule();
>         } while (PageLocked(page));
>         tsk->state = TASK_RUNNING;
>@@ -800,7 +801,9 @@
>                 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
>                 if (PageLocked(page)) {
>                         sync_page(page);
>+                       run_task_queue(&tq_disk);
>                         schedule();
>+                       continue;
>                 }
>                 if (!TryLockPage(page))
>                         break;

-- 
   "I've not lost my mind. It's backed up on tape somewhere." - Unknown
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Linux NTFS Maintainer / WWW: http://linux-ntfs.sf.net/
ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/


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

end of thread, other threads:[~2001-11-03 22:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-03 15:30 [PATCH] 2.4.14-pre7 Missing disk req queue unplugs Anton Altaparmakov
2001-11-03 22:09 ` Anton Altaparmakov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).