Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nfs feature vfd swmr #1208

Merged

Conversation

vchoi-hdfgroup
Copy link
Contributor

No description provided.

vchoi-hdfgroup and others added 7 commits August 27, 2021 11:20
VFD SWMR: Updates the mirror VFD tests so they compile and pass tests…
src/H5Pfapl.c
src/H5Fvfd_swmr.c
src/H5Fpublic.h
src/H5Fpkg.h
src/H5Fprivate.h

2) For VFD SWMR testing, add private property for checksum generation of metadata files:
src/H5Fint.c
src/H5Fvfd_swmr.c
src/H5Pfapl.c
src/H5Fpkg.h
src/H5Fprivate.h

3) Fix the following in H5F_vfd_swmr_init() and H5F_vfd_swmr_close_or_flush():
(a) Allocate metadata file index right after metadata file header.
(b) Set tick number to 0 when creating header and index for file open case.
(c) Remove tick number increment at file close.
src/H5Fvfd_swmr.c
src/H5Ftest.c

4) To be consistent with the RFC, change the name for field "chksum" to "checksum" in struct H5FD_vfd_swmr_idx_entry_t:
src/H5FDprivate.h
src/H5FDtest.c
src/H5FDvfd_swmr.c
src/H5Ftest.c
src/H5PB.c

4) Add tests for NFS/updater
test/vfd_swmr.c

5) Modify common routine init_vfd_swmr_config() to accept updater_file_path
test/vfd_swmr_common.c
test/vfd_swmr_common.h

6) Changes to the tests due to the common routine init_vfd_swmr_config():
test/vfd_swmr_addrem_writer.c
test/vfd_swmr_attrdset_writer.c
test/vfd_swmr_bigset_writer.c
test/vfd_swmr_dsetchks_writer.c
test/vfd_swmr_dsetops_writer.c
test/vfd_swmr_generator.c
test/vfd_swmr_gfail_writer.c
test/vfd_swmr_gperf_writer.c
test/vfd_swmr_group_writer.c
test/vfd_swmr_reader.c
test/vfd_swmr_remove_reader.c
test/vfd_swmr_remove_writer.c
test/vfd_swmr_sparse_reader.c
test/vfd_swmr_sparse_writer.c
test/vfd_swmr_vlstr_reader.c
test/vfd_swmr_vlstr_writer.c
test/vfd_swmr_writer.c
test/page_buffer.c
Copy link
Collaborator

@kyang2014 kyang2014 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My comments are mostly trivial. After Vailin check them and make change as appropriate. I don't need to review them again.

src/H5Fint.c Outdated
hbool_t ci_write = FALSE; /* Whether MDC CI write requested */
hbool_t file_create = FALSE; /* Creating a new file or not */
H5F_vfd_swmr_config_t * vfd_swmr_config_ptr = NULL; /* Points to VFD SMWR config info */
H5F_generate_md_ck_cb_t cb_info = {NULL};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May add a comment on what this callback is for like the other variables?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

src/H5Fint.c Outdated
hbool_t evict_on_close; /* Evict on close value from plist */
hbool_t use_file_locking = TRUE; /* Using file locks? */
hbool_t ci_load = FALSE; /* Whether MDC ci load requested */
hbool_t ci_write = FALSE; /* Whether MDC CI write requested */
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: CI in the comment may ci like the last line

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

src/H5Fprivate.h Outdated
+ 4 /* Page size */ \
+ 8 /* Sequence number */ \
+ 8 /* Tick number */ \
+ 8 /* Chnage list offset */ \
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: typo - Chnage should be Change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

src/H5Fprivate.h Outdated
*
* An array of instances of H5F_vfd_swmr_updater_cl_entry_t of length equal to
* the number of metadata pages and multi-page metadata entries modified in
* the past tick is used ot aseemble the assoicated data in preparation for
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor typo: "used ot aseemble the assoicated" should be "used to assemble the associated"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

src/H5Fprivate.h Outdated
* array of H5F_vfd_swmr_updater_cl_ entry_t whose base address
* is stored in the change_list field below. This value is also the
* number of metadata pages and multi-page metadata entries that have
* been modified in the past tick
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor add a '.' at the end of "past tick"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

test/vfd_swmr.c Outdated

/* Remove all the updater files if exist: <updater_file_path>.<i> */
for (i = 0;; i++) {
sprintf(ud_name, "%s.%lu", updater_file_path, i);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May still use HDsprintf.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

test/vfd_swmr.c Outdated
static herr_t
verify_ud_chk(char *md_file_path, char *ud_file_path)
{
char chk_name[1024 + 4]; /* Checksum file name */
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: Should we use a constant to replace 1024 here? Also should the local variables be initialized? Should the ";" in 'FAIL_STACK_ERROR; ' and 'TEST_ERROR;' be removed or make them consistent?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the constant for chk_name[].
As for the ";" after FAIL_STACK_ERROR and TEST_ERROR, I will add ";" to be consistent with most of those calls in this file. I checked the files in the test directory, some of those calls have ";" and some without.

test/vfd_swmr.c Outdated
* Purpose: This is the callback function used by
* test_updater_generate_md_checksums() when the
* H5F_ACS_GENERATE_MD_CK_CB_NAME property is set in fapl.
* --Opens and read the metadata file into a buffer.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: Open instead of Opens

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

test/vfd_swmr.c Outdated
cb_info.func = md_ck_cb;

/* Activate private property to generate checksums for updater's metadata file */
H5Pset(fapl, H5F_ACS_GENERATE_MD_CK_CB_NAME, &cb_info);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we check the return value?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

test/vfd_swmr.c Outdated
TEST_ERROR;
}
else {
fid = H5Fcreate(FILENAME4, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we check the returned values of APIs in this block?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Contributor

@raylu-hdf raylu-hdf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried this branch. It worked with some basic tests.

@vchoi-hdfgroup vchoi-hdfgroup merged commit 1ca806a into HDFGroup:feature/vfd_swmr Dec 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants