static int builtin_posix_create_dataset_dirs (builtin_posix_module_t *posix_module, builtin_posix_module_dataset_t *posix_dataset) { mode_t access_mode = posix_module->access_mode; hio_context_t context = posix_module->base.context; int rc; if (context->c_rank > 0) { return HIO_SUCCESS; } hioi_log (context, HIO_VERBOSE_DEBUG_MED, "posix: creating dataset directory @ %s", posix_dataset->base_path); rc = hio_mkpath (context, posix_dataset->base_path, access_mode); if (0 > rc || EEXIST == errno) { if (EEXIST != errno) { hioi_err_push (hioi_err_errno (errno), &context->c_object, "posix: error creating context directory: %s", posix_dataset->base_path); } return hioi_err_errno (errno); } hioi_log (context, HIO_VERBOSE_DEBUG_LOW, "posix: successfully created dataset directories"); return HIO_SUCCESS; }
static int builtin_posix_create_dataset_dirs (builtin_posix_module_t *posix_module, builtin_posix_module_dataset_t *posix_dataset) { mode_t access_mode = posix_module->access_mode; hio_context_t context = posix_module->base.context; char *path; int rc; if (context->c_rank > 0) { return HIO_SUCCESS; } /* create the data directory*/ hioi_log (context, HIO_VERBOSE_DEBUG_MED, "posix: creating dataset directory @ %s", posix_dataset->base_path); rc = asprintf (&path, "%s/data", posix_dataset->base_path); if (0 > rc) { return hioi_err_errno (errno); } rc = hio_mkpath (context, path, access_mode); if (0 > rc || EEXIST == errno) { if (EEXIST != errno) { hioi_err_push (hioi_err_errno (errno), &context->c_object, "posix: error creating context directory: %s", path); } free (path); return hioi_err_errno (errno); } /* set striping parameters on the directory */ if (posix_dataset->base.ds_fsattr.fs_flags & HIO_FS_SUPPORTS_STRIPING) { rc = hioi_fs_set_stripe (path, &posix_dataset->base.ds_fsattr); if (HIO_SUCCESS != rc) { hioi_log (context, HIO_VERBOSE_DEBUG_LOW, "posix: could not set file system striping on %s", path); } } free (path); /* create trace directory if requested */ if (context->c_enable_tracing) { rc = asprintf (&path, "%s/trace", posix_dataset->base_path); if (0 > rc) { return hioi_err_errno (errno); } rc = hio_mkpath (context, path, access_mode); if (0 > rc || EEXIST == errno) { if (EEXIST != errno) { hioi_err_push (hioi_err_errno (errno), &context->c_object, "posix: error creating context directory: %s", path); } free (path); return hioi_err_errno (errno); } } hioi_log (context, HIO_VERBOSE_DEBUG_LOW, "posix: successfully created dataset directories %s", posix_dataset->base_path); return HIO_SUCCESS; }