/* Various options to tweak for performance benchmarking purposes. */
typedef struct {
- /* Perform all get/put operations synchronously. */
+ /* OBSOLETE: Perform all get/put operations synchronously. */
int synchronous_stores;
- /* Write data in cache immediately after file is modified. */
+ /* OBSOLETE: Write data in cache immediately after file is modified. */
int writethrough_cache;
/* Can inodes be fetched asynchronously? (Inode object is initially
/* Target size of the disk cache at the proxy, in kilobytes. */
int cache_size;
+
+ /* Full segment fetches (1) or use range requests (0) for fetching segments
+ * from cloud? */
+ int full_segment_fetches;
+
+ /* Disable aggregating of data into log segments. Each object will be
+ * stored in a separate segment. */
+ int disable_aggregation;
} BlueSkyOptions;
extern BlueSkyOptions bluesky_options;
bluesky_cloudlog_ref(log);
g_mutex_unlock(log->lock);
- if (state->data->len > CLOUDLOG_SEGMENT_SIZE)
+ if (state->data->len > CLOUDLOG_SEGMENT_SIZE
+ || bluesky_options.disable_aggregation)
+ {
bluesky_cloudlog_flush(fs);
+ }
return log->location;
}
{"BLUESKY_OPT_SYNC_INODE_FETCH", &bluesky_options.sync_inode_fetches},
{"BLUESKY_OPT_SYNC_FRONTENDS", &bluesky_options.sync_frontends},
{"BLUESKY_CACHE_SIZE", &bluesky_options.cache_size},
+ {"BLUESKY_OPT_FULL_SEGMENTS", &bluesky_options.full_segment_fetches},
+ {"BLUESKY_OPT_NO_AGGREGATION", &bluesky_options.disable_aggregation},
{NULL, NULL}
};
BlueSkyRCStr *str = NULL;
int location = 0;
size_t file_offset = 0, file_size = 0;
- gboolean range_request = TRUE;
+ gboolean range_request = bluesky_options.full_segment_fetches
+ ? FALSE : TRUE;
if (page_size == 0) {
page_size = getpagesize();