IOR
Data Structures | Macros | Functions | Variables
aiori-S3-libs3.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <libs3.h>
#include "ior.h"
#include "aiori.h"
#include "aiori-debug.h"
#include "utilities.h"
Include dependency graph for aiori-S3-libs3.c:

Go to the source code of this file.

Data Structures

struct  s3_options_t
 
struct  data_handling
 
struct  S3_fd_t
 
struct  s3_delete_req
 

Macros

#define CHECK_ERROR(p)
 

Functions

static void s3_xfer_hints (aiori_xfer_hint_t *params)
 
static option_helpS3_options (aiori_mod_opt_t **init_backend_options, aiori_mod_opt_t *init_values)
 
static void def_file_name (s3_options_t *o, char *out_name, char const *path)
 
static void def_bucket_name (s3_options_t *o, char *out_name, char const *path)
 
static S3Status responsePropertiesCallback (const S3ResponseProperties *properties, void *callbackData)
 
static void responseCompleteCallback (S3Status status, const S3ErrorDetails *error, void *callbackData)
 
static char * S3_getVersion ()
 
static void S3_Fsync (aiori_fd_t *fd, aiori_mod_opt_t *options)
 
static void S3_Sync (aiori_mod_opt_t *options)
 
static S3Status S3ListResponseCallback (const char *ownerId, const char *ownerDisplayName, const char *bucketName, int64_t creationDateSeconds, void *callbackData)
 
static int S3_statfs (const char *path, ior_aiori_statfs_t *stat, aiori_mod_opt_t *options)
 
static S3Status S3multipart_handler (const char *upload_id, void *callbackData)
 
static int putObjectDataCallback (int bufferSize, char *buffer, void *callbackData)
 
static aiori_fd_tS3_Create (char *path, int iorflags, aiori_mod_opt_t *options)
 
static S3Status statResponsePropertiesCallback (const S3ResponseProperties *properties, void *callbackData)
 
static aiori_fd_tS3_Open (char *path, int flags, aiori_mod_opt_t *options)
 
static S3Status getObjectDataCallback (int bufferSize, const char *buffer, void *callbackData)
 
static IOR_offset_t S3_Xfer (int access, aiori_fd_t *afd, IOR_size_t *buffer, IOR_offset_t length, IOR_offset_t offset, aiori_mod_opt_t *options)
 
static void S3_Close (aiori_fd_t *afd, aiori_mod_opt_t *options)
 
S3Status list_delete_cb (int isTruncated, const char *nextMarker, int contentsCount, const S3ListBucketContent *contents, int commonPrefixesCount, const char **commonPrefixes, void *callbackData)
 
static void S3_Delete (char *path, aiori_mod_opt_t *options)
 
static int S3_mkdir (const char *path, mode_t mode, aiori_mod_opt_t *options)
 
static int S3_rmdir (const char *path, aiori_mod_opt_t *options)
 
static int S3_stat (const char *path, struct stat *buf, aiori_mod_opt_t *options)
 
static int S3_access (const char *path, int mode, aiori_mod_opt_t *options)
 
static IOR_offset_t S3_GetFileSize (aiori_mod_opt_t *options, char *testFileName)
 
static int S3_check_params (aiori_mod_opt_t *options)
 
static void S3_init (aiori_mod_opt_t *options)
 
static void S3_final (aiori_mod_opt_t *options)
 

Variables

static aiori_xfer_hint_thints = NULL
 
static S3Status s3status = S3StatusInterrupted
 
static S3ErrorDetails s3error = {NULL}
 
static S3ResponseHandler responseHandler = { &responsePropertiesCallback, &responseCompleteCallback }
 
static S3ListServiceHandler listhandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & S3ListResponseCallback}
 
static S3MultipartInitialHandler multipart_handler = { {&responsePropertiesCallback, &responseCompleteCallback }, & S3multipart_handler}
 
static S3PutObjectHandler putObjectHandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & putObjectDataCallback }
 
static S3ResponseHandler statResponseHandler = { &statResponsePropertiesCallback, &responseCompleteCallback }
 
static S3GetObjectHandler getObjectHandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & getObjectDataCallback }
 
static S3ListBucketHandler list_delete_handler = {{&responsePropertiesCallback, &responseCompleteCallback }, list_delete_cb}
 
ior_aiori_t S3_libS3_aiori
 

Macro Definition Documentation

◆ CHECK_ERROR

#define CHECK_ERROR (   p)
Value:
if (s3status != S3StatusOK){ \
EWARNF("S3 %s:%d (path:%s) \"%s\": %s %s", __FUNCTION__, __LINE__, p, S3_get_status_name(s3status), s3error.message, s3error.furtherDetails ? s3error.furtherDetails : ""); \
}
static S3Status s3status
static S3ErrorDetails s3error

Definition at line 148 of file aiori-S3-libs3.c.

Referenced by S3_Create(), S3_Delete(), S3_final(), S3_init(), S3_mkdir(), S3_Open(), S3_rmdir(), S3_statfs(), and S3_Xfer().

Function Documentation

◆ def_bucket_name()

static void def_bucket_name ( s3_options_t o,
char *  out_name,
char const *  path 
)
static

Definition at line 103 of file aiori-S3-libs3.c.

References s3_options_t::bucket_per_file, and s3_options_t::bucket_prefix_cur.

Referenced by S3_mkdir(), and S3_rmdir().

Here is the caller graph for this function:

◆ def_file_name()

static void def_file_name ( s3_options_t o,
char *  out_name,
char const *  path 
)
static

Definition at line 79 of file aiori-S3-libs3.c.

References s3_options_t::bucket_per_file, and s3_options_t::bucket_prefix_cur.

Referenced by S3_Create(), S3_Delete(), S3_Open(), and S3_stat().

Here is the caller graph for this function:

◆ getObjectDataCallback()

static S3Status getObjectDataCallback ( int  bufferSize,
const char *  buffer,
void *  callbackData 
)
static

Definition at line 296 of file aiori-S3-libs3.c.

References data_handling::buf, and data_handling::size.

◆ list_delete_cb()

S3Status list_delete_cb ( int  isTruncated,
const char *  nextMarker,
int  contentsCount,
const S3ListBucketContent *  contents,
int  commonPrefixesCount,
const char **  commonPrefixes,
void *  callbackData 
)

◆ putObjectDataCallback()

static int putObjectDataCallback ( int  bufferSize,
char *  buffer,
void *  callbackData 
)
static

Definition at line 209 of file aiori-S3-libs3.c.

References data_handling::buf, and data_handling::size.

◆ responseCompleteCallback()

static void responseCompleteCallback ( S3Status  status,
const S3ErrorDetails *  error,
void *  callbackData 
)
static

Definition at line 138 of file aiori-S3-libs3.c.

References NULL, s3error, and s3status.

◆ responsePropertiesCallback()

static S3Status responsePropertiesCallback ( const S3ResponseProperties *  properties,
void *  callbackData 
)
static

Definition at line 133 of file aiori-S3-libs3.c.

References s3status.

◆ S3_access()

static int S3_access ( const char *  path,
int  mode,
aiori_mod_opt_t options 
)
static

Definition at line 448 of file aiori-S3-libs3.c.

References S3_stat().

Here is the call graph for this function:

◆ S3_check_params()

static int S3_check_params ( aiori_mod_opt_t options)
static

◆ S3_Close()

static void S3_Close ( aiori_fd_t afd,
aiori_mod_opt_t options 
)
static

Definition at line 341 of file aiori-S3-libs3.c.

References S3_fd_t::object.

◆ S3_Create()

static aiori_fd_t* S3_Create ( char *  path,
int  iorflags,
aiori_mod_opt_t options 
)
static

◆ S3_Delete()

static void S3_Delete ( char *  path,
aiori_mod_opt_t options 
)
static

◆ S3_final()

static void S3_final ( aiori_mod_opt_t options)
static

◆ S3_Fsync()

static void S3_Fsync ( aiori_fd_t fd,
aiori_mod_opt_t options 
)
static

Definition at line 161 of file aiori-S3-libs3.c.

◆ S3_GetFileSize()

static IOR_offset_t S3_GetFileSize ( aiori_mod_opt_t options,
char *  testFileName 
)
static

Definition at line 453 of file aiori-S3-libs3.c.

References S3_stat().

Here is the call graph for this function:

◆ S3_getVersion()

static char* S3_getVersion ( )
static

Definition at line 156 of file aiori-S3-libs3.c.

◆ S3_init()

static void S3_init ( aiori_mod_opt_t options)
static

◆ S3_mkdir()

static int S3_mkdir ( const char *  path,
mode_t  mode,
aiori_mod_opt_t options 
)
static

◆ S3_Open()

static aiori_fd_t* S3_Open ( char *  path,
int  flags,
aiori_mod_opt_t options 
)
static

◆ S3_options()

static option_help* S3_options ( aiori_mod_opt_t **  init_backend_options,
aiori_mod_opt_t init_values 
)
static

◆ S3_rmdir()

static int S3_rmdir ( const char *  path,
aiori_mod_opt_t options 
)
static

◆ S3_stat()

static int S3_stat ( const char *  path,
struct stat *  buf,
aiori_mod_opt_t options 
)
static

◆ S3_statfs()

static int S3_statfs ( const char *  path,
ior_aiori_statfs_t stat,
aiori_mod_opt_t options 
)
static

◆ S3_Sync()

static void S3_Sync ( aiori_mod_opt_t options)
static

Definition at line 167 of file aiori-S3-libs3.c.

◆ S3_Xfer()

static IOR_offset_t S3_Xfer ( int  access,
aiori_fd_t afd,
IOR_size_t buffer,
IOR_offset_t  length,
IOR_offset_t  offset,
aiori_mod_opt_t options 
)
static

◆ s3_xfer_hints()

static void s3_xfer_hints ( aiori_xfer_hint_t params)
static

Definition at line 26 of file aiori-S3-libs3.c.

◆ S3ListResponseCallback()

static S3Status S3ListResponseCallback ( const char *  ownerId,
const char *  ownerDisplayName,
const char *  bucketName,
int64_t  creationDateSeconds,
void *  callbackData 
)
static

Definition at line 172 of file aiori-S3-libs3.c.

◆ S3multipart_handler()

static S3Status S3multipart_handler ( const char *  upload_id,
void *  callbackData 
)
static

Definition at line 198 of file aiori-S3-libs3.c.

◆ statResponsePropertiesCallback()

static S3Status statResponsePropertiesCallback ( const S3ResponseProperties *  properties,
void *  callbackData 
)
static

Definition at line 249 of file aiori-S3-libs3.c.

References data_handling::buf, NULL, and s3status.

Variable Documentation

◆ getObjectHandler

S3GetObjectHandler getObjectHandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & getObjectDataCallback }
static

Definition at line 306 of file aiori-S3-libs3.c.

Referenced by S3_Xfer().

◆ hints

aiori_xfer_hint_t* hints = NULL
static

Definition at line 24 of file aiori-S3-libs3.c.

◆ list_delete_handler

S3ListBucketHandler list_delete_handler = {{&responsePropertiesCallback, &responseCompleteCallback }, list_delete_cb}
static

Definition at line 367 of file aiori-S3-libs3.c.

Referenced by S3_Delete().

◆ listhandler

S3ListServiceHandler listhandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & S3ListResponseCallback}
static

Definition at line 178 of file aiori-S3-libs3.c.

Referenced by S3_statfs().

◆ multipart_handler

S3MultipartInitialHandler multipart_handler = { {&responsePropertiesCallback, &responseCompleteCallback }, & S3multipart_handler}
static

Definition at line 203 of file aiori-S3-libs3.c.

◆ putObjectHandler

S3PutObjectHandler putObjectHandler = { { &responsePropertiesCallback, &responseCompleteCallback }, & putObjectDataCallback }
static

Definition at line 220 of file aiori-S3-libs3.c.

Referenced by S3_Create(), S3_mkdir(), and S3_Xfer().

◆ responseHandler

S3ResponseHandler responseHandler = { &responsePropertiesCallback, &responseCompleteCallback }
static

◆ S3_libS3_aiori

ior_aiori_t S3_libS3_aiori
Initial value:
= {
.name = "S3-libs3",
.name_legacy = NULL,
.create = S3_Create,
.open = S3_Open,
.xfer = S3_Xfer,
.close = S3_Close,
.delete = S3_Delete,
.get_version = S3_getVersion,
.fsync = S3_Fsync,
.xfer_hints = s3_xfer_hints,
.get_file_size = S3_GetFileSize,
.statfs = S3_statfs,
.mkdir = S3_mkdir,
.rmdir = S3_rmdir,
.access = S3_access,
.stat = S3_stat,
.initialize = S3_init,
.finalize = S3_final,
.get_options = S3_options,
.check_params = S3_check_params,
.sync = S3_Sync,
.enable_mdtest = true
}
static IOR_offset_t S3_Xfer(int access, aiori_fd_t *afd, IOR_size_t *buffer, IOR_offset_t length, IOR_offset_t offset, aiori_mod_opt_t *options)
static void S3_Close(aiori_fd_t *afd, aiori_mod_opt_t *options)
static int S3_check_params(aiori_mod_opt_t *options)
static void S3_Fsync(aiori_fd_t *fd, aiori_mod_opt_t *options)
static aiori_fd_t * S3_Open(char *path, int flags, aiori_mod_opt_t *options)
static char * S3_getVersion()
static aiori_fd_t * S3_Create(char *path, int iorflags, aiori_mod_opt_t *options)
static void S3_Sync(aiori_mod_opt_t *options)
static option_help * S3_options(aiori_mod_opt_t **init_backend_options, aiori_mod_opt_t *init_values)
static void S3_final(aiori_mod_opt_t *options)
static int S3_stat(const char *path, struct stat *buf, aiori_mod_opt_t *options)
static IOR_offset_t S3_GetFileSize(aiori_mod_opt_t *options, char *testFileName)
static int S3_mkdir(const char *path, mode_t mode, aiori_mod_opt_t *options)
static void S3_Delete(char *path, aiori_mod_opt_t *options)
static int S3_rmdir(const char *path, aiori_mod_opt_t *options)
static void S3_init(aiori_mod_opt_t *options)
static void s3_xfer_hints(aiori_xfer_hint_t *params)
static int S3_access(const char *path, int mode, aiori_mod_opt_t *options)
static int S3_statfs(const char *path, ior_aiori_statfs_t *stat, aiori_mod_opt_t *options)
#define NULL
Definition: iordef.h:70

Definition at line 531 of file aiori-S3-libs3.c.

◆ s3error

S3ErrorDetails s3error = {NULL}
static

Definition at line 131 of file aiori-S3-libs3.c.

Referenced by responseCompleteCallback().

◆ s3status

S3Status s3status = S3StatusInterrupted
static

◆ statResponseHandler

S3ResponseHandler statResponseHandler = { &statResponsePropertiesCallback, &responseCompleteCallback }
static

Definition at line 260 of file aiori-S3-libs3.c.

Referenced by S3_Open(), and S3_stat().