Changeset 23594 in vbox for trunk/src/VBox/Devices/Storage/ISCSIHDDCore.cpp
- Timestamp:
- Oct 7, 2009 1:48:35 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 53266
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/ISCSIHDDCore.cpp
r23450 r23594 108 108 109 109 110 /** Maximum PDU payload size we can handle in one piece. */ 110 /** Maximum PDU payload size we can handle in one piece. Greater or equal than 111 * s_iscsiConfigDefaultWriteSplit. */ 111 112 #define ISCSI_DATA_LENGTH_MAX _256K 112 113 … … 280 281 /** Length of the secret for authenticating the Initiator. */ 281 282 size_t cbTargetSecret; 283 /** Limit for iSCSI writes, essentially limiting the amount of data 284 * written in a single write. This is negotiated with the target, so 285 * the actual size might be smaller. */ 286 uint32_t cbWriteSplit; 282 287 /** Initiator session identifier. */ 283 288 uint64_t ISID; … … 424 429 static const char *s_iscsiConfigDefaultTimeout = "10000"; 425 430 431 /** Default write split value, less or equal to ISCSI_DATA_LENGTH_MAX. */ 432 static const char *s_iscsiConfigDefaultWriteSplit = "262144"; 433 426 434 /** Default host IP stack. */ 427 435 static const char *s_iscsiConfigDefaultHostIPStack = "1"; … … 439 447 { "TargetUsername", NULL, VDCFGVALUETYPE_STRING, VD_CFGKEY_EXPERT }, 440 448 { "TargetSecret", NULL, VDCFGVALUETYPE_BYTES, VD_CFGKEY_EXPERT }, 449 { "WriteSplit", s_iscsiConfigDefaultWriteSplit, VDCFGVALUETYPE_INTEGER, VD_CFGKEY_EXPERT }, 441 450 { "Timeout", s_iscsiConfigDefaultTimeout, VDCFGVALUETYPE_INTEGER, VD_CFGKEY_EXPERT }, 442 451 { "HostIPStack", s_iscsiConfigDefaultHostIPStack, VDCFGVALUETYPE_INTEGER, VD_CFGKEY_EXPERT }, … … 838 847 bool fParameterNeg = true;; 839 848 pImage->cbRecvDataLength = ISCSI_DATA_LENGTH_MAX; 840 pImage->cbSendDataLength = ISCSI_DATA_LENGTH_MAX;849 pImage->cbSendDataLength = RT_MIN(ISCSI_DATA_LENGTH_MAX, pImage->cbWriteSplit); 841 850 char szMaxDataLength[16]; 842 851 RTStrPrintf(szMaxDataLength, sizeof(szMaxDataLength), "%u", ISCSI_DATA_LENGTH_MAX); … … 2215 2224 char *pszLUN = NULL, *pszLUNInitial = NULL; 2216 2225 bool fLunEncoded = false; 2226 uint32_t uWriteSplitDef = 0; 2217 2227 uint32_t uTimeoutDef = 0; 2218 2228 uint64_t uHostIPTmp = 0; 2219 2229 bool fHostIPDef = 0; 2230 rc = RTStrToUInt32Full(s_iscsiConfigDefaultWriteSplit, 0, &uWriteSplitDef); 2231 AssertRC(rc); 2220 2232 rc = RTStrToUInt32Full(s_iscsiConfigDefaultTimeout, 0, &uTimeoutDef); 2221 2233 AssertRC(rc); … … 2271 2283 if (!VDCFGAreKeysValid(pImage->pInterfaceConfigCallbacks, 2272 2284 pImage->pInterfaceConfig->pvUser, 2273 "TargetName\0InitiatorName\0LUN\0TargetAddress\0InitiatorUsername\0InitiatorSecret\0TargetUsername\0TargetSecret\0 Timeout\0HostIPStack\0"))2285 "TargetName\0InitiatorName\0LUN\0TargetAddress\0InitiatorUsername\0InitiatorSecret\0TargetUsername\0TargetSecret\0WriteSplit\0Timeout\0HostIPStack\0")) 2274 2286 { 2275 2287 rc = iscsiError(pImage, VERR_VD_ISCSI_UNKNOWN_CFG_VALUES, RT_SRC_POS, N_("iSCSI: configuration error: unknown configuration keys present")); … … 2389 2401 { 2390 2402 rc = iscsiError(pImage, rc, RT_SRC_POS, N_("iSCSI: configuration error: failed to read TargetSecret as byte string")); 2403 goto out; 2404 } 2405 rc = VDCFGQueryU32Def(pImage->pInterfaceConfigCallbacks, 2406 pImage->pInterfaceConfig->pvUser, 2407 "WriteSplit", &pImage->cbWriteSplit, 2408 uWriteSplitDef); 2409 if (RT_FAILURE(rc)) 2410 { 2411 rc = iscsiError(pImage, rc, RT_SRC_POS, N_("iSCSI: configuration error: failed to read WriteSplit as U32")); 2391 2412 goto out; 2392 2413 }
Note:
See TracChangeset
for help on using the changeset viewer.