nvml-sys 0.0.6

A low-level FFI wrapper around the Persistent Memory Development Kit, PMDK (formerly NVML) and its libraries, including libpmem, libpmemobj and others. Currently tracks master after version 1.3.1.
Persistent Memory Development Kit

This is examples/libpmemobj/pmemobjfs/README.

This directory contains an example application implemented using libpmemobj.
The pmemobjfs is a simple implementation of FUSE file system using the
transactional API of libpmemobj.

To create a file system layout run the following command:
	$ mkfs.pmemobjfs [-s <size>] [-b <block_size>] <file>

To mount the filesystem run the following command:
	$ pmemobjfs -s -odefault_permissions,hard_remove,allow_other <file> <dir>

The -o default_permissions option enables permission checking by the FUSE
implementation.
The -s option runs FUSE in single threaded mode. The current implementation
does not use any synchronization mechanisms.
The -o hard_remove forces FUSE to not use the .fuse_hiddenXXX files when
deleting a file.
The -o allow_other option allows other users to access the file system.

To begin a transaction run the following command:
	$ pmemobjfs.tx_begin <dir>

To commit a transaction run the following command:
	$ pmemobjfs.tx_commit <dir>

To abort a transaction run the following command:
	$ pmemobjfs.tx_abort <dir>

The transactions works across multiple operations performed on pmemobjfs
file system including modification of files.

Example usage of transactions:

$ mkfs.pmemobjfs /mnt/pmem/pmemobjfs.obj
$ pmemobjfs -s -odefault_permissions,hard_remove,allow_other\
	/mnt/pmem/pmemobjfs.obj /mnt/pmemobjfs
$ ls /mnt/pmemobjfs
$ pmemobjfs.tx_begin /mnt/pmemobjfs
$ mkdir /mnt/pmemobjfs/dir1
$ echo "The pmemobjfs filesystem" > /mnt/pmemobjfs/dir1/file1
$ pmemobjfs.tx_commit
$ ls /mnt/pmemobjfs/dir1
file1
$ pmemobjfs.tx_begin /mnt/pmemobjfs
$ rm /mnt/pmemobjfs/dir1/file1
$ ls /mnt/pmemobjfs/dir1
$ pmemobjfs.tx_abort
$ ls /mnt/pmemobjfs/dir1
file1

** DEPENDENCIES: **
In order to build pmemobjfs you need to install fuse (version >= 2.9.1)
development package.

rpm-based systems : fuse-devel
dpkg-based systems: libfuse-dev