static int sys_mgmt(int lld_no, struct mgmt_task *mtask) { struct tgtadm_req *req = &mtask->req; struct tgtadm_rsp *rsp = &mtask->rsp; int err = TGTADM_INVALID_REQUEST, len = mtask->bsize; switch (req->op) { case OP_UPDATE: if (!strncmp(mtask->buf, "debug=", 6)) { if (!strncmp(mtask->buf+6, "on", 2)) { is_debug = 1; err = 0; } else if (!strncmp(mtask->buf+6, "off", 3)) { is_debug = 0; err = 0; } if (!err) eprintf("set debug to: %d\n", is_debug); } else if (tgt_drivers[lld_no]->update) err = tgt_drivers[lld_no]->update(req->mode, req->op, req->tid, req->sid, req->lun, req->cid, mtask->buf); rsp->err = err; rsp->len = sizeof(*rsp); break; case OP_SHOW: err = system_show(req->mode, mtask->buf, len); if (err >= 0 && tgt_drivers[lld_no]->show) { err += tgt_drivers[lld_no]->show(req->mode, req->tid, req->sid, req->cid, req->lun, mtask->buf + err, len - err); } set_show_results(rsp, &err); break; case OP_DELETE: if (is_system_inactive()) err = 0; rsp->err = err; rsp->len = sizeof(*rsp); break; default: break; } return err; }
static tgtadm_err sys_mgmt(int lld_no, struct mgmt_task *mtask) { struct tgtadm_req *req = &mtask->req; tgtadm_err adm_err = TGTADM_INVALID_REQUEST; switch (req->op) { case OP_UPDATE: if (!strncmp(mtask->req_buf, "debug=", 6)) { if (!strncmp(mtask->req_buf+6, "on", 2)) { is_debug = 1; adm_err = TGTADM_SUCCESS; } else if (!strncmp(mtask->req_buf+6, "off", 3)) { is_debug = 0; adm_err = TGTADM_SUCCESS; } if (adm_err == TGTADM_SUCCESS) eprintf("set debug to: %d\n", is_debug); } else if (tgt_drivers[lld_no]->update) adm_err = tgt_drivers[lld_no]->update(req->mode, req->op, req->tid, req->sid, req->lun, req->cid, mtask->req_buf); break; case OP_SHOW: concat_buf_init(&mtask->rsp_concat); adm_err = system_show(req->mode, &mtask->rsp_concat); if (tgt_drivers[lld_no]->show) adm_err = tgt_drivers[lld_no]->show(req->mode, req->tid, req->sid, req->cid, req->lun, &mtask->rsp_concat); concat_buf_finish(&mtask->rsp_concat); break; case OP_STATS: concat_buf_init(&mtask->rsp_concat); adm_err = tgt_stat_system(&mtask->rsp_concat); concat_buf_finish(&mtask->rsp_concat); break; case OP_DELETE: if (is_system_inactive()) adm_err = TGTADM_SUCCESS; break; default: break; } return adm_err; }