Distributed Hash Table File System for Linux

Documentation effort magma 0.0.20070911 released magma 0.0.20070829 released magma 0.0.20070806 released on SVN All the news

Valid HTML 4.01 Transitional
Valid CSS!
hosted by gna!

NEWS :: magma v.0.0.20070911 released on SVN and download area

Boot protocol has been revised. In place of using special protocol macros to exchange nodes, connecting node will use normal flare protocol operations to query nodes from bootserving node simply reading contents of directory /.dht

magma_mknod() now checks if mode param contains informations about flare type and also checks flare type is not DIR.

Boot code now figure magma uid and gid from system files and tries to seteuid() and setegid() before any other operation. magmad is now installed suid and sgid as user magma and group magma (which should be present in /etc/passwd and /etc/group)

utils.h provides new get_user_groups(uid) function that returns an array of gid_t elements describing groups of user uid. It's used mainly in check_permission().

magma_simplify_path() function coded to simplify paths. Mainly used by protocol_console.c since FUSE already simplify paths before passing to filesystem. This function can:

  1. tear off muliple slash sequences
  2. tear off redundant './' portions
  3. resolve '/something/../' into '/'

ACL has been completed. Rules are read from file /etc/magma/acl and are declared using this syntax:

  op /sub/path ipaddr[/mask]
  op /sub/path ipaddr[/mask]

  /share/path is the share exported by magma
  op is one in r (read-only), w (read/write), n (no access)
  /sub/path is an arbitrary path under /share/path
  ipaddr[/mask] is the network part to which the rule applies.

Note that mask can be specified in the form n.n.n.n or in the form /N where N is a number between 0 and 32. If missing, a netmask of is assumed, so is considered a host address equivalent to

Rules are matched using this flow:

  1. Select proper share
  2. For each rule of selected share:

    1. Check if /sub/path matches at starting of query path; if not, ignore the rule.
    2. Compare how deep is this subpath in length compared to previous best subpath found. If lesser, ignore the rule.
    3. Is the netmask bigger than previous best rule mask. If not ignore the rule.
    4. Matching ipaddr and netmask. If does not match, ignore the rule.
    5. Check if is more restrictive than previous best rule. If operation is n its more strict than w which in turn is more strict than r. If less restrictive, ignore the rule.

protocol_flare.c and mount.magma.c has been modified to embed ACL. Checking is done inside each magma_* function in mounter client and inside each transmit_* function on server side.

mount.magma now has a --share=<STRING> command line option to specify the share to be mounted. magmad should be modified to support multiple shares.

This file last modified Thursday, 10-Jan-2008 15:50:29 CET