public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: New SCSI subsystem in 2.4, and scsi idle patch
@ 2001-09-09 22:53 Robert Love
  2001-09-10  9:44 ` Frank Schneider
  0 siblings, 1 reply; 8+ messages in thread
From: Robert Love @ 2001-09-09 22:53 UTC (permalink / raw)
  To: psusi; +Cc: linux-kernel

On Sun, 2001-09-09 at 14:21, Phillip Susi wrote:
> P.S.  I'd like to use a user mode daemon to detect disk idle, and issue the 
> existing ioctl code to spin the disk down, and rely on the kernel to spin it 
> back up as needed.  Isn't there somewhere in /proc that keeps IO counters on 
> the disk I can monitor?  Also, is there a way I could ask the kernel to not 
> flush dirty pages to disk unless it gets a whole lot of them so the disk 
> won't be spun up all the time just to write a few KB?

You can change the behavior of how dirty pages are flushed using
/proc/bdflush.

[18:41:55]rml@phantasy:/proc/sys/vm# cat bdflush 
30	64	64	256	500	3000	60	0	0

Of these 9 parameters, you probably care about the first and sixth.  The
first is percent of buffer full before bdflush kicks in and starts
flushing.  Setting this to 60% is fine, and will work towards your aim.

Note that, Documentation/sysctl/vm.txt is outdated (I will send a patch
off...) this is the correct values of the fields on bdflush:

union bdflush_param {
	struct {
		int nfract;	/* Percentage of buffer cache dirty to 
				   activate bdflush */
		int dummy1;	/* old "ndirty" */
		int dummy2;	/* old "nrefill" */
		int dummy3;	/* unused */
		int interval;	/* jiffies delay between kupdate flushes */
		int age_buffer;	/* Time for normal buffer to age before we flush it */
		int nfract_sync;/* Percentage of buffer cache dirty to 
				   activate bdflush synchronously */
		int dummy4;	/* unused */
		int dummy5;	/* unused */
	} b_un;
	unsigned int data[N_PARAM];
} bdf_prm = {{30, 64, 64, 256, 5*HZ, 30*HZ, 60, 0, 0}};

Finally, I like your idea.  I have an all SCSI system and would like my
disks to spin down. Good luck.

-- 
Robert M. Love
rml at ufl.edu
rml at tech9.net


^ permalink raw reply	[flat|nested] 8+ messages in thread
* New SCSI subsystem in 2.4, and scsi idle patch
@ 2001-09-09 18:21 Phillip Susi
  2001-09-10 11:25 ` Alistair Riddell
  2001-09-10 21:03 ` Daniel Kobras
  0 siblings, 2 replies; 8+ messages in thread
From: Phillip Susi @ 2001-09-09 18:21 UTC (permalink / raw)
  To: linux-kernel

I'm trying to get my 2.4.9 system to spin down my scsi disk(s) when idle.  
Aparently, this is supported on IDE disks, but not SCSI.  I found an old 
patch to add support for this to the 2.0.34 kernel, and have been trying to 
use it as a guide to fixing the 2.4.9 kernel.  It seems that major changes 
have been done to the scsi layer, so I'm a little confused.  Any help is 
appreciated.  Here is my current status:

It looks like the code path I need to modify is in 
drivers/scsi/sd.c:rw_intr().  It looks to me that this function is called 
when the HBA completes an SRB and it decides if it was an error or not, and 
completes it correctly.  I think I need to check for the NOT_READY sense 
status here, and if it is found, try to spin up the disk.  

Now for my questions:  

1) In the old patch, if the spin up failed, it calls 
end_scsi_request, and then requeue_sd_request.  I'm not sure why it tries to 
requeue a failed request, but the it seems that neither of these functions 
exist in the 2.4 kernel.  What should I use instead?

2) If the spin up worked, the old code called requeue_sd_request, I assume to 
send down the original read/write request to the disk now that it is on.  
Once again, what should I use instead of requeue_sd_request to do this?  
There is a comment still in the 2.4 code describing this function, but the 
function itself is not there.  

3) The old code called scsi_do_cmd to send down a START_STOP SRB to the drive 
when it decides it should spin the drive back up.  This function is also no 
longer there, so what should I use to send down the START_STOP SRB?  

P.S.  I'd like to use a user mode daemon to detect disk idle, and issue the 
existing ioctl code to spin the disk down, and rely on the kernel to spin it 
back up as needed.  Isn't there somewhere in /proc that keeps IO counters on 
the disk I can monitor?  Also, is there a way I could ask the kernel to not 
flush dirty pages to disk unless it gets a whole lot of them so the disk 
won't be spun up all the time just to write a few KB?

-- 
--> Phill Susi

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

end of thread, other threads:[~2001-09-10 21:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-09-09 22:53 New SCSI subsystem in 2.4, and scsi idle patch Robert Love
2001-09-10  9:44 ` Frank Schneider
  -- strict thread matches above, loose matches on Subject: below --
2001-09-09 18:21 Phillip Susi
2001-09-10 11:25 ` Alistair Riddell
2001-09-10 14:10   ` Mark Hahn
2001-09-10 16:33     ` idalton
2001-09-10 20:34       ` Daniel Kobras
2001-09-10 21:03 ` Daniel Kobras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox