HDFS-16014: Fix an issue in checking native pmdk lib by 'hadoop checknative' command (#3762)

This commit is contained in:
PHILO-HE 2021-12-14 17:15:12 +08:00 committed by GitHub
parent d29f0e83a9
commit 8e08f43e03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 4 deletions

View File

@ -141,7 +141,7 @@ public class NativeIO {
}
}
// Denotes the state of supporting PMDK. The value is set by JNI.
// Denotes the state of supporting PMDK. The actual value is set via JNI.
private static SupportState pmdkSupportState =
SupportState.UNSUPPORTED;

View File

@ -35,13 +35,14 @@
#endif
PmdkLibLoader * pmdkLoader;
// 1 represents loaded. Otherwise, not loaded.
int pmdkLoaded;
/**
* pmdk_load.c
* Utility of loading the libpmem library and the required functions.
* Building of this codes won't rely on any libpmem source codes, but running
* into this will rely on successfully loading of the dynamic library.
*
*/
static const char* load_functions() {
@ -56,6 +57,10 @@ static const char* load_functions() {
return NULL;
}
/**
* It should be idempotent to call this function for checking
* whether PMDK lib is successfully loaded.
*/
void load_pmdk_lib(char* err, size_t err_len) {
const char* errMsg;
const char* library = NULL;
@ -67,10 +72,13 @@ void load_pmdk_lib(char* err, size_t err_len) {
err[0] = '\0';
if (pmdkLoader != NULL) {
if (pmdkLoaded == 1) {
return;
}
pmdkLoader = calloc(1, sizeof(PmdkLibLoader));
if (pmdkLoader == NULL) {
pmdkLoader = calloc(1, sizeof(PmdkLibLoader));
}
// Load PMDK library
#ifdef UNIX
@ -103,4 +111,5 @@ void load_pmdk_lib(char* err, size_t err_len) {
}
pmdkLoader->libname = strdup(library);
pmdkLoaded = 1;
}