Re: adding swap workarounds oom - was: Re: Out of Memory: Killed process 16498 (java).

From: Jens Axboe
Date: Wed Mar 01 2006 - 04:53:11 EST


On Wed, Mar 01 2006, Andy Chittenden wrote:
> Jens
>
> > I guess that definitely doesn't work, then :-)
> > Let me doctor up a quick debug patch for ide-dma, then.
> >
> How's that patch coming along?

Something like this.

diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 0523da7..9ee8c5c 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -221,6 +221,20 @@ int ide_build_sglist(ide_drive_t *drive,

EXPORT_SYMBOL_GPL(ide_build_sglist);

+static void dump_dma_table(ide_drive_t *drive)
+{
+ ide_hwif_t *hwif = HWIF(drive);
+ request_queue_t *q = drive->queue;
+ int i;
+
+ printk("ide dma table, %d entries, bounce pfn %lu\n", hwif->sg_nents, q->bounce_pfn);
+ for (i = 0; i < hwif->sg_nents; i++) {
+ struct scatterlist *sg = &hwif->sg_table[i];
+
+ printk("sg%d: dma=%llx, len=%u/%u, pfn=%lu\n", i, (unsigned long long) sg->dma_address, sg->length, sg->offset, page_to_pfn(sg->page));
+ }
+}
+
/**
* ide_build_dmatable - build IDE DMA table
*
@@ -311,6 +325,7 @@ use_pio_instead:
hwif->sg_table,
hwif->sg_nents,
hwif->sg_dma_direction);
+ dump_dma_table(drive);
return 0; /* revert to PIO for this request */
}


--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/