static int trunk_create_next_file(FDFSTrunkFullInfo *pTrunkInfo) { char buff[32]; int result; int filename_len; char short_filename[64]; char full_filename[MAX_PATH_SIZE]; int sub_path_high; int sub_path_low; while (1) { pthread_mutex_lock(&trunk_file_lock); pTrunkInfo->file.id = ++g_current_trunk_file_id; result = storage_write_to_sync_ini_file(); pthread_mutex_unlock(&trunk_file_lock); if (result != 0) { return result; } int2buff(pTrunkInfo->file.id, buff); base64_encode_ex(&g_fdfs_base64_context, buff, sizeof(int), \ short_filename, &filename_len, false); storage_get_store_path(short_filename, filename_len, \ &sub_path_high, &sub_path_low); pTrunkInfo->path.sub_path_high = sub_path_high; pTrunkInfo->path.sub_path_low = sub_path_low; trunk_get_full_filename(pTrunkInfo, full_filename, \ sizeof(full_filename)); if (!fileExists(full_filename)) { break; } } if ((result=trunk_init_file(full_filename)) != 0) { return result; } return 0; }
static int trunk_create_next_file(FDFSTrunkFullInfo *pTrunkInfo) { char buff[32]; int i; int result; int filename_len; char short_filename[64]; char full_filename[MAX_PATH_SIZE]; int store_path_index; int sub_path_high; int sub_path_low; store_path_index = g_store_path_index; if (g_store_path_mode == FDFS_STORE_PATH_LOAD_BALANCE) { if (store_path_index < 0) { return ENOSPC; } } else { if (store_path_index >= g_fdfs_store_paths.count) { store_path_index = 0; } if (!storage_check_reserved_space_path(g_path_space_list \ [store_path_index].total_mb, g_path_space_list \ [store_path_index].free_mb, g_avg_storage_reserved_mb)) { for (i=0; i<g_fdfs_store_paths.count; i++) { if (storage_check_reserved_space_path( \ g_path_space_list[i].total_mb, \ g_path_space_list[i].free_mb, \ g_avg_storage_reserved_mb)) { store_path_index = i; g_store_path_index = i; break; } } if (i == g_fdfs_store_paths.count) { return ENOSPC; } } g_store_path_index++; if (g_store_path_index >= g_fdfs_store_paths.count) { g_store_path_index = 0; } } pTrunkInfo->path.store_path_index = store_path_index; while (1) { pthread_mutex_lock(&trunk_file_lock); pTrunkInfo->file.id = ++g_current_trunk_file_id; result = storage_write_to_sync_ini_file(); pthread_mutex_unlock(&trunk_file_lock); if (result != 0) { return result; } int2buff(pTrunkInfo->file.id, buff); base64_encode_ex(&g_fdfs_base64_context, buff, sizeof(int), \ short_filename, &filename_len, false); storage_get_store_path(short_filename, filename_len, \ &sub_path_high, &sub_path_low); pTrunkInfo->path.sub_path_high = sub_path_high; pTrunkInfo->path.sub_path_low = sub_path_low; trunk_get_full_filename(pTrunkInfo, full_filename, \ sizeof(full_filename)); if (!fileExists(full_filename)) { break; } } if ((result=trunk_init_file(full_filename)) != 0) { return result; } return 0; }