diff --git a/sys/cam/scsi/scsi_enc.c b/sys/cam/scsi/scsi_enc.c --- a/sys/cam/scsi/scsi_enc.c +++ b/sys/cam/scsi/scsi_enc.c @@ -77,6 +77,7 @@ static void enc_async(void *, uint32_t, struct cam_path *, void *); static enctyp enc_type(struct ccb_getdev *); +static void enc_status_updater(void *arg); SYSCTL_NODE(_kern_cam, OID_AUTO, enc, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "CAM Enclosure Services driver"); @@ -457,6 +458,7 @@ break; cam_periph_lock(periph); error = enc->enc_vec.set_enc_status(enc, tmp, 1); + enc_status_updater(enc); cam_periph_unlock(periph); break; } @@ -475,6 +477,8 @@ break; cam_periph_lock(periph); error = enc->enc_vec.handle_string(enc, &sstr, cmd); + if (cmd == ENCIOC_SETSTRING) + enc_status_updater(enc); cam_periph_unlock(periph); if (error == 0 || error == ENOMEM) (void)copyout(&sstr.bufsiz, @@ -554,6 +558,7 @@ } cam_periph_lock(periph); error = enc->enc_vec.set_elm_status(enc, &elms, 1); + enc_status_updater(enc); cam_periph_unlock(periph); break;