summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorken <ken@FreeBSD.org>2000-06-04 02:43:55 +0000
committerken <ken@FreeBSD.org>2000-06-04 02:43:55 +0000
commit5e934fe1f7b01c50b1d8b916e04a0a67e3fb1952 (patch)
tree2f9f43edc892ddc08c5fbd8676ea2252df068dba /sbin
parenta8a49218a7bce941cab169cd6601dad99356387d (diff)
downloadFreeBSD-src-5e934fe1f7b01c50b1d8b916e04a0a67e3fb1952.zip
FreeBSD-src-5e934fe1f7b01c50b1d8b916e04a0a67e3fb1952.tar.gz
Eliminate the default device name (da) and unit number (0) in camcontrol.
This may break some scripts, but with the number of ways users can damage a system with this tool, it's important to make sure they specify which device they want to talk to. Suggested by: joerg
Diffstat (limited to 'sbin')
-rw-r--r--sbin/camcontrol/camcontrol.87
-rw-r--r--sbin/camcontrol/camcontrol.c25
2 files changed, 15 insertions, 17 deletions
diff --git a/sbin/camcontrol/camcontrol.8 b/sbin/camcontrol/camcontrol.8
index 0b003c9..6d2c59f 100644
--- a/sbin/camcontrol/camcontrol.8
+++ b/sbin/camcontrol/camcontrol.8
@@ -202,13 +202,12 @@ the code will generally attempt to spin up drives that are not spinning.
It may take some other actions, depending upon the sense code returned from
the command.
.It Fl n Ar dev_name
-Specify the device type to operate on. The default is
-.Em da .
+Specify the device type to operate on, e.g. "da", "cd".
.It Fl t Ar timeout
SCSI command timeout in seconds. This overrides the default timeout for
any given command.
.It Fl u Ar unit_number
-Specify the device unit number. The default is 0.
+Specify the device unit number, e.g. "1", "5".
.It Fl v
Be verbose, print out sense information for failed SCSI commands.
.El
@@ -616,7 +615,7 @@ are the CAM application passthrough devices.
Eject the CD from cd1, and print SCSI sense information if the command
fails.
.Pp
-.Dl camcontrol tur
+.Dl camcontrol tur da0
.Pp
Send the SCSI test unit ready command to da0.
.Nm camcontrol
diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c
index eaaba37..5a0ad21 100644
--- a/sbin/camcontrol/camcontrol.c
+++ b/sbin/camcontrol/camcontrol.c
@@ -48,9 +48,6 @@
#include <camlib.h>
#include "camcontrol.h"
-#define DEFAULT_DEVICE "da"
-#define DEFAULT_UNIT 0
-
typedef enum {
CAM_ARG_NONE = 0x00000000,
CAM_ARG_DEVLIST = 0x00000001,
@@ -1068,6 +1065,8 @@ scanlun_or_reset_dev(int bus, int target, int lun, int scan)
struct cam_device *device;
int fd;
+ device = NULL;
+
if (bus < 0) {
warnx("invalid bus number %d", bus);
return(1);
@@ -3015,8 +3014,8 @@ usage(int verbose)
"Generic arguments:\n"
"-v be verbose, print out sense information\n"
"-t timeout command timeout in seconds, overrides default timeout\n"
-"-n dev_name specify device name (default is %s)\n"
-"-u unit specify unit number (default is %d)\n"
+"-n dev_name specify device name, e.g. \"da\", \"cd\"\n"
+"-u unit specify unit number, e.g. \"0\", \"5\"\n"
"-E have the kernel attempt to perform SCSI error recovery\n"
"-C count specify the SCSI command retry count (needs -E to work)\n"
"modepage arguments:\n"
@@ -3059,8 +3058,7 @@ usage(int verbose)
"format arguments:\n"
"-q be quiet, don't print status messages\n"
"-w don't send immediate format command\n"
-"-y don't ask any questions\n",
-DEFAULT_DEVICE, DEFAULT_UNIT);
+"-y don't ask any questions\n");
}
int
@@ -3245,12 +3243,6 @@ main(int argc, char **argv)
}
}
- if ((arglist & CAM_ARG_DEVICE) == 0)
- device = (char *)strdup(DEFAULT_DEVICE);
-
- if ((arglist & CAM_ARG_UNIT) == 0)
- unit = DEFAULT_UNIT;
-
/*
* For most commands we'll want to open the passthrough device
* associated with the specified device. In the case of the rescan
@@ -3258,6 +3250,13 @@ main(int argc, char **argv)
* transport layer device.
*/
if (devopen == 1) {
+ if (((arglist & (CAM_ARG_BUS|CAM_ARG_TARGET)) == 0)
+ && (((arglist & CAM_ARG_DEVICE) == 0)
+ || ((arglist & CAM_ARG_UNIT) == 0))) {
+ errx(1, "subcommand \"%s\" requires a valid device "
+ "identifier", argv[1]);
+ }
+
if ((cam_dev = ((arglist & (CAM_ARG_BUS | CAM_ARG_TARGET))?
cam_open_btl(bus, target, lun, O_RDWR, NULL) :
cam_open_spec_device(device,unit,O_RDWR,NULL)))
OpenPOWER on IntegriCloud