From owner-freebsd-scsi Mon Feb 8 12:15:39 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id MAA24023 for freebsd-scsi-outgoing; Mon, 8 Feb 1999 12:15:39 -0800 (PST) (envelope-from owner-freebsd-scsi@FreeBSD.ORG) Received: from salmon.maths.tcd.ie (salmon.maths.tcd.ie [134.226.81.11]) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id MAA24016 for ; Mon, 8 Feb 1999 12:15:34 -0800 (PST) (envelope-from dwmalone@maths.tcd.ie) Received: from gosset.maths.tcd.ie by salmon.maths.tcd.ie with SMTP id ; 8 Feb 99 20:14:44 +0000 (GMT) To: freebsd-scsi@FreeBSD.ORG Subject: Vmcore dumping through cam. Date: Mon, 08 Feb 1999 20:14:43 +0000 From: David Malone Message-ID: <9902082014.aa26935@salmon.maths.tcd.ie> Sender: owner-freebsd-scsi@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Vmcore dumping through cam seems to take ages. We've a machine with 1GB of ram and it takes ages to dump (~20minutes). I think what is happening is that xpt_polled_action is getting called so quickly that the action is nowhere near complete and so you have to wait atleast another second for it to finish. The timeout is given in the ccb and copied to a unsigned 32 bit number. A nasty way to fix this would be to only wait 1/1000s and multiply the timeout by 1000. (This instead of allowing a 135 year timeout allows a 49 day timeout - which seems OK). I'm going to test the folloing patch, but maybe there is a better way? David. *** cam_xpt.c Mon Feb 8 20:08:15 1999 --- /usr/src/sys/cam/cam_xpt.c Wed Jan 20 23:00:31 1999 *************** *** 3139,3145 **** struct cam_devq *devq; struct cam_ed *dev; ! timeout = start_ccb->ccb_h.timeout * 1000; sim = start_ccb->ccb_h.path->bus->sim; devq = sim->devq; dev = start_ccb->ccb_h.path->device; --- 3139,3145 ---- struct cam_devq *devq; struct cam_ed *dev; ! timeout = start_ccb->ccb_h.timeout; sim = start_ccb->ccb_h.path->bus->sim; devq = sim->devq; dev = start_ccb->ccb_h.path->device; *************** *** 3155,3161 **** while((devq->send_openings <= 0 || dev->ccbq.dev_openings < 0) && (--timeout > 0)) { ! DELAY(1); (*(sim->sim_poll))(sim); swi_camnet(); swi_cambio(); --- 3155,3161 ---- while((devq->send_openings <= 0 || dev->ccbq.dev_openings < 0) && (--timeout > 0)) { ! DELAY(1000); (*(sim->sim_poll))(sim); swi_camnet(); swi_cambio(); *************** *** 3173,3179 **** if ((start_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG) break; ! DELAY(1); } if (timeout == 0) { /* --- 3173,3179 ---- if ((start_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG) break; ! DELAY(1000); } if (timeout == 0) { /* To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-scsi" in the body of the message