diff --git a/sbin/scsi/scsi.8 b/sbin/scsi/scsi.8 index b843835790f9..356b57c190a1 100644 --- a/sbin/scsi/scsi.8 +++ b/sbin/scsi/scsi.8 @@ -39,10 +39,10 @@ .\" SUCH DAMAGE. .\" .\" -.\" $Id: scsi.8,v 1.2 1995/04/17 14:51:54 dufault Exp $ +.\" $Id: scsi.8,v 1.3 1995/04/28 19:24:38 dufault Exp $ .\" .Dd October 11, 1993 -.Dt SCSI 1 +.Dt SCSI 8 .Os BSD 4 .Sh NAME .Nm scsi @@ -55,9 +55,9 @@ scsi -f device [-v] -z seconds # To freeze bus scsi -f device -m page [-P pc] # To read mode pages scsi -f device -p [-b bus] [-l lun] # To probe all devices scsi -f device -r [-b bus] [-t targ] [-l lun] # To reprobe a device -scsi -f device [-v] -c cmd_fmt [arg0 ... argn] \\ # To send a command... +scsi -f device [-v] [-s seconds] -c cmd_fmt [arg0 ... argn] # A command... -o count out_fmt [arg0 ... argn] # EITHER (for data out) - -i count in_fmt # OR (for data in) + -i count in_fmt # OR (for data in) .Pp "out_fmt" can be "-" to read output data from stdin; "in_fmt" can be "-" to write input data to stdout; @@ -147,6 +147,9 @@ using the format arguments. .Fr -v turns on more verbose information. .Pp +.Fr -s +sets the command timeout in seconds. The default is two seconds. +.Pp .Fr "-c cmd_fmt" specifies the command as described in .Xr scsi 3 "." @@ -165,7 +168,6 @@ can be specified as a hyphen ("-") to indicate that the .Fr count bytes of data should be read from the standard input. .Pp -.Fr "-o count out_fmt arg0 ... argn" .Fr "-i count in_fmt" indicates that this is a data in command (i.e., data will be read from the device into the system) with diff --git a/sbin/scsi/scsi.c b/sbin/scsi/scsi.c index 9686be9f3bb9..45cecea37043 100644 --- a/sbin/scsi/scsi.c +++ b/sbin/scsi/scsi.c @@ -39,7 +39,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: scsi.c,v 1.3 1995/04/17 14:35:07 dufault Exp $ + * $Id: scsi.c,v 1.4 1995/04/28 19:24:39 dufault Exp $ */ #include @@ -68,6 +68,7 @@ int modeflag; int editflag; int modepage = 0; /* Read this mode page */ int pagectl = 0; /* Mode sense page control */ +int seconds = 2; void usage(void) { @@ -80,9 +81,9 @@ void usage(void) " scsi -f device -m page [-P pc] # To read mode pages\n" " scsi -f device -p [-b bus] [-l lun] # To probe all devices\n" " scsi -f device -r [-b bus] [-t targ] [-l lun] # To reprobe a device\n" -" scsi -f device [-v] -c cmd_fmt [arg0 ... argn] \\ # To send a command...\n" -" -o count out_fmt [arg0 ... argn] # EITHER (for data out)\n" -" -i count in_fmt # OR (for data in)\n" +" scsi -f device [-v] [-s seconds] -c cmd_fmt [arg0 ... argn] # A command...\n" +" -o count out_fmt [arg0 ... argn] # EITHER (data out)\n" +" -i count in_fmt # OR (data in)\n" "\n" "\"out_fmt\" can be \"-\" to read output data from stdin;\n" "\"in_fmt\" can be \"-\" to write input data to stdout;\n" @@ -106,7 +107,7 @@ void procargs(int *argc_p, char ***argv_p) fflag = 0; commandflag = 0; debugflag = 0; - while ((ch = getopt(argc, argv, "ceprvf:d:b:t:l:z:m:P:")) != EOF) { + while ((ch = getopt(argc, argv, "ceprvf:d:b:t:l:z:m:P:s:")) != EOF) { switch (ch) { case 'p': probe_all = 1; @@ -151,6 +152,9 @@ void procargs(int *argc_p, char ***argv_p) case 'P': pagectl = strtol(optarg, 0, 0); break; + case 's': + seconds = strtol(optarg, 0, 0); + break; case 'm': modeflag = 1; modepage = strtol(optarg, 0, 0); @@ -270,7 +274,8 @@ enum data_phase {none = 0, in, out}; /* do_cmd: Send a command to a SCSI device */ -void do_cmd(int fd, char *fmt, int argc, char **argv) +static void +do_cmd(int fd, char *fmt, int argc, char **argv) { struct get_hook h; scsireq_t *scsireq = scsireq_new(); @@ -344,6 +349,9 @@ void do_cmd(int fd, char *fmt, int argc, char **argv) } } + + scsireq->timeout = seconds * 1000; + if (scsireq_enter(fd, scsireq) == -1) { scsi_debug(stderr, -1, scsireq); @@ -371,7 +379,8 @@ void do_cmd(int fd, char *fmt, int argc, char **argv) } } -static void freeze_ioctl(int fd, int op, void *data) +static void +freeze_ioctl(int fd, int op, void *data) { if (ioctl(fd, SCIOCFREEZE, 0) == -1) { if (errno == ENODEV) {