Skip to content
/ hnfs Public

Haskell bindings for libnfs (NFS client library)

License

Notifications You must be signed in to change notification settings

redlicha/hnfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# hnfs - Haskell bindings for the libnfs NFS client library

## Overview

### Library

Hnfs provides Haskell bindings for the libnfs NFS client library which is
developed at https://github.com/sahlberg/libnfs .
These bindings use the c2hs tool and were first and foremost created as an exercise
in learning Haskell. The interface is not yet considered stable (see TODO), and
neither is the code - use at your own risk.

Hnfs exposes both the synchronous and the asynchronous interface of libnfs but
eschews its "raw" API. The nfs_url API is also omitted for the time being.

### hnfs-tester

Hnfs comes with hnfs-tester, a test tool based on Tasty to exercise the code
against an existing NFS export.

  Usage: hnfs-tester --server 127.0.0.1 --export /srv/test/

hnfs-tester *SHOULD NOT* be run against an NFS export that is used in production as
it could lead to data loss.

## Installation Notes

* Get libnfs from https://github.com/aredlich/libnfs as it
  contains a few modifications which are not pushed upstream yet.
* The version numbers listed in hnfs.cabal are based on the system
  hnfs is developed on; older versions might work as well - YMMV.
* c2hs 0.16.6 from cabal currently does not work and older versions don't
  support `offsetof' which is needed by Nfs.chs yet.
  Getting it from https://github.com/haskell/c2hs fixes it (at the time of
  writing: commit 4ac173844, still identifies itself as 0.16.6).

## Known Issues

* The asynchronous tests succeed but print the following to stderr:
   "hnfs-tester: ioManagerDie: write: Bad file descriptor"
  . This seems to be caused by https://ghc.haskell.org/trac/ghc/ticket/5443 .

## TODO

* Improve documentation - currently mostly stubs.
* Revisit error handling - use exceptions instead of / together with Either?
* Make tests more fine grained
* More tests
* Split library up into Nfs.Base, Nfs.Sync and Nfs.Async?

## License

Just as libnfs, hnfs and hnfs-tester is available under LGPL v2.1 - see the
LICENSE file.

## Contact

Feedback is very welcome - feel free to contact me with questions / suggestions
/ bug reports via mail or github's tools (pull requests and issue tracker).

About

Haskell bindings for libnfs (NFS client library)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published