mirror of
https://github.com/SCST-project/scst.git
synced 2026-10-22 06:02:33 +00:00
scst: Separate assignments from conditions and chained updates
Give chained state updates separate statements. Preserve the previous bio tail when linking a request, then advance it once for either the first or a subsequent bio. Move unconditionally evaluated daemon assignments immediately before their if statements. Preserve call order, errno checks and short-circuit behavior; leave else-if lookup chains and conditional assignments that need a separate control-flow decision unchanged. Checkpatch reports MULTIPLE_ASSIGNMENTS: multiple assignments should be avoided Checkpatch reports ASSIGN_IN_IF: do not use assignment in if condition
This commit is contained in:
+12
-6
@@ -527,7 +527,8 @@ static int chap_initiator_auth_check_response(struct connection *conn)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(value = text_key_find(conn, "CHAP_N"))) {
|
||||
value = text_key_find(conn, "CHAP_N");
|
||||
if (!value) {
|
||||
retval = CHAP_INITIATOR_ERROR;
|
||||
goto out;
|
||||
}
|
||||
@@ -544,12 +545,14 @@ static int chap_initiator_auth_check_response(struct connection *conn)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(value = text_key_find(conn, "CHAP_R"))) {
|
||||
value = text_key_find(conn, "CHAP_R");
|
||||
if (!value) {
|
||||
retval = CHAP_INITIATOR_ERROR;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((encoding_format = chap_check_encoding_format(value)) < 0) {
|
||||
encoding_format = chap_check_encoding_format(value);
|
||||
if (encoding_format < 0) {
|
||||
retval = CHAP_INITIATOR_ERROR;
|
||||
goto out;
|
||||
}
|
||||
@@ -650,7 +653,8 @@ static int chap_target_auth_create_response(struct connection *conn)
|
||||
int challenge_len = 0, digest_len = 0, retval = 0;
|
||||
int res;
|
||||
|
||||
if (!(value = text_key_find(conn, "CHAP_I"))) {
|
||||
value = text_key_find(conn, "CHAP_I");
|
||||
if (!value) {
|
||||
/* Initiator doesn't want target auth!? */
|
||||
conn->state = STATE_SECURITY_DONE;
|
||||
retval = 0;
|
||||
@@ -666,14 +670,16 @@ static int chap_target_auth_create_response(struct connection *conn)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(value = text_key_find(conn, "CHAP_C"))) {
|
||||
value = text_key_find(conn, "CHAP_C");
|
||||
if (!value) {
|
||||
log_warning("CHAP target auth.: got no challenge from initiator %s",
|
||||
conn->initiator);
|
||||
retval = CHAP_INITIATOR_ERROR;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((encoding_format = chap_check_encoding_format(value)) < 0) {
|
||||
encoding_format = chap_check_encoding_format(value);
|
||||
if (encoding_format < 0) {
|
||||
retval = CHAP_INITIATOR_ERROR;
|
||||
goto out;
|
||||
}
|
||||
|
||||
+10
-5
@@ -387,7 +387,8 @@ int config_account_query(u32 tid, int dir, const char *name, char *pass)
|
||||
{
|
||||
struct iscsi_attr *user;
|
||||
|
||||
if (!(user = account_lookup_by_name(tid, dir, name)))
|
||||
user = account_lookup_by_name(tid, dir, name);
|
||||
if (!user)
|
||||
return -ENOENT;
|
||||
|
||||
iscsi_strscpy(pass, ISCSI_USER_PASS(user), ISCSI_NAME_LEN);
|
||||
@@ -706,13 +707,15 @@ static int __initiator_match(int fd, char *str)
|
||||
|
||||
if (*p == '[') {
|
||||
p++;
|
||||
if (!(q = strchr(p, ']')))
|
||||
q = strchr(p, ']');
|
||||
if (!q)
|
||||
return 0;
|
||||
*(q++) = '\0';
|
||||
} else
|
||||
q = p;
|
||||
|
||||
if ((q = strchr(q, '/')))
|
||||
q = strchr(q, '/');
|
||||
if (q)
|
||||
*(q++) = '\0';
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
@@ -742,7 +745,8 @@ static int initiator_match(u32 tid, int fd, const char *filename)
|
||||
FILE *fp;
|
||||
char buf[BUFSIZE], *p;
|
||||
|
||||
if (!(fp = fopen(filename, "r")))
|
||||
fp = fopen(filename, "r");
|
||||
if (!fp)
|
||||
return err;
|
||||
|
||||
/*
|
||||
@@ -816,7 +820,8 @@ int config_target_destroy(u32 tid)
|
||||
{
|
||||
int err;
|
||||
|
||||
if ((err = target_del(tid, 0)) < 0)
|
||||
err = target_del(tid, 0);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return err;
|
||||
|
||||
+10
-5
@@ -165,7 +165,8 @@ int kernel_target_create(struct target *target, u32 *tid, u32 cookie)
|
||||
log_debug(1, "Adding target %s (attrs_num %d)", target->name,
|
||||
info.attrs_num);
|
||||
|
||||
if ((err = ioctl(ctrl_fd, ADD_TARGET, &info)) < 0) {
|
||||
err = ioctl(ctrl_fd, ADD_TARGET, &info);
|
||||
if (err < 0) {
|
||||
err = -errno;
|
||||
log_error("Can't create target %s: %s\n", target->name,
|
||||
strerror(errno));
|
||||
@@ -262,7 +263,8 @@ int kernel_initiator_allowed(u32 tid, const char *full_initiator_name)
|
||||
iscsi_strscpy(info.full_initiator_name, full_initiator_name,
|
||||
sizeof(info.full_initiator_name));
|
||||
|
||||
if ((err = ioctl(ctrl_fd, ISCSI_INITIATOR_ALLOWED, &info)) < 0) {
|
||||
err = ioctl(ctrl_fd, ISCSI_INITIATOR_ALLOWED, &info);
|
||||
if (err < 0) {
|
||||
err = -errno;
|
||||
log_error("Can't find out initiator %s permissions (%s, "
|
||||
"tid %u", full_initiator_name, strerror(errno), tid);
|
||||
@@ -280,7 +282,8 @@ int kernel_conn_destroy(u32 tid, u64 sid, u32 cid)
|
||||
info.sid = sid;
|
||||
info.cid = cid;
|
||||
|
||||
if ((err = ioctl(ctrl_fd, DEL_CONN, &info)) < 0) {
|
||||
err = ioctl(ctrl_fd, DEL_CONN, &info);
|
||||
if (err < 0) {
|
||||
err = -errno;
|
||||
log_debug(2, "Can't destroy conn (%s, tid %u, sid 0x%"
|
||||
PRIx64 ", cid %u\n", strerror(errno), tid, sid, cid);
|
||||
@@ -305,7 +308,8 @@ int kernel_params_get(u32 tid, u64 sid, int type, struct iscsi_param *params)
|
||||
info.sid = sid;
|
||||
info.params_type = type;
|
||||
|
||||
if ((err = ioctl(ctrl_fd, ISCSI_PARAM_GET, &info)) < 0) {
|
||||
err = ioctl(ctrl_fd, ISCSI_PARAM_GET, &info);
|
||||
if (err < 0) {
|
||||
err = -errno;
|
||||
log_debug(1, "Can't get session params for session 0x%" PRIx64
|
||||
" (tid %u, err %d): %s\n", sid, tid, err, strerror(errno));
|
||||
@@ -347,7 +351,8 @@ int kernel_params_set(u32 tid, u64 sid, int type, u32 partial,
|
||||
for (i = 0; i < target_key_last; i++)
|
||||
info.target_params[i] = params[i].val;
|
||||
|
||||
if ((err = ioctl(ctrl_fd, ISCSI_PARAM_SET, &info)) < 0) {
|
||||
err = ioctl(ctrl_fd, ISCSI_PARAM_SET, &info);
|
||||
if (err < 0) {
|
||||
err = -errno;
|
||||
log_error("Can't set session params for session 0x%" PRIx64
|
||||
" (tid %u, type %d, partial %d, err %d): %s\n", sid,
|
||||
|
||||
+12
-6
@@ -172,7 +172,8 @@ static int handle_e_add_target(int fd, const struct iscsi_kern_event *event)
|
||||
offs = sprintf(buf, "Target ");
|
||||
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, &buf[offs], event->param1_size, true)) < 0) {
|
||||
rc = nl_read(fd, &buf[offs], event->param1_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
@@ -188,7 +189,8 @@ static int handle_e_add_target(int fd, const struct iscsi_kern_event *event)
|
||||
|
||||
if (event->param2_size > 0) {
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, &buf[offs], event->param2_size, true)) < 0) {
|
||||
rc = nl_read(fd, &buf[offs], event->param2_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
@@ -409,7 +411,8 @@ static int handle_e_mgmt_cmd(int fd, const struct iscsi_kern_event *event)
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, buf, event->param1_size, true)) < 0) {
|
||||
rc = nl_read(fd, buf, event->param1_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
@@ -501,7 +504,8 @@ static int handle_e_get_attr_value(int fd, const struct iscsi_kern_event *event)
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, buf, event->param1_size, true)) < 0) {
|
||||
rc = nl_read(fd, buf, event->param1_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
@@ -818,7 +822,8 @@ static int handle_e_set_attr_value(int fd, const struct iscsi_kern_event *event)
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, buf, event->param1_size, true)) < 0) {
|
||||
rc = nl_read(fd, buf, event->param1_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
@@ -833,7 +838,8 @@ static int handle_e_set_attr_value(int fd, const struct iscsi_kern_event *event)
|
||||
offs += sprintf(&buf[offs], " ");
|
||||
|
||||
while (1) {
|
||||
if ((rc = nl_read(fd, &buf[offs], event->param2_size, true)) < 0) {
|
||||
rc = nl_read(fd, &buf[offs], event->param2_size, true);
|
||||
if (rc < 0) {
|
||||
if ((errno == EINTR) || (errno == EAGAIN))
|
||||
continue;
|
||||
log_error("read netlink fd (%d) failed: %s", fd,
|
||||
|
||||
@@ -221,12 +221,14 @@ static int iscsid_request(struct iscsi_adm_req *req, void *rsp_data,
|
||||
{
|
||||
int fd, err;
|
||||
|
||||
if ((fd = iscsid_connect()) < 0) {
|
||||
fd = iscsid_connect();
|
||||
if (fd < 0) {
|
||||
err = fd;
|
||||
goto out_close;
|
||||
}
|
||||
|
||||
if ((err = iscsid_request_send(fd, req)) < 0)
|
||||
err = iscsid_request_send(fd, req);
|
||||
if (err < 0)
|
||||
goto out_report;
|
||||
|
||||
err = iscsid_response_recv(fd, req, rsp_data, rsp_data_sz);
|
||||
@@ -283,11 +285,13 @@ static int parse_trgt_params(struct msg_trgt *msg, char *params)
|
||||
|
||||
if (!*p)
|
||||
continue;
|
||||
if (!(q = strchr(p, '=')))
|
||||
q = strchr(p, '=');
|
||||
if (!q)
|
||||
continue;
|
||||
*q++ = '\0';
|
||||
|
||||
if (!((idx = params_index_by_name(p, target_keys)) < 0)) {
|
||||
idx = params_index_by_name(p, target_keys);
|
||||
if (idx >= 0) {
|
||||
if (params_str_to_val(target_keys, idx, q, &val)) {
|
||||
fprintf(stderr,
|
||||
"Invalid %s value \"%s\".\n",
|
||||
@@ -302,7 +306,8 @@ static int parse_trgt_params(struct msg_trgt *msg, char *params)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!((idx = params_index_by_name(p, session_keys)) < 0)) {
|
||||
idx = params_index_by_name(p, session_keys);
|
||||
if (idx >= 0) {
|
||||
if (params_str_to_val(session_keys, idx, q, &val)) {
|
||||
fprintf(stderr,
|
||||
"Invalid %s value \"%s\".\n",
|
||||
@@ -418,7 +423,8 @@ static int parse_user_params(char *params, u32 *auth_dir, char **user,
|
||||
if (!*p)
|
||||
continue;
|
||||
|
||||
if (!(q = strchr(p, '=')))
|
||||
q = strchr(p, '=');
|
||||
if (!q)
|
||||
continue;
|
||||
*q++ = '\0';
|
||||
if (isspace(*q))
|
||||
|
||||
@@ -441,7 +441,8 @@ static void accept_connection(int listen)
|
||||
char target_portal[ISCSI_PORTAL_LEN], target_portal_port[NI_MAXSERV];
|
||||
|
||||
namesize = sizeof(from);
|
||||
if ((fd = accept(listen, &from.sa, &namesize)) < 0) {
|
||||
fd = accept(listen, &from.sa, &namesize);
|
||||
if (fd < 0) {
|
||||
switch (errno) {
|
||||
case EINTR:
|
||||
case EAGAIN:
|
||||
@@ -952,12 +953,14 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if ((ctrl_fd = kernel_open()) < 0)
|
||||
ctrl_fd = kernel_open();
|
||||
if (ctrl_fd < 0)
|
||||
exit(-1);
|
||||
|
||||
init_max_params();
|
||||
|
||||
if ((nl_fd = nl_open()) < 0) {
|
||||
nl_fd = nl_open();
|
||||
if (nl_fd < 0) {
|
||||
perror("netlink open failed");
|
||||
exit(-1);
|
||||
}
|
||||
@@ -982,7 +985,8 @@ int main(int argc, char **argv)
|
||||
if (err != 0)
|
||||
exit(err);
|
||||
|
||||
if ((ipc_fd = iscsi_adm_request_listen()) < 0) {
|
||||
ipc_fd = iscsi_adm_request_listen();
|
||||
if (ipc_fd < 0) {
|
||||
perror("Opening AF_LOCAL socket failed");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ static char *next_key(char **data, int *datasize, char **value)
|
||||
char *key, *p, *q;
|
||||
int size = *datasize;
|
||||
|
||||
key = p = *data;
|
||||
p = *data;
|
||||
key = p;
|
||||
for (; size > 0 && *p != '='; p++, size--)
|
||||
;
|
||||
if (!size)
|
||||
|
||||
@@ -117,7 +117,8 @@ static int isns_get_ip(int fd)
|
||||
case AF_INET:
|
||||
addr = lss.sin.sin_addr.s_addr;
|
||||
|
||||
ip[10] = ip[11] = 0xff;
|
||||
ip[11] = 0xff;
|
||||
ip[10] = 0xff;
|
||||
ip[15] = 0xff & (addr >> 24);
|
||||
ip[14] = 0xff & (addr >> 16);
|
||||
ip[13] = 0xff & (addr >> 8);
|
||||
|
||||
@@ -40,12 +40,14 @@ int iscsi_adm_request_listen(void)
|
||||
memcpy((char *) &addr.sun_path + 1, ISCSI_ADM_NAMESPACE,
|
||||
strlen(ISCSI_ADM_NAMESPACE));
|
||||
|
||||
if ((err = bind(fd, (struct sockaddr *) &addr, sizeof(addr))) < 0) {
|
||||
err = bind(fd, (struct sockaddr *) &addr, sizeof(addr));
|
||||
if (err < 0) {
|
||||
close(fd);
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((err = listen(fd, 32)) < 0) {
|
||||
err = listen(fd, 32);
|
||||
if (err < 0) {
|
||||
close(fd);
|
||||
return err;
|
||||
}
|
||||
@@ -161,7 +163,8 @@ int iscsi_adm_request_handle(int accept_fd)
|
||||
|
||||
memset(&rsp, 0, sizeof(rsp));
|
||||
len = sizeof(addr);
|
||||
if ((fd = accept(accept_fd, (struct sockaddr *) &addr, &len)) < 0) {
|
||||
fd = accept(accept_fd, (struct sockaddr *) &addr, &len);
|
||||
if (fd < 0) {
|
||||
if (errno == EINTR)
|
||||
err = -EINTR;
|
||||
else
|
||||
@@ -171,7 +174,8 @@ int iscsi_adm_request_handle(int accept_fd)
|
||||
}
|
||||
|
||||
len = sizeof(cred);
|
||||
if ((err = getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void *) &cred, &len)) < 0) {
|
||||
err = getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void *) &cred, &len);
|
||||
if (err < 0) {
|
||||
rsp.err = -EPERM;
|
||||
goto send;
|
||||
}
|
||||
@@ -181,7 +185,8 @@ int iscsi_adm_request_handle(int accept_fd)
|
||||
goto send;
|
||||
}
|
||||
|
||||
if ((err = read(fd, &req, sizeof(req))) != sizeof(req)) {
|
||||
err = read(fd, &req, sizeof(req));
|
||||
if (err != sizeof(req)) {
|
||||
if (err >= 0)
|
||||
err = -EIO;
|
||||
goto out;
|
||||
|
||||
@@ -84,7 +84,8 @@ int create_and_open_dev(const char *dev, int readonly)
|
||||
else
|
||||
flags = O_RDWR;
|
||||
|
||||
err = ctlfd = open(devname, flags);
|
||||
ctlfd = open(devname, flags);
|
||||
err = ctlfd;
|
||||
if (ctlfd < 0) {
|
||||
err = -errno;
|
||||
printf("cannot open %s %s\n", devname, strerror(errno));
|
||||
|
||||
@@ -226,7 +226,8 @@ static int digest_str_to_val(const char *str, unsigned int *val)
|
||||
break;
|
||||
}
|
||||
|
||||
if ((q = strchr(p, ',')))
|
||||
q = strchr(p, ',');
|
||||
if (q)
|
||||
p = q + 1;
|
||||
} while (q);
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ static int session_alloc(u32 tid, struct session **psess)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(session = malloc(sizeof(*session)))) {
|
||||
session = malloc(sizeof(*session));
|
||||
if (!session) {
|
||||
res = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
@@ -60,7 +61,8 @@ struct session *session_find_name(u32 tid, const char *iname, union iscsi_sid si
|
||||
struct session *session;
|
||||
struct target *target;
|
||||
|
||||
if (!(target = target_find_by_id(tid))) {
|
||||
target = target_find_by_id(tid);
|
||||
if (!target) {
|
||||
log_error("Target tid %d not found", tid);
|
||||
return NULL;
|
||||
}
|
||||
@@ -81,7 +83,8 @@ struct session *session_find_id(u32 tid, u64 sid)
|
||||
struct session *session;
|
||||
struct target *target;
|
||||
|
||||
if (!(target = target_find_by_id(tid)))
|
||||
target = target_find_by_id(tid);
|
||||
if (!target)
|
||||
return NULL;
|
||||
|
||||
log_debug(1, "Searching for sid %#" PRIx64, sid);
|
||||
@@ -99,7 +102,8 @@ static bool session_id_exists(u32 tid, u64 sid, struct session *exclude)
|
||||
struct session *session;
|
||||
struct target *target;
|
||||
|
||||
if (!(target = target_find_by_id(tid)))
|
||||
target = target_find_by_id(tid);
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
log_debug(1, "Searching for sid %#" PRIx64, sid);
|
||||
|
||||
@@ -491,7 +491,8 @@ bool target_redirected(struct target *target, struct connection *conn)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((p = strrchr(tmp, '%')))
|
||||
p = strrchr(tmp, '%');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
|
||||
if (sa.sa.sa_family == AF_INET6)
|
||||
|
||||
@@ -2266,7 +2266,8 @@ static inline void scsi_req_init(struct request *rq)
|
||||
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
rq->__data_len = 0;
|
||||
rq->__sector = (sector_t) -1;
|
||||
rq->bio = rq->biotail = NULL;
|
||||
rq->biotail = NULL;
|
||||
rq->bio = NULL;
|
||||
memset(rq->__cmd, 0, sizeof(rq->__cmd));
|
||||
rq->cmd = rq->__cmd;
|
||||
#else
|
||||
|
||||
@@ -5901,9 +5901,10 @@ static void blockio_exec_rw(struct vdisk_cmd_params *p, bool write, bool fua)
|
||||
vdisk_bio_set_hoq(bio);
|
||||
|
||||
if (!hbio)
|
||||
hbio = tbio = bio;
|
||||
hbio = bio;
|
||||
else
|
||||
tbio = tbio->bi_next = bio;
|
||||
tbio->bi_next = bio;
|
||||
tbio = bio;
|
||||
}
|
||||
|
||||
bytes = min_t(unsigned int, len, PAGE_SIZE - off);
|
||||
|
||||
+4
-2
@@ -16123,9 +16123,11 @@ static void __scst_update_latency_stats(struct scst_cmd *cmd,
|
||||
stat->maxc = deltac;
|
||||
#endif
|
||||
} else {
|
||||
stat->min = stat->max = delta;
|
||||
stat->max = delta;
|
||||
stat->min = delta;
|
||||
#ifdef SCST_MEASURE_CLOCK_CYCLES
|
||||
stat->minc = stat->maxc = deltac;
|
||||
stat->maxc = deltac;
|
||||
stat->minc = deltac;
|
||||
#endif
|
||||
}
|
||||
stat->sum += delta;
|
||||
|
||||
Reference in New Issue
Block a user