Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 08 Feb 1999 20:14:43 +0000
From:      David Malone <dwmalone@maths.tcd.ie>
To:        freebsd-scsi@FreeBSD.ORG
Subject:   Vmcore dumping through cam.
Message-ID:   <9902082014.aa26935@salmon.maths.tcd.ie>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <9902082014.aa26935>