int dio_check_trunk_file_when_upload(struct fast_task_info *pTask) { int result; StorageFileContext *pFileContext; pFileContext = &(((StorageClientInfo *)pTask->arg)->file_context); if ((result=trunk_check_and_init_file(pFileContext->filename)) != 0) { return result; } if ((result=dio_open_file(pFileContext)) != 0) { return result; } if (lseek(pFileContext->fd, -FDFS_TRUNK_FILE_HEADER_SIZE, SEEK_CUR) < 0) { result = errno != 0 ? errno : EIO; logError("file: "__FILE__", line: %d, " \ "lseek file: %s fail, " \ "errno: %d, error info: %s", \ __LINE__, pFileContext->filename, \ result, STRERROR(result)); return result; } return dio_check_trunk_file_ex(pFileContext->fd, pFileContext->filename, pFileContext->start - FDFS_TRUNK_FILE_HEADER_SIZE); }
static bool storage_trunk_is_space_occupied(const FDFSTrunkFullInfo *pTrunkInfo) { int result; int fd; char full_filename[MAX_PATH_SIZE+64]; trunk_get_full_filename(pTrunkInfo, full_filename, sizeof(full_filename)); fd = open(full_filename, O_RDONLY, 0644); if (fd < 0) { result = errno != 0 ? errno : ENOENT; logWarning("file: " __FILE__ ", line: %d, " "open file: %s fail, " \ "errno: %d, error info: %s", \ __LINE__, full_filename, \ result, STRERROR(result)); return false; } if (pTrunkInfo->file.offset > 0 && lseek(fd, pTrunkInfo->file.offset, \ SEEK_SET) < 0) { result = errno != 0 ? errno : EIO; logError("file: "__FILE__", line: %d, " \ "lseek file: %s fail, " \ "errno: %d, error info: %s", \ __LINE__, full_filename, \ result, STRERROR(result)); close(fd); return false; } /* logInfo("fd: %d, trunk filename: %s, offset: %d", fd, full_filename, \ pTrunkInfo->file.offset); */ result = dio_check_trunk_file_ex(fd, full_filename, \ pTrunkInfo->file.offset); close(fd); return (result == EEXIST); }