diff options
author | Alexander Motin <mav@FreeBSD.org> | 2019-07-23 19:42:03 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2019-07-23 19:42:03 +0000 |
commit | 0642bc1cbb7969acecf4745183755ca52e1053fc (patch) | |
tree | 466a9239e8d5fc0c9f9490c754c0b396d258718e /sbin/camcontrol | |
parent | 88880fd4cf210442ab49709a4c21ec453f189848 (diff) | |
download | src-test2-0642bc1cbb7969acecf4745183755ca52e1053fc.tar.gz src-test2-0642bc1cbb7969acecf4745183755ca52e1053fc.zip |
Notes
Diffstat (limited to 'sbin/camcontrol')
-rw-r--r-- | sbin/camcontrol/camcontrol.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c index c181642309b2..81f9b09512ad 100644 --- a/sbin/camcontrol/camcontrol.c +++ b/sbin/camcontrol/camcontrol.c @@ -301,6 +301,7 @@ static int scsiserial(struct cam_device *device, int task_attr, int retry_count, int timeout); static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, cam_argmask *arglst); +static int reprobe(struct cam_device *device); static int dorescan_or_reset(int argc, char **argv, int rescan); static int rescan_or_reset_bus(path_id_t bus, int rescan); static int scanlun_or_reset_dev(path_id_t bus, target_id_t target, @@ -371,7 +372,6 @@ static int scsiprintopcodes(struct cam_device *device, int td_req, uint8_t *buf, static int scsiopcodes(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout, int verbose); -static int scsireprobe(struct cam_device *device); #ifndef min #define min(a,b) (((a)<(b))?(a):(b)) @@ -3094,6 +3094,8 @@ atahpa(struct cam_device *device, int retry_count, int timeout, timeout, ccb, &ident_buf); atahpa_print(ident_buf, hpasize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -3236,6 +3238,8 @@ ataama(struct cam_device *device, int retry_count, int timeout, error = ata_do_identify(device, retry_count, timeout, ccb, &ident_buf); ataama_print(ident_buf, nativesize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -9774,7 +9778,7 @@ bailout: static int -scsireprobe(struct cam_device *device) +reprobe(struct cam_device *device) { union ccb *ccb; int retval = 0; @@ -9786,7 +9790,7 @@ scsireprobe(struct cam_device *device) return (1); } - CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); + CCB_CLEAR_ALL_EXCEPT_HDR(ccb); ccb->ccb_h.func_code = XPT_REPROBE_LUN; @@ -10538,7 +10542,7 @@ main(int argc, char **argv) arglist & CAM_ARG_VERBOSE); break; case CAM_CMD_REPROBE: - error = scsireprobe(cam_dev); + error = reprobe(cam_dev); break; case CAM_CMD_ZONE: error = zone(cam_dev, argc, argv, combinedopt, |