Type safety macros in libpmemobj

Type safety macros in libpmemobj

The PMEMoid plays the role of a persistent pointer in a pmemobj pool. It consist of a shortened UUID of the pool which the object comes from and an offset relative to the beginning of the pool: 1 2 3 4 typedef struct pmemoid { uint64_t pool_uuid_lo; uint64_t off; } PMEMoid; Operating on such …

Read More
Implementing (simple) MySQL storage engine with libpmemobj

Implementing (simple) MySQL storage engine with libpmemobj

The focus of the pmemobj library, like the name suggests, is storing objects on a persistent medium. A different, but very common, approach of doing exactly the same is to use a database with a specialized interface to manipulate the collection of data. MySQL is one such database, it processes SQL …

Read More
Using the Block Translation Table for sector atomicity

Using the Block Translation Table for sector atomicity

Persistent memory based storage is able to perform IO at byte (or more accurately, cache line) granularity. However, we often want to expose such storage as traditional block devices. The block drivers for persistent memory will do exactly this. However, they do not provide any atomicity guarantees. …

Read More
Git Workflow

Git Workflow

Now that we’ve created the GitHub Repository for the PMDK, here’s a more detailed description of the git workflow we’ve chosen. The basic idea is: Current development happens on the master branch Releases are created periodically by tagging After a major release, a stable-1.x …

Read More
NVM Library Overview

NVM Library Overview

[Edit on 2017-12-11: In the years since this entry was written, this work has evolved into PMDK.] Why are we building an NVM Library? Where does it live? How does it work? This blog entry provides some answers, which refer to this picture showing the overall library architecture: Why? The operating …

Read More