hyprlofs

SmartOS hyprlofs bindings

npm install hyprlofs
3 downloads in the last day
9 downloads in the last week
30 downloads in the last month

Hyprlofs Bindings

Hyprlofs is a SmartOS in-memory filesystem that allows consumers to map files from many disparate locations under one namespace (the hyprlofs mount). See hyprlofs(7fs) for details.

This module allows consumers to create and tear down hyprlofs mounts and modify the mappings associated with a hyprlofs mount. This interface closely resembles the underlying kernel interface without attempting to provide a higher-level abstraction. The main difference between this interface and the kernel interface is that this module's operations are asynchronous, but only one may be outstanding for a given object at any given time.

Synopsis

var mod_hyprlofs = require('hyprlofs');

var fs = new mod_hyprlofs.Filesystem('/export/mymount');

fs.mount(function (err) {
        fs.addMappings([
            [ '/etc/ssh/sshd_config', 'ssh_config' ],
            [ '/etc/release', 'release' ],
            /* ... */
        ], function (err) {
                if (err)
                        throw (err);

                console.log('setup complete.');
        });
});

/* ... */

fs.unmount(function (err) {
        if (err)
                throw (err);

        console.log('unmount complete');
});

Interface

This module exports a Filesystem object on which all management operations are performed, including:

  • mount (always initially empty)
  • unmount
  • add files
  • remove specific files
  • remove all files

All operations are asynchronous. They take a "callback" argument that will be invoked upon completion with an optional "error" argument indicating whether the operation failed.

Filesystem objects are stateless: they're essentially just a handle to work with a given hyprlofs mount, which is identified by the mountpoint. These objects do not keep track of the underlying mount state at all. You can even have more than one object managing a single hyprlofs mount. This is not recommended, since concurrently-dispatched operations will be processed in an undefined order.

All operations other than "mount" require that the underlying hyprlofs filesystem be mounted, though not necessarily via this interface. For the most part, this is enforced by the kernel interface, which will fail operations that are attempted on non-hyprlofs mounts. But see the special note on "unmount" below.

new Filesystem(mountpoint): work with a hyprlofs filesystem

The constructor creates a handle for issuing subsequent hyprlofs requests. This does not mount the filesystem or create any mappings. The mountpoint itself will not be validated until it's used by one of the other methods.

fs.mount(callback): mount a hyprlofs filesystem

Mounts a new read-only hyprlofs filesystem at this object's mountpoint. The filesystem initially contains no mappings.

If a hyprlofs filesystem cannot be mounted at the object's mountpoint, this call will fail.

fs.unmount(callback): unmount a hyprlofs filesystem

Unmounts the filesystem at this object's mountpoint. This will unmount any filesystem mounted here, regardless of whether it's a hyprlofs mount. It is the caller's responsibility to ensure that this is the right thing.

fs.addMappings(mappings, callback): add a set of file mappings

Adds the specified mappings to the underlying hyprlofs filesystem. mappings is an array of mappings. Each mapping is itself an array with two entries: the full path to the file to be added, and the alias (the relative path where it should appear) under the hyprlofs mount. See the example above for details.

If the underlying mountpoint is not a mounted hyprlofs filesystem, this call will fail.

fs.removeMappings(filenames, callback): remove a set of file mappings

Removes the specified mappings from the underlying hyprlofs filesystem. filenames is an array of aliases (relative paths) under the hyprlofs mount.

If the underlying mountpoint is not a mounted hyprlofs filesystem, this call will fail.

fs.removeAll(callback): removes all mappings

Removes all mappings from the underlying hyprlofs filesystem. This is useful for resetting the underlying filesystem without having to iterate the existing files (and without the associated race condition).

If the underlying mountpoint is not a mounted hyprlofs filesystem, this call will fail.

fs.listMappings(callback): lists all mappings

Returns (via callback) the list of all mappings on the given mount, in the same format as would be passed to addMappings.

If the underlying mountpoint is not a mounted hyprlofs filesystem, this call will fail.

npm loves you