mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-03 08:22:44 +00:00
Add a "-s" argument to specify the command timeout in seconds.
Now you should be able to format a disk with something like: > scsi -f /dev/rsd?c -s 1200 -c "4 0 0 0 0 0" assuming sd.c lets you open it.
This commit is contained in:
parent
e12263638f
commit
1995d212e9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=8202
@ -39,10 +39,10 @@
|
|||||||
.\" SUCH DAMAGE.
|
.\" 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
|
.Dd October 11, 1993
|
||||||
.Dt SCSI 1
|
.Dt SCSI 8
|
||||||
.Os BSD 4
|
.Os BSD 4
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm scsi
|
.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 -m page [-P pc] # To read mode pages
|
||||||
scsi -f device -p [-b bus] [-l lun] # To probe all devices
|
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 -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)
|
-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
|
.Pp
|
||||||
"out_fmt" can be "-" to read output data from stdin;
|
"out_fmt" can be "-" to read output data from stdin;
|
||||||
"in_fmt" can be "-" to write input data to stdout;
|
"in_fmt" can be "-" to write input data to stdout;
|
||||||
@ -147,6 +147,9 @@ using the format arguments.
|
|||||||
.Fr -v
|
.Fr -v
|
||||||
turns on more verbose information.
|
turns on more verbose information.
|
||||||
.Pp
|
.Pp
|
||||||
|
.Fr -s
|
||||||
|
sets the command timeout in seconds. The default is two seconds.
|
||||||
|
.Pp
|
||||||
.Fr "-c cmd_fmt"
|
.Fr "-c cmd_fmt"
|
||||||
specifies the command as described in
|
specifies the command as described in
|
||||||
.Xr scsi 3 "."
|
.Xr scsi 3 "."
|
||||||
@ -165,7 +168,6 @@ can be specified as a hyphen ("-") to indicate that the
|
|||||||
.Fr count
|
.Fr count
|
||||||
bytes of data should be read from the standard input.
|
bytes of data should be read from the standard input.
|
||||||
.Pp
|
.Pp
|
||||||
.Fr "-o count out_fmt arg0 ... argn"
|
|
||||||
.Fr "-i count in_fmt"
|
.Fr "-i count in_fmt"
|
||||||
indicates that this is a data in command (i.e., data will be read from
|
indicates that this is a data in command (i.e., data will be read from
|
||||||
the device into the system) with
|
the device into the system) with
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* 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 <stdio.h>
|
#include <stdio.h>
|
||||||
@ -68,6 +68,7 @@ int modeflag;
|
|||||||
int editflag;
|
int editflag;
|
||||||
int modepage = 0; /* Read this mode page */
|
int modepage = 0; /* Read this mode page */
|
||||||
int pagectl = 0; /* Mode sense page control */
|
int pagectl = 0; /* Mode sense page control */
|
||||||
|
int seconds = 2;
|
||||||
|
|
||||||
void usage(void)
|
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 -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 -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 -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"
|
" scsi -f device [-v] [-s seconds] -c cmd_fmt [arg0 ... argn] # A command...\n"
|
||||||
" -o count out_fmt [arg0 ... argn] # EITHER (for data out)\n"
|
" -o count out_fmt [arg0 ... argn] # EITHER (data out)\n"
|
||||||
" -i count in_fmt # OR (for data in)\n"
|
" -i count in_fmt # OR (data in)\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\"out_fmt\" can be \"-\" to read output data from stdin;\n"
|
"\"out_fmt\" can be \"-\" to read output data from stdin;\n"
|
||||||
"\"in_fmt\" can be \"-\" to write input data to stdout;\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;
|
fflag = 0;
|
||||||
commandflag = 0;
|
commandflag = 0;
|
||||||
debugflag = 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) {
|
switch (ch) {
|
||||||
case 'p':
|
case 'p':
|
||||||
probe_all = 1;
|
probe_all = 1;
|
||||||
@ -151,6 +152,9 @@ void procargs(int *argc_p, char ***argv_p)
|
|||||||
case 'P':
|
case 'P':
|
||||||
pagectl = strtol(optarg, 0, 0);
|
pagectl = strtol(optarg, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
seconds = strtol(optarg, 0, 0);
|
||||||
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
modeflag = 1;
|
modeflag = 1;
|
||||||
modepage = strtol(optarg, 0, 0);
|
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
|
/* 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;
|
struct get_hook h;
|
||||||
scsireq_t *scsireq = scsireq_new();
|
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)
|
if (scsireq_enter(fd, scsireq) == -1)
|
||||||
{
|
{
|
||||||
scsi_debug(stderr, -1, scsireq);
|
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 (ioctl(fd, SCIOCFREEZE, 0) == -1) {
|
||||||
if (errno == ENODEV) {
|
if (errno == ENODEV) {
|
||||||
|
Loading…
Reference in New Issue
Block a user