fix the logic for setting stripe size and stripe count in the lustre fs module. Takes now also the MPI_Info object into consideration.
Этот коммит содержится в:
родитель
86c3fa88f7
Коммит
e355db005e
@ -43,7 +43,7 @@ int mca_fs_lustre_priority = 20;
|
|||||||
to 64KB. MCA parameter
|
to 64KB. MCA parameter
|
||||||
Can be changed at
|
Can be changed at
|
||||||
runtime also*/
|
runtime also*/
|
||||||
int mca_fs_lustre_stripe_size = 1048576;
|
int mca_fs_lustre_stripe_size = 0;
|
||||||
int mca_fs_lustre_stripe_width = 0;
|
int mca_fs_lustre_stripe_width = 0;
|
||||||
/*
|
/*
|
||||||
* Instantiate the public struct with all of our public information
|
* Instantiate the public struct with all of our public information
|
||||||
@ -81,7 +81,7 @@ lustre_register(void)
|
|||||||
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
||||||
OPAL_INFO_LVL_9,
|
OPAL_INFO_LVL_9,
|
||||||
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_priority);
|
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_priority);
|
||||||
mca_fs_lustre_stripe_size = 1048576;
|
mca_fs_lustre_stripe_size = 0;
|
||||||
(void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
|
(void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
|
||||||
"stripe_size", "stripe size of a file over lustre",
|
"stripe_size", "stripe size of a file over lustre",
|
||||||
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
||||||
@ -89,7 +89,7 @@ lustre_register(void)
|
|||||||
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_size);
|
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_size);
|
||||||
mca_fs_lustre_stripe_width = 0;
|
mca_fs_lustre_stripe_width = 0;
|
||||||
(void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
|
(void) mca_base_component_var_register(&mca_fs_lustre_component.fsm_version,
|
||||||
"stripe_width", "stripe width of a file over lustre",
|
"stripe_width", "stripe count of a file over lustre",
|
||||||
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
||||||
OPAL_INFO_LVL_9,
|
OPAL_INFO_LVL_9,
|
||||||
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_width);
|
MCA_BASE_VAR_SCOPE_READONLY, &mca_fs_lustre_stripe_width);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008-2011 University of Houston. All rights reserved.
|
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -50,6 +50,10 @@ mca_fs_lustre_file_open (struct ompi_communicator_t *comm,
|
|||||||
int amode;
|
int amode;
|
||||||
int old_mask, perm;
|
int old_mask, perm;
|
||||||
int rc;
|
int rc;
|
||||||
|
int flag;
|
||||||
|
int fs_lustre_stripe_size = -1;
|
||||||
|
int fs_lustre_stripe_width = -1;
|
||||||
|
char char_stripe[MPI_MAX_INFO_KEY];
|
||||||
|
|
||||||
struct lov_user_md *lump=NULL;
|
struct lov_user_md *lump=NULL;
|
||||||
|
|
||||||
@ -74,13 +78,33 @@ mca_fs_lustre_file_open (struct ompi_communicator_t *comm,
|
|||||||
if (access_mode & MPI_MODE_EXCL)
|
if (access_mode & MPI_MODE_EXCL)
|
||||||
amode = amode | O_EXCL;
|
amode = amode | O_EXCL;
|
||||||
|
|
||||||
if ((mca_fs_lustre_stripe_size || mca_fs_lustre_stripe_width) &&
|
|
||||||
|
ompi_info_get (info, "stripe_size", MPI_MAX_INFO_VAL, char_stripe, &flag);
|
||||||
|
if ( flag ) {
|
||||||
|
sscanf ( char_stripe, "%d", &fs_lustre_stripe_size );
|
||||||
|
}
|
||||||
|
|
||||||
|
ompi_info_get (info, "stripe_width", MPI_MAX_INFO_VAL, char_stripe, &flag);
|
||||||
|
if ( flag ) {
|
||||||
|
sscanf ( char_stripe, "%d", &fs_lustre_stripe_width );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fs_lustre_stripe_size < 0) {
|
||||||
|
fs_lustre_stripe_size = mca_fs_lustre_stripe_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fs_lustre_stripe_width < 0) {
|
||||||
|
fs_lustre_stripe_width = mca_fs_lustre_stripe_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ( (fs_lustre_stripe_size>0 || fs_lustre_stripe_width>0) &&
|
||||||
(amode&O_CREAT) && (amode&O_RDWR)) {
|
(amode&O_CREAT) && (amode&O_RDWR)) {
|
||||||
if (0 == fh->f_rank) {
|
if (0 == fh->f_rank) {
|
||||||
llapi_file_create(filename,
|
llapi_file_create(filename,
|
||||||
mca_fs_lustre_stripe_size,
|
fs_lustre_stripe_size,
|
||||||
-1, /* MSC need to change that */
|
-1, /* MSC need to change that */
|
||||||
mca_fs_lustre_stripe_width,
|
fs_lustre_stripe_width,
|
||||||
0); /* MSC need to change that */
|
0); /* MSC need to change that */
|
||||||
|
|
||||||
fh->fd = open(filename, O_CREAT | O_RDWR | O_LOV_DELAY_CREATE, perm);
|
fh->fd = open(filename, O_CREAT | O_RDWR | O_LOV_DELAY_CREATE, perm);
|
||||||
@ -106,13 +130,13 @@ mca_fs_lustre_file_open (struct ompi_communicator_t *comm,
|
|||||||
else {
|
else {
|
||||||
lump = (struct lov_user_md *) malloc (sizeof(struct lov_user_md));
|
lump = (struct lov_user_md *) malloc (sizeof(struct lov_user_md));
|
||||||
if (NULL == lump ){
|
if (NULL == lump ){
|
||||||
fprintf(stderr,"Cannot Allocate Lump for extracting stripe size\n");
|
fprintf(stderr,"Cannot allocate memory for extracting stripe size\n");
|
||||||
return OMPI_ERROR;
|
return OMPI_ERROR;
|
||||||
}
|
}
|
||||||
rc = llapi_file_get_stripe(filename, lump);
|
rc = llapi_file_get_stripe(filename, lump);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
fprintf(stderr, "get_stripe failed: %d (%s)\n",errno, strerror(errno));
|
fprintf(stderr, "get_stripe failed: %d (%s)\n",errno, strerror(errno));
|
||||||
return -1;
|
return OMPI_ERROR;
|
||||||
}
|
}
|
||||||
fh->f_stripe_size = lump->lmm_stripe_size;
|
fh->f_stripe_size = lump->lmm_stripe_size;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user