/* * Initialize the shared-memory for this module. */ void PersistentFilespace_ShmemInit(void) { bool found; bool ok; /* Create the shared-memory structure. */ persistentFilespaceSharedData = (PersistentFilespaceSharedData *) ShmemInitStruct("Persistent Filespace Data", PersistentFilespace_SharedDataSize(), &found); if (!found) { PersistentFileSysObj_InitShared( &persistentFilespaceSharedData->fileSysObjSharedData); } /* Create or find our shared-memory hash table. */ ok = PersistentFilespace_HashTableInit(); if (!ok) ereport(FATAL, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("Not enough shared memory for persistent filespace hash table"))); PersistentFileSysObj_Init( &persistentFilespaceData.fileSysObjData, &persistentFilespaceSharedData->fileSysObjSharedData, PersistentFsObjType_FilespaceDir, PersistentFilespace_ScanTupleCallback); Assert(persistentFilespaceSharedData != NULL); Assert(persistentFilespaceSharedHashTable != NULL); }
/* * Return the required shared-memory size for this module. */ Size PersistentFilespace_ShmemSize(void) { Size size; /* The hash table of persistent filespaces */ size = hash_estimate_size((Size)gp_max_filespaces, sizeof(FilespaceDirEntryData)); /* The shared-memory structure. */ size = add_size(size, PersistentFilespace_SharedDataSize()); return size; }
/* * Return the required shared-memory size for this module. */ Size PersistentFilespace_ShmemSize(void) { Size size; /* The hash table of persistent filespaces */ size = hash_estimate_size((Size)gp_max_filespaces, sizeof(FilespaceDirEntryData)); /* The shared-memory structure. */ size = add_size(size, PersistentFilespace_SharedDataSize()); elog(LOG, "PersistentFilespace_ShmemSize: %zu = " "gp_max_filespaces: %d " "* sizeof(FilespaceDirEntryData): %zu " "+ PersistentFilespace_SharedDataSize(): %zu", size, gp_max_filespaces, sizeof(FilespaceDirEntryData), PersistentFilespace_SharedDataSize()); return size; }