Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

target/iscsi: Fold _decide_list_to_build into _build_pdu_and_seq_lists

Rename iscsit_build_pdu_and_seq_list to iscsit_do_build_pdu_and_seq_lists

Rename iscsit_do_build_list to iscsit_build_pdu_and_seq_lists

Move code from iscsit_decide_list_to_build into _seq_pdu_list.c, seems
a better fit.

Also update some comments in pdu/seq code for correctness and whitespace.

Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

authored by

Andy Grover and committed by
Nicholas Bellinger
4334e49b ebf1d95c

+50 -58
+1 -1
drivers/target/iscsi/iscsi_target.c
··· 1060 1060 */ 1061 1061 send_check_condition = 1; 1062 1062 } else { 1063 - if (iscsit_decide_list_to_build(cmd, payload_length) < 0) 1063 + if (iscsit_build_pdu_and_seq_lists(cmd, payload_length) < 0) 1064 1064 return iscsit_add_reject_from_cmd( 1065 1065 ISCSI_REASON_BOOKMARK_NO_RESOURCES, 1066 1066 1, 1, buf, cmd);
+48 -10
drivers/target/iscsi/iscsi_target_seq_pdu_list.c
··· 24 24 25 25 #include "iscsi_target_core.h" 26 26 #include "iscsi_target_util.h" 27 + #include "iscsi_target_tpg.h" 27 28 #include "iscsi_target_seq_pdu_list.h" 28 29 29 30 #define OFFLOAD_BUF_SIZE 32768 ··· 288 287 289 288 290 289 /* 291 - * Builds PDU and/or Sequence list, called while DataSequenceInOrder=No 292 - * and DataPDUInOrder=No. 290 + * Builds PDU and/or Sequence list, called while DataSequenceInOrder=No 291 + * or DataPDUInOrder=No. 293 292 */ 294 - static int iscsit_build_pdu_and_seq_list( 293 + static int iscsit_do_build_pdu_and_seq_lists( 295 294 struct iscsi_cmd *cmd, 296 295 struct iscsi_build_list *bl) 297 296 { ··· 494 493 return 0; 495 494 } 496 495 497 - /* 498 - * Only called while DataSequenceInOrder=No or DataPDUInOrder=No. 499 - */ 500 - int iscsit_do_build_list( 496 + int iscsit_build_pdu_and_seq_lists( 501 497 struct iscsi_cmd *cmd, 502 - struct iscsi_build_list *bl) 498 + u32 immediate_data_length) 503 499 { 500 + struct iscsi_build_list bl; 504 501 u32 pdu_count = 0, seq_count = 1; 505 502 struct iscsi_conn *conn = cmd->conn; 506 503 struct iscsi_pdu *pdu = NULL; 507 504 struct iscsi_seq *seq = NULL; 508 505 509 - iscsit_determine_counts_for_list(cmd, bl, &seq_count, &pdu_count); 506 + struct iscsi_session *sess = conn->sess; 507 + struct iscsi_node_attrib *na; 508 + 509 + /* 510 + * Do nothing if no OOO shenanigans 511 + */ 512 + if (sess->sess_ops->DataSequenceInOrder && 513 + sess->sess_ops->DataPDUInOrder) 514 + return 0; 515 + 516 + if (cmd->data_direction == DMA_NONE) 517 + return 0; 518 + 519 + na = iscsit_tpg_get_node_attrib(sess); 520 + memset(&bl, 0, sizeof(struct iscsi_build_list)); 521 + 522 + if (cmd->data_direction == DMA_FROM_DEVICE) { 523 + bl.data_direction = ISCSI_PDU_READ; 524 + bl.type = PDULIST_NORMAL; 525 + if (na->random_datain_pdu_offsets) 526 + bl.randomize |= RANDOM_DATAIN_PDU_OFFSETS; 527 + if (na->random_datain_seq_offsets) 528 + bl.randomize |= RANDOM_DATAIN_SEQ_OFFSETS; 529 + } else { 530 + bl.data_direction = ISCSI_PDU_WRITE; 531 + bl.immediate_data_length = immediate_data_length; 532 + if (na->random_r2t_offsets) 533 + bl.randomize |= RANDOM_R2T_OFFSETS; 534 + 535 + if (!cmd->immediate_data && !cmd->unsolicited_data) 536 + bl.type = PDULIST_NORMAL; 537 + else if (cmd->immediate_data && !cmd->unsolicited_data) 538 + bl.type = PDULIST_IMMEDIATE; 539 + else if (!cmd->immediate_data && cmd->unsolicited_data) 540 + bl.type = PDULIST_UNSOLICITED; 541 + else if (cmd->immediate_data && cmd->unsolicited_data) 542 + bl.type = PDULIST_IMMEDIATE_AND_UNSOLICITED; 543 + } 544 + 545 + iscsit_determine_counts_for_list(cmd, &bl, &seq_count, &pdu_count); 510 546 511 547 if (!conn->sess->sess_ops->DataSequenceInOrder) { 512 548 seq = kzalloc(seq_count * sizeof(struct iscsi_seq), GFP_ATOMIC); ··· 566 528 cmd->pdu_count = pdu_count; 567 529 } 568 530 569 - return iscsit_build_pdu_and_seq_list(cmd, bl); 531 + return iscsit_do_build_pdu_and_seq_lists(cmd, &bl); 570 532 } 571 533 572 534 struct iscsi_pdu *iscsit_get_pdu_holder(
+1 -1
drivers/target/iscsi/iscsi_target_seq_pdu_list.h
··· 78 78 u32 xfer_len; 79 79 } ____cacheline_aligned; 80 80 81 - extern int iscsit_do_build_list(struct iscsi_cmd *, struct iscsi_build_list *); 81 + extern int iscsit_build_pdu_and_seq_lists(struct iscsi_cmd *, u32); 82 82 extern struct iscsi_pdu *iscsit_get_pdu_holder(struct iscsi_cmd *, u32, u32); 83 83 extern struct iscsi_pdu *iscsit_get_pdu_holder_for_seq(struct iscsi_cmd *, struct iscsi_seq *); 84 84 extern struct iscsi_seq *iscsit_get_seq_holder(struct iscsi_cmd *, u32, u32);
-45
drivers/target/iscsi/iscsi_target_util.c
··· 176 176 return cmd; 177 177 } 178 178 179 - int iscsit_decide_list_to_build( 180 - struct iscsi_cmd *cmd, 181 - u32 immediate_data_length) 182 - { 183 - struct iscsi_build_list bl; 184 - struct iscsi_conn *conn = cmd->conn; 185 - struct iscsi_session *sess = conn->sess; 186 - struct iscsi_node_attrib *na; 187 - 188 - if (sess->sess_ops->DataSequenceInOrder && 189 - sess->sess_ops->DataPDUInOrder) 190 - return 0; 191 - 192 - if (cmd->data_direction == DMA_NONE) 193 - return 0; 194 - 195 - na = iscsit_tpg_get_node_attrib(sess); 196 - memset(&bl, 0, sizeof(struct iscsi_build_list)); 197 - 198 - if (cmd->data_direction == DMA_FROM_DEVICE) { 199 - bl.data_direction = ISCSI_PDU_READ; 200 - bl.type = PDULIST_NORMAL; 201 - if (na->random_datain_pdu_offsets) 202 - bl.randomize |= RANDOM_DATAIN_PDU_OFFSETS; 203 - if (na->random_datain_seq_offsets) 204 - bl.randomize |= RANDOM_DATAIN_SEQ_OFFSETS; 205 - } else { 206 - bl.data_direction = ISCSI_PDU_WRITE; 207 - bl.immediate_data_length = immediate_data_length; 208 - if (na->random_r2t_offsets) 209 - bl.randomize |= RANDOM_R2T_OFFSETS; 210 - 211 - if (!cmd->immediate_data && !cmd->unsolicited_data) 212 - bl.type = PDULIST_NORMAL; 213 - else if (cmd->immediate_data && !cmd->unsolicited_data) 214 - bl.type = PDULIST_IMMEDIATE; 215 - else if (!cmd->immediate_data && cmd->unsolicited_data) 216 - bl.type = PDULIST_UNSOLICITED; 217 - else if (cmd->immediate_data && cmd->unsolicited_data) 218 - bl.type = PDULIST_IMMEDIATE_AND_UNSOLICITED; 219 - } 220 - 221 - return iscsit_do_build_list(cmd, &bl); 222 - } 223 - 224 179 struct iscsi_seq *iscsit_get_seq_holder_for_datain( 225 180 struct iscsi_cmd *cmd, 226 181 u32 seq_send_order)
-1
drivers/target/iscsi/iscsi_target_util.h
··· 9 9 extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *); 10 10 extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *); 11 11 extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); 12 - extern int iscsit_decide_list_to_build(struct iscsi_cmd *, u32); 13 12 extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); 14 13 extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); 15 14 extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32);