644 lines
20 KiB
Plaintext
644 lines
20 KiB
Plaintext
From: Digestifier <Linux-Admin-Request@senator-bedfellow.mit.edu>
|
|
To: Linux-Admin@senator-bedfellow.mit.edu
|
|
Reply-To: Linux-Admin@senator-bedfellow.mit.edu
|
|
Date: Wed, 5 Oct 94 05:13:36 EDT
|
|
Subject: Linux-Admin Digest #146
|
|
|
|
Linux-Admin Digest #146, Volume #2 Wed, 5 Oct 94 05:13:36 EDT
|
|
|
|
Contents:
|
|
Re: LINUX mouse problem (Andrew Haylett)
|
|
How to let normal users run SVGALIB programs (SOLN) (Andrew Berkley)
|
|
/etc/issue (CVL staff member Nate Sammons)
|
|
Re: inetd seems to lock-up (Matt Midboe)
|
|
Ugidd (Jay Ongg)
|
|
Re: floppy problems on Linux 1.1.51 (Uwe Bonnes)
|
|
Re: Xfig (Uwe Bonnes)
|
|
Re: Hard Drive "sleep" program?? (Uwe Bonnes)
|
|
Re: LINUX mouse problem (Van Zandt)
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
From: ajh@gec-mrc.co.uk (Andrew Haylett)
|
|
Subject: Re: LINUX mouse problem
|
|
Date: 4 Oct 94 12:47:11 GMT
|
|
|
|
Stephen Benson (stephenb@scribendum.win-uk.net) wrote:
|
|
: In article <Cx1HrL.J6u@eskimo.com>, S. O'Connor (irish@eskimo.com) writes:
|
|
: >crusanow@slate.mines.colorado.edu (Ruz) writes:
|
|
: >
|
|
: >>Howdy, I am setting up a Linux network for a system administration class
|
|
: >>and have run into a problem. The mouse gives me an error saying device or
|
|
: >>resource busy!!!! This means I cannot run X and finish the system.
|
|
: >
|
|
: > Do you get this message when you try to start X? You will if
|
|
: >Selection is running. Selection makes the mouse work in Linux, but you
|
|
: >have to kill it to run X.
|
|
: This is not true. I run Selection all the time; in or out of X. And it doesn't
|
|
: "make the mouse work"; it provides 'cut and paste' style copying between VTs.
|
|
|
|
Just to clear things up; selection will yield the mouse to X when
|
|
necessary with serial mice *only*. With bus mice, the device cannot be
|
|
shared in the same way, and selection must be terminated before X is
|
|
started. The only good news is that you can now do this easily using the
|
|
`-k' option in version 1.7.
|
|
|
|
--
|
|
Andrew Haylett <ajh@gec-mrc.co.uk> Tel: +44 1245 473331 x.3283
|
|
PGP2.6 public key available on request
|
|
|
|
------------------------------
|
|
|
|
From: ajb@wonder.resnet.cornell.edu (Andrew Berkley)
|
|
Subject: How to let normal users run SVGALIB programs (SOLN)
|
|
Date: 3 Oct 1994 10:37:49 -0400
|
|
|
|
Obviously, the only users that you would want to run SVGALIB programs
|
|
are logged in at the console -- and that is nicely handled by SVGALIB
|
|
(try running sasteroids from a telnet :). But, since SVGALIB needs access
|
|
to /dev/console (new versions) which is a link to a tty0-6, you need
|
|
someway of letting it access them. One solution is to make tty? world
|
|
readable/writeable/etc, but that's just wrong... The real solution, which
|
|
most SVGALIB install programs do (witness zgv) is to install the program
|
|
with owner _root_, and set the 'Run this program as owner' bit on the
|
|
program.
|
|
chmod a+s FileName
|
|
|
|
|
|
|
|
------------------------------
|
|
|
|
From: nate@matisse.VIS.ColoState.Edu (CVL staff member Nate Sammons)
|
|
Subject: /etc/issue
|
|
Date: 3 Oct 1994 14:20:17 GMT
|
|
|
|
I see there's and /etc/issue file in linux, but it doesn't seem to
|
|
do what /etc/issue is supposed to do (get splatted up on screen
|
|
BEFORE the login prompt on (at least) remote connections)
|
|
|
|
Is there a flag for this or something?
|
|
|
|
-nate
|
|
|
|
--
|
|
Nate Sammons <nate@vis.colostate.edu>
|
|
System Administrator - CSU Computer Visualization Laboratory
|
|
|
|
------------------------------
|
|
|
|
From: matt@vespucci.iquest.com (Matt Midboe)
|
|
Subject: Re: inetd seems to lock-up
|
|
Date: 4 Oct 1994 12:47:54 -0500
|
|
|
|
In article <1994Oct1.184213.289@acad.ursinus.edu>,
|
|
Steve Kneizys <STEVO@acad.ursinus.edu> wrote:
|
|
>olav woelfelschneider (wosch@rbg.informatik.th-darmstadt.de) wrote:
|
|
[stuff about inetd not running processes anymore, but net connects on
|
|
non-inetd ports still work]
|
|
|
|
We have the exact same problem here. A 1.1.51 kernel (but it did it
|
|
with earlier kernels). The sum on my inetd is 63545 18. Is that
|
|
same as everyone elses? Two IDE hard drives, 500M and 330M, with a
|
|
486DX2-66 processor. They usually seem to come along with a whole
|
|
bunch of named: connection refused or tcpd: application returned 0xe
|
|
errors. (Or errors to that effect)
|
|
|
|
Any solutions to this are desperately wanted!
|
|
|
|
Matt
|
|
matt@iquest.com
|
|
|
|
------------------------------
|
|
|
|
From: ongg@athena.mit.edu (Jay Ongg)
|
|
Subject: Ugidd
|
|
Date: 5 Oct 1994 08:45:35 GMT
|
|
|
|
|
|
Where can i find information on how to use ugidd, or the binaries to
|
|
unfsd, and/or man pages!?
|
|
|
|
I've looked everywhere, can't find it, not even on the man pages of
|
|
machines of other platforms.
|
|
Can someone help me out here?
|
|
Thanks!
|
|
|
|
------------------------------
|
|
|
|
From: bon@lte.e-technik.uni-erlangen.de (Uwe Bonnes)
|
|
Subject: Re: floppy problems on Linux 1.1.51
|
|
Date: Wed, 5 Oct 1994 06:10:59 GMT
|
|
|
|
Shaune Beattie (sdgb1@cus.cam.ac.uk) wrote:
|
|
> Kees Lemmens (lemmens@dutind5.twi.tudelft.nl) wrote:
|
|
> : Hi,
|
|
|
|
> : Recently installed Linux 1.1.51. However, when I mount a DOS floppy
|
|
> : and try to unmount it when finished, in about 50 % of the cases the
|
|
> : unmount command crashes with a Segmentation Fault and exits.
|
|
> : This leaves an /etc/mtab~ hanging around and corrupts the filesystem
|
|
> : information:
|
|
|
|
> : 'df' then yields an entry for /fd0 (my floppydrive) with the statistics
|
|
> : of my Linux partition.
|
|
|
|
> : A second mount and unmount (after removing the /etc/mtab~) often fixes
|
|
> : the problem.
|
|
|
|
> : Anyone who experienced the same or anyone who knows how to avoid this ?
|
|
|
|
> Same for me..
|
|
> Though not 50%
|
|
> Basically the *first* time you try to umount it produces a segmentation
|
|
> fault in _release_floppy. after that it works fine :-/ more a nuisance
|
|
> than anything else.
|
|
|
|
Look at the patches om
|
|
ftp.imag.fr:pub/Linux/ZLIBC.
|
|
|
|
The newest (floppy related) files are:
|
|
pub/Linux/ZLIBC/floppy/ALPHA/fdp1.1.51-0410.diff.gz (alpha fixes with new
|
|
features)
|
|
pub/Linux/ZLIBC/floppy/QDF/fdp1.1.51-0410.diff.gz (quick&dirty fixes with
|
|
lower probability of new bugs)
|
|
pub/Linux/ZLIBC/floppy/misc/dma0410.diff.gz (newest dma patches)
|
|
pub/Linux/ZLIBC/fdutils/ALPHA/fdu0110.taz (utilities)
|
|
--
|
|
Uwe Bonnes bon@lte.e-technik.uni-erlangen.de
|
|
|
|
------------------------------
|
|
|
|
From: bon@lte.e-technik.uni-erlangen.de (Uwe Bonnes)
|
|
Subject: Re: Xfig
|
|
Date: Wed, 5 Oct 1994 06:11:05 GMT
|
|
|
|
dietmar mueller (muellerd@eos.informatik.uni-bonn.de) wrote:
|
|
> A friend of mine has installed Linux V.1.0.9.
|
|
> His problem appears while starting Xfig. On loading the program the whole
|
|
> Main Memory is allocated for the needs of swapping until the lower bound of
|
|
> 80 K is reached, without starting Xfig. The Failure Message : "Font Type
|
|
> ... not found" is being displayed and because of the lack of memory space
|
|
> the Xserver shuts down with error message.
|
|
|
|
> Does anyone have an idea why this can happen and how this phenomen can be
|
|
> prevented?
|
|
Look at the messages of the last time. This has been answered many times
|
|
before:
|
|
There's a cyclic reference in the application-defaults
|
|
|
|
--
|
|
Uwe Bonnes bon@lte.e-technik.uni-erlangen.de
|
|
|
|
------------------------------
|
|
|
|
From: bon@lte.e-technik.uni-erlangen.de (Uwe Bonnes)
|
|
Subject: Re: Hard Drive "sleep" program??
|
|
Date: Wed, 5 Oct 1994 06:11:14 GMT
|
|
|
|
Tom Czarnik (tomc@netmanage.com) wrote:
|
|
> In article <36n6jk$2ge4@yuma.ACNS.ColoState.EDU>,
|
|
> > drranu@lamar.ColoState.EDU (Emarit Ranu) says:
|
|
> >
|
|
> >
|
|
> > I have a linux box that can be idle up to 12 hours at a time.
|
|
> > I figure since the hard drive is not doing much, is there
|
|
> > a program that will shut off the hard drive until it is needed
|
|
> > again?
|
|
|
|
> A HD "starts" as soon as you turn on the computer or the actaul HD (if it's
|
|
> an external). There is no way to turn off the power unless you unplug the
|
|
> HD.
|
|
Not true for SCSI-HD's:
|
|
From a posting in comp.os.linux.development:
|
|
|
|
Newsgroups: comp.os.linux.development
|
|
Lines: 380
|
|
Sender: news@ida.liu.se
|
|
Subject: Power down idle SCSI disks [w/ kernel patches]
|
|
Date: Wed, 14 Sep 1994 23:04:41 GMT
|
|
Status: RO
|
|
|
|
I recently asked if anybody had written any code for turning off SCSI or
|
|
IDE drives under linux. Since it seems as if nobody had done it, I
|
|
gave it a shot myself. And here it is, the result of a few nights
|
|
hacking of the SCSI drivers.
|
|
|
|
Hopefully the kernel patches will turn off a drive after a certain amount
|
|
of time, and if I am really lucky, it might even turn it on when some
|
|
program needs it.
|
|
|
|
The patch should be applied from the /usr/src/linux/drivers directory,
|
|
and it patches sd.c, sd.h and sd_ioctl.c to power down idle disks.
|
|
Idling is disabled by default and has to be turned on by an ioctl call.
|
|
I'm quite new to kernel hacking, so if I've made any horrible misstakes
|
|
I would like to hear about them.
|
|
|
|
Attached is also a small utility which sets the idle timeout on a SCSI device.
|
|
It ain't beautiful but it seems to work. The BLKIDLE define is hardcoded
|
|
to 4747 both here and in the kernel (sd_ioctl.c). It really belongs in
|
|
one of the include files in /usr/include/linux, but I don't know which
|
|
one, so I haven't fixed it yet.
|
|
|
|
Please try it out and tell me how it works.
|
|
|
|
/Christer (y93chrwe@und.ida.liu.se)
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
|
|
#define BLKIDLE 4747
|
|
|
|
void main(int argc, char *argv[])
|
|
{
|
|
int fd;
|
|
int timeout;
|
|
|
|
if (argc != 3)
|
|
{
|
|
fprintf(stderr, "usage: setidle device timeout\n"
|
|
" where timeout is the time until motor off in seconds\n"
|
|
" a value of zero disables this function\n");
|
|
exit(1);
|
|
}
|
|
|
|
if ((fd = open(argv[1], O_RDWR)) < 0)
|
|
{
|
|
perror(argv[1]);
|
|
exit(1);
|
|
}
|
|
|
|
timeout = atoi(argv[2]);
|
|
printf("Setting idle timeout of %s to %d seconds\n", argv[1], timeout);
|
|
ioctl(fd, BLKIDLE, &timeout);
|
|
|
|
close(fd);
|
|
|
|
exit(0);
|
|
}
|
|
diff -u5 -r scsi.orig/sd.c scsi/sd.c
|
|
--- scsi.orig/sd.c Tue Sep 13 21:20:15 1994
|
|
+++ scsi/sd.c Wed Sep 14 20:46:02 1994
|
|
@@ -14,10 +14,11 @@
|
|
#include <linux/fs.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/string.h>
|
|
#include <linux/errno.h>
|
|
+#include <linux/timer.h>
|
|
#include <asm/system.h>
|
|
|
|
#define MAJOR_NR SCSI_DISK_MAJOR
|
|
#include "../block/blk.h"
|
|
#include "scsi.h"
|
|
@@ -45,10 +46,13 @@
|
|
SC->device->type != TYPE_MOD)
|
|
|
|
struct hd_struct * sd;
|
|
|
|
Scsi_Disk * rscsi_disks;
|
|
+
|
|
+struct timer_list *sd_idle_timer; /* timer for idling disks */
|
|
+
|
|
static int * sd_sizes;
|
|
static int * sd_blocksizes;
|
|
|
|
extern int sd_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
|
|
|
|
@@ -137,10 +141,111 @@
|
|
0, /* number */
|
|
NULL, /* internal */
|
|
NULL /* next */
|
|
};
|
|
|
|
+static void sd_start_done (Scsi_Cmnd * SCpnt)
|
|
+{
|
|
+ struct request * req;
|
|
+
|
|
+ req = &SCpnt->request;
|
|
+ req->dev = 0xfffe; /* Busy, but indicate request done */
|
|
+
|
|
+ if (req->sem != NULL) {
|
|
+ up(req->sem);
|
|
+ }
|
|
+}
|
|
+
|
|
+static int sd_start (Scsi_Cmnd * SCpnt, int dev)
|
|
+{
|
|
+ char cmd[12];
|
|
+ int old_dev = SCpnt->request.dev;
|
|
+
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c : sd_start entered\n", 'a' + dev);
|
|
+#endif
|
|
+
|
|
+ cmd[0] = START_STOP;
|
|
+ cmd[1] = (rscsi_disks[dev].device->lun << 5);
|
|
+ cmd[2] = cmd[3] = cmd[5] = 0;
|
|
+ cmd[4] = 1;
|
|
+
|
|
+ SCpnt->request.dev = 0xffff; /* Mark as really busy again */
|
|
+
|
|
+ scsi_do_cmd(SCpnt, cmd, NULL, 0,
|
|
+ sd_start_done, 10 * 100, /* give it some time to start */
|
|
+ MAX_RETRIES);
|
|
+
|
|
+ while(SCpnt->request.dev != 0xfffe)
|
|
+ schedule();
|
|
+
|
|
+ SCpnt->request.dev = old_dev;
|
|
+
|
|
+ return SCpnt->result;
|
|
+}
|
|
+
|
|
+static void sd_stop_done (Scsi_Cmnd * SCpnt)
|
|
+{
|
|
+ struct request * req;
|
|
+
|
|
+ req = &SCpnt->request;
|
|
+ req->dev = 0xfffe; /* Busy, but indicate request done */
|
|
+
|
|
+ if (req->sem != NULL) {
|
|
+ up(req->sem);
|
|
+ }
|
|
+
|
|
+ SCpnt->request.dev = -1; /* Deallocate */
|
|
+ wake_up(&SCpnt->device->device_wait);
|
|
+}
|
|
+
|
|
+static void sd_stop (unsigned long nr)
|
|
+{
|
|
+ int dev = nr;
|
|
+ Scsi_Cmnd * SCpnt = NULL;
|
|
+ char cmd[12];
|
|
+
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c: sd_stop entered\n", 'a' + dev);
|
|
+#endif
|
|
+
|
|
+ cli();
|
|
+
|
|
+ del_timer(&sd_idle_timer[dev]); /* remove timer from list */
|
|
+
|
|
+ SCpnt = allocate_device(NULL, rscsi_disks[dev].device, 1);
|
|
+ if (SCpnt == NULL)
|
|
+ {
|
|
+ /* Could not allocate device so try again in a little while */
|
|
+ sd_idle_timer[dev].expires = HZ * 5;
|
|
+ add_timer(&sd_idle_timer[dev]);
|
|
+ sti();
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c : sd_stop could not allocate device\n", 'a' + dev);
|
|
+#endif
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ sti();
|
|
+
|
|
+ cmd[0] = START_STOP;
|
|
+ cmd[1] = (rscsi_disks[dev].device->lun << 5) | 1;
|
|
+ cmd[2] = cmd[3] = cmd[5] = 0;
|
|
+ cmd[4] = 0;
|
|
+
|
|
+ SCpnt->request.dev = 0xffff; /* Mark as really busy again */
|
|
+
|
|
+ scsi_do_cmd(SCpnt, cmd, NULL, 0,
|
|
+ sd_stop_done, SD_TIMEOUT,
|
|
+ MAX_RETRIES);
|
|
+
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c : drive has been stopped\n", 'a' + dev);
|
|
+#endif
|
|
+ rscsi_disks[dev].stopped = 1;
|
|
+}
|
|
+
|
|
static void sd_geninit (void)
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; i < sd_template.dev_max; ++i)
|
|
@@ -438,10 +543,41 @@
|
|
/* printk("SCSI disk has been changed. Prohibiting further I/O.\n"); */
|
|
end_scsi_request(SCpnt, 0, SCpnt->request.nr_sectors);
|
|
goto repeat;
|
|
}
|
|
|
|
+ /*
|
|
+ * Attempt to restart drive
|
|
+ */
|
|
+ if (rscsi_disks[dev].stopped)
|
|
+ {
|
|
+ int status;
|
|
+
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c : starting drive\n", 'a' + dev);
|
|
+#endif
|
|
+ if ((status = sd_start(SCpnt, dev)) != 0)
|
|
+ {
|
|
+ printk("sd%c : restart failed, status = %x.\n", 'a' + dev, status);
|
|
+
|
|
+ end_scsi_request(SCpnt, 0, SCpnt->request.nr_sectors);
|
|
+ goto repeat;
|
|
+ }
|
|
+
|
|
+ rscsi_disks[dev].stopped = 0;
|
|
+ }
|
|
+
|
|
+ /* restart the idle timer */
|
|
+ cli();
|
|
+ del_timer(&sd_idle_timer[dev]);
|
|
+ if (rscsi_disks[dev].idle_timeout != 0)
|
|
+ {
|
|
+ sd_idle_timer[dev].expires = rscsi_disks[dev].idle_timeout;
|
|
+ add_timer(&sd_idle_timer[dev]);
|
|
+ }
|
|
+ sti();
|
|
+
|
|
#ifdef DEBUG
|
|
printk("sd%c : real dev = /dev/sd%c, block = %d\n", 'a' + MINOR(SCpnt->request.dev), dev, block);
|
|
#endif
|
|
|
|
switch (SCpnt->request.cmd)
|
|
@@ -980,10 +1116,15 @@
|
|
}
|
|
|
|
rscsi_disks[i].ten = 1;
|
|
rscsi_disks[i].remap = 1;
|
|
scsi_free(buffer, 512);
|
|
+
|
|
+ /* Set up flags and timeout for turning off idle drives - Wingel */
|
|
+ rscsi_disks[i].stopped = 0;
|
|
+ rscsi_disks[i].idle_timeout = 0; /* disabled */
|
|
+
|
|
return i;
|
|
}
|
|
|
|
/*
|
|
The sd_init() function looks at all SCSI drives present, determines
|
|
@@ -1012,10 +1153,21 @@
|
|
sd_template.dev_max = sd_template.dev_noticed;
|
|
|
|
rscsi_disks = (Scsi_Disk *)
|
|
scsi_init_malloc(sd_template.dev_max * sizeof(Scsi_Disk));
|
|
memset(rscsi_disks, 0, sd_template.dev_max * sizeof(Scsi_Disk));
|
|
+
|
|
+ /* Allocate and initialize idle timers, do not activate them - Wingel */
|
|
+ sd_idle_timer = (struct timer_list *)
|
|
+ scsi_init_malloc(sd_template.dev_max * sizeof(struct timer_list));
|
|
+ for (i = 0; i < sd_template.dev_max; i++)
|
|
+ {
|
|
+ init_timer(&sd_idle_timer[i]);
|
|
+ sd_idle_timer[i].expires = 0;
|
|
+ sd_idle_timer[i].data = i;
|
|
+ sd_idle_timer[i].function = sd_stop;
|
|
+ }
|
|
|
|
sd_sizes = (int *) scsi_init_malloc((sd_template.dev_max << 4) *
|
|
sizeof(int));
|
|
memset(sd_sizes, 0, (sd_template.dev_max << 4) * sizeof(int));
|
|
|
|
diff -u5 -r scsi.orig/sd.h scsi/sd.h
|
|
--- scsi.orig/sd.h Tue Sep 13 21:26:10 1994
|
|
+++ scsi/sd.h Wed Sep 14 16:38:26 1994
|
|
@@ -37,10 +37,14 @@
|
|
Scsi_Device *device;
|
|
unsigned char sector_bit_size; /* sector_size = 2 to the bit size power */
|
|
unsigned char sector_bit_shift; /* power of 2 sectors per FS block */
|
|
unsigned ten:1; /* support ten byte read / write */
|
|
unsigned remap:1; /* support remapping */
|
|
+ unsigned stopped:1;
|
|
+ unsigned long idle_timeout; /* idle time before turning off drive */
|
|
} Scsi_Disk;
|
|
|
|
extern Scsi_Disk * rscsi_disks;
|
|
+
|
|
+extern struct timer_list *sd_idle_timer; /* timer for idling disks */
|
|
|
|
#endif
|
|
diff -u5 -r scsi.orig/sd_ioctl.c scsi/sd_ioctl.c
|
|
--- scsi.orig/sd_ioctl.c Tue Sep 13 21:20:15 1994
|
|
+++ scsi/sd_ioctl.c Wed Sep 14 19:47:15 1994
|
|
@@ -1,10 +1,11 @@
|
|
#include <linux/kernel.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/fs.h>
|
|
#include <linux/hdreg.h>
|
|
#include <linux/errno.h>
|
|
+#include <linux/timer.h>
|
|
|
|
#include <asm/segment.h>
|
|
|
|
#include "../block/blk.h"
|
|
#include "scsi.h"
|
|
@@ -19,10 +20,11 @@
|
|
int dev = inode->i_rdev;
|
|
int error;
|
|
struct Scsi_Host * host;
|
|
int diskinfo[4];
|
|
struct hd_geometry *loc = (struct hd_geometry *) arg;
|
|
+ unsigned long timeout;
|
|
|
|
switch (cmd) {
|
|
case HDIO_REQ: /* Return BIOS disk parameters */
|
|
if (!loc) return -EINVAL;
|
|
error = verify_area(VERIFY_WRITE, loc, sizeof(*loc));
|
|
@@ -66,9 +68,52 @@
|
|
invalidate_buffers(inode->i_rdev);
|
|
return 0;
|
|
|
|
case BLKRRPART: /* Re-read partition tables */
|
|
return revalidate_scsidisk(dev, 1);
|
|
+
|
|
+#define BLKIDLE 4747
|
|
+ case BLKIDLE: /* Idle disks after timeout */
|
|
+ if (!arg) return -EINVAL;
|
|
+ error = verify_area(VERIFY_READ, (long *) arg, sizeof(long));
|
|
+ if (error)
|
|
+ return error;
|
|
+
|
|
+ cli(); /* is this really neccesary? */
|
|
+ del_timer(&sd_idle_timer[MINOR(dev) >> 4]);
|
|
+ sti();
|
|
+
|
|
+ timeout = get_fs_long((long *) arg);
|
|
+
|
|
+ if (timeout != 0 && timeout < 15)
|
|
+ {
|
|
+ /* Be a bit over-protective */
|
|
+ printk("sd%c : warning, idle timeout of %ld seconds is WAY to small\n",
|
|
+ 'a' + (MINOR(dev) >> 4),
|
|
+ timeout);
|
|
+ timeout = 15;
|
|
+ }
|
|
+
|
|
+ rscsi_disks[MINOR(dev) >> 4].idle_timeout = timeout * HZ;
|
|
+ if (rscsi_disks[MINOR(dev) >> 4].idle_timeout != 0)
|
|
+ {
|
|
+#ifdef DEBUG
|
|
+ printk("sd%c : idle timeout set to %ld jiffies\n",
|
|
+ 'a' + (MINOR(dev) >> 4),
|
|
+ rscsi_disks[MINOR(dev) >> 4].idle_timeout);
|
|
+#endif
|
|
+ sd_idle_timer[MINOR(dev) >> 4].expires = rscsi_disks[MINOR(dev) >> 4].idle_timeout;
|
|
+ cli();
|
|
+ add_timer(&sd_idle_timer[MINOR(dev) >> 4]);
|
|
+ sti();
|
|
+ }
|
|
+#ifdef DEBUG
|
|
+ else
|
|
+ printk("sd%c : idle timeout disabled\n",
|
|
+ 'a' + (MINOR(dev) >> 4));
|
|
+#endif
|
|
+ return 0;
|
|
+
|
|
default:
|
|
return scsi_ioctl(rscsi_disks[MINOR(dev) >> 4].device , cmd, (void *) arg);
|
|
}
|
|
}
|
|
|
|
|
|
--
|
|
Uwe Bonnes bon@lte.e-technik.uni-erlangen.de
|
|
|
|
------------------------------
|
|
|
|
From: jrv@truth.mitre.org (Van Zandt)
|
|
Subject: Re: LINUX mouse problem
|
|
Date: 4 Oct 1994 16:45:44 GMT
|
|
|
|
stephenb@scribendum.win-uk.net (Stephen Benson) writes:
|
|
>
|
|
>In article <Cx1HrL.J6u@eskimo.com>, S. O'Connor (irish@eskimo.com) writes:
|
|
>
|
|
>This is not true. I run Selection all the time; in or out of X.
|
|
|
|
If you have a busmouse, you have to kill selection before starting X.
|
|
If you have a serial mouse, they don't conflict. It's in the X386 FAQ.
|
|
|
|
- Jim Van Zandt
|
|
|
|
|
|
------------------------------
|
|
|
|
|
|
** FOR YOUR REFERENCE **
|
|
|
|
The service address, to which questions about the list itself and requests
|
|
to be added to or deleted from it should be directed, is:
|
|
|
|
Internet: Linux-Admin-Request@NEWS-DIGESTS.MIT.EDU
|
|
|
|
You can send mail to the entire list (and comp.os.linux.admin) via:
|
|
|
|
Internet: Linux-Admin@NEWS-DIGESTS.MIT.EDU
|
|
|
|
Linux may be obtained via one of these FTP sites:
|
|
nic.funet.fi pub/OS/Linux
|
|
tsx-11.mit.edu pub/linux
|
|
sunsite.unc.edu pub/Linux
|
|
|
|
End of Linux-Admin Digest
|
|
******************************
|