Konstantin Stepanov

NAME

FusqlFS - FUSE filesystem to work with database via DBI interface

SYNOPSIS

    use FusqlFS;

    FusqlFS->init(
        engine   => 'PgSQL',
        host     => 'localhost',
        database => 'postgres',
        user     => 'postgres',
        password => 'pas$w0rd',
        limit    => 100,
        debug    => 2,
        threaded => 0,
    );

    FusqlFS->mount(
        '/path/to/mount/point',
        'allow_other',
    );

DESCRIPTION

This package provides basic interface to FusqlFS to initialize DBI backend and mount it with Fuse.

SUBROUTINES

init

Initializes FusqlFS::Backend and FusqlFS::Cache subsystems, preparing all resources to be actually used by Fuse interface.

Input: %options. Output: $fusqlfs_instance.

mount

Runs fuse main loop, configured with all required hooks and options to interface with FusqlFS::Backend.

Input: $mountpoint, $mountopts.

Fuse hooks

"getdir" in Fuse, "getattr" in Fuse, "readlink" in Fuse, "read" in Fuse, "write" in Fuse, "flush" in Fuse, "open" in Fuse, "truncate" in Fuse, "symlink" in Fuse, "unlink" in Fuse, "mkdir" in Fuse, "rmdir" in Fuse, "mknod" in Fuse, "rename" in Fuse, "fsync" in Fuse, "utime" in Fuse.

See Fuse for details.

fold_path

Folds path by removing "..", "." and other special sequences from it.

Input: $path. Output $folded_path.

file_struct

Creates FUSE-exportable file structure for given entry.

Input: $entry. Output: @file_struct.

by_path

Gets entry by path, uses cache.

Input: $path.

clear_cache

Invalidates entries cache for given path, optionally recursively invalidating all paths up to given depth.

Input: $path, $depth=undef.

flush_inbuffer

Flushes input buffer for given $entry by given $path.

Input: $path, $entry.