Thread (3 messages) 3 messages, 3 authors, 2002-08-31

Re: 2.5.32 IO performance issues

From: Jens Axboe <hidden>
Date: 2002-08-31 09:14:01

On Thu, Aug 29 2002, Andrew Morton wrote:
quoted
We want to allow high mem for block devices other than SCSI direct access
devices (TYPE_DISK), such as CD ROM (SDpnt->type TYPE_ROM), WORM devices
(TYPE_WORM), and optical disks (TYPE_MOD).

So it is better to patch scsi_initialize_merge_fn:
--- 1.16/drivers/scsi/scsi_merge.c      Fri Jul  5 09:43:00 2002
+++ edited/drivers/scsi/scsi_merge.c    Thu Aug 29 14:30:12 2002
@@ -140,7 +140,7 @@
         * Enable highmem I/O, if appropriate.
         */
        bounce_limit = BLK_BOUNCE_HIGH;
-       if (SHpnt->highmem_io && (SDpnt->type == TYPE_DISK)) {
+       if (SHpnt->highmem_io) {
                if (!PCI_DMA_BUS_IS_PHYS)
                        /* Platforms with virtual-DMA translation
                         * hardware have no practical limit.
That will certainly fix it.  But who added the TYPE_DISK check,
and why???
I guess that block-highmem has been around long enough, that I can use
the term 'historically' at least in the kernel sense :-)

This extra check was added for IDE because each device type driver
(ide-disk, ide-cd, etc) needed to be updated to not assume virtual
mappings of request data was valid. I only did that for ide-disk, since
this is the only one where bounce buffering really hurt performance
wise. So while ide-cd and ide-tape etc could have been updated, I deemed
it uninteresting and not worthwhile.

Now, this was just carried straight into the scsi counter parts,
conveniently, because of laziness. A quick glance at sr shows that it
too can aviod bouncing easily (no changes needed). st may need some
changes, though. So again, for scsi it was a matter of not impacting
existing code in 2.4 too much.

So TYPE_DISK check can be killed in 2.5 if someone does the work of
checking that it is safe. I'm not so sure it will make eg your SCSI
CD-ROM that much faster :-)

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help