static FDFSTrunkNode *trunk_create_trunk_file(const int store_path_index, \ int *err_no) { FDFSTrunkNode *pTrunkNode; struct fast_mblock_node *pMblockNode; pMblockNode = fast_mblock_alloc(&free_blocks_man); if (pMblockNode == NULL) { *err_no = errno != 0 ? errno : EIO; logError("file: "__FILE__", line: %d, " \ "malloc %d bytes fail, " \ "errno: %d, error info: %s", \ __LINE__, (int)sizeof(FDFSTrunkNode), \ *err_no, STRERROR(*err_no)); return NULL; } pTrunkNode = (FDFSTrunkNode *)pMblockNode->data; pTrunkNode->pMblockNode = pMblockNode; if (store_path_index >= 0) { pTrunkNode->trunk.path.store_path_index = store_path_index; } else { int result; int new_store_path_index; if ((result=storage_get_storage_path_index( \ &new_store_path_index)) != 0) { logError("file: "__FILE__", line: %d, " \ "get_storage_path_index fail, " \ "errno: %d, error info: %s", __LINE__, \ result, STRERROR(result)); return NULL; } pTrunkNode->trunk.path.store_path_index = new_store_path_index; } pTrunkNode->trunk.file.offset = 0; pTrunkNode->trunk.file.size = g_trunk_file_size; pTrunkNode->trunk.status = FDFS_TRUNK_STATUS_FREE; pTrunkNode->next = NULL; *err_no = trunk_create_next_file(&(pTrunkNode->trunk)); if (*err_no != 0) { fast_mblock_free(&free_blocks_man, pMblockNode); return NULL; } *err_no = trunk_mem_binlog_write(g_current_time, \ TRUNK_OP_TYPE_ADD_SPACE, &(pTrunkNode->trunk)); return pTrunkNode; }
static FDFSTrunkNode *trunk_create_trunk_file(int *err_no) { FDFSTrunkNode *pTrunkNode; struct fast_mblock_node *pMblockNode; pMblockNode = fast_mblock_alloc(&free_blocks_man); if (pMblockNode == NULL) { *err_no = errno != 0 ? errno : EIO; logError("file: "__FILE__", line: %d, " \ "malloc %d bytes fail, " \ "errno: %d, error info: %s", \ __LINE__, (int)sizeof(FDFSTrunkNode), \ *err_no, STRERROR(*err_no)); return NULL; } pTrunkNode = (FDFSTrunkNode *)pMblockNode->data; pTrunkNode->pMblockNode = pMblockNode; pTrunkNode->trunk.file.offset = 0; pTrunkNode->trunk.file.size = g_trunk_file_size; pTrunkNode->trunk.status = FDFS_TRUNK_STATUS_FREE; pTrunkNode->next = NULL; *err_no = trunk_create_next_file(&(pTrunkNode->trunk)); if (*err_no != 0) { fast_mblock_free(&free_blocks_man, pMblockNode); return NULL; } *err_no = trunk_mem_binlog_write(g_current_time, \ TRUNK_OP_TYPE_ADD_SPACE, &(pTrunkNode->trunk)); return pTrunkNode; }