Menu

Tree [71271b] master /
 History

HTTPS access


File Date Author Commit
 ChangeLog 2018-02-27 jwagner313 jwagner313 [230dee] up v1.3.3
 LICENSE 2008-10-18 Jan Wagner Jan Wagner [783813] comments
 Makefile 2018-02-27 jwagner313 jwagner313 [ad2441] update LD_SDK
 README 2012-03-23 Jan Wagner Jan Wagner [fc8b39] updated maxspeed
 README-NFS-export.txt 2012-03-21 Jan Wagner Jan Wagner [4364d7] threading segfault fix
 README-RedhatPreparations.txt 2008-05-27 Jan Wagner Jan Wagner [fc5c85] refer to README for compiling fuseMk5A
 README-SargePreparations.txt 2008-05-27 Jan Wagner Jan Wagner [fc5c85] refer to README for compiling fuseMk5A
 README-kernel24 2008-05-27 Jan Wagner Jan Wagner [fc5c85] refer to README for compiling fuseMk5A
 difxdirfile2userdir.py 2018-02-27 jwagner313 jwagner313 [ff8243] difxdirfile2userdir.py update usage, fix stopby...
 diskpack2scanlist.c 2015-07-02 Jan Wagner Jan Wagner [11ba74] added diskpack2scanlist
 fslog2userdir.py 2018-12-12 jwagner313 jwagner313 [71271b] disk_pos format extension
 fuseMk5A.c 2018-02-27 jwagner313 jwagner313 [e61bd4] up v1.3.3
 fuseMk5A.h 2018-02-27 jwagner313 jwagner313 [9af3ab] up v1.3.3
 libMark5.c 2018-02-27 jwagner313 jwagner313 [7ba1fb] libMark5.c minor changes
 libMark5.h 2018-02-27 jwagner313 jwagner313 [e59685] up v1.3.3
 maxspeed.c 2015-08-04 Jan Wagner Jan Wagner [f49fba] updated header comments
 permcopy.c 2015-08-04 Jan Wagner Jan Wagner [f49fba] updated header comments
 rawread.c 2018-02-27 jwagner313 jwagner313 [dc9b1a] add rawread.c
 stresstest.sh 2008-10-16 Jan Wagner Jan Wagner [7c8a22] wrong comment
 writeuserdir.c 2018-02-27 jwagner313 jwagner313 [e59685] up v1.3.3
 xlremu.h 2018-02-27 jwagner313 jwagner313 [e59685] up v1.3.3

Read Me

==========================================================

   Filesystem in Userspace for Mark5A/B/C dispacks
   Light the fuse! ;-))

   http://fusemk5a.sourceforge.net/

   Lincense: GNU LGPL
   Copyright (C) 2007 Jan Wagner <jwagner@kurp.hut.fi>
   Version 1.1.7

==========================================================


 The fuseMk5A userspace filesystem provides
 read-only access to the scans on the diskpack.

 The scans will be visible as normal files in
 a normal directory, and they can be used just like
 any normal files from any program you like.


 1 -- Install FUSE

 FUSE is a general file system layer that file
 system providers such as fuseMk5A, sshfs, obexfs 
 and others use.

 If you are installing on a Haystack Mark5 
 and/(or...) kernel 2.4, and quite probably you are,
 then see either
   README-SargePreparations.txt
 or
   README-RedhatPreparations.txt

 If you have a 2.6 kernel, then install FUSE utilities 
 version 2.6.x. Use the official packages provided in
 your Linux distro.

 Note: the FUSE 2.6 and 2.7 kernel module versions have 
 not been tested yet with fuseMk5A. The code may or may 
 not compile. It's recommended you use FUSE kernel 
 module version 2.5.x


 2 -- Compile and install fuseMk5A

 Make sure that you have the 'g++' compiler
 version 3.3 installed. The StreamStor SDK
 libraries are for version g++ 3.3.

 You may have to edit the Makefile. The line
    SSD = /usr/local/src/streamstor/linux/
 has to contain the directory in which the
 StreamStor SDK has been installed. Depending
 on the SDK version the following subdirs and files
 should be present under the $(SSD) directory:

    lib/gcc_v3/  libssapi.a
    include/     xlrapi.h xlrtypes.h xlrdbcommon.h
    driver/lib/  libwdapi*.so

 (you can try 'locate libssapi.a')
 
 On the LDFLAGS line, if you have SDK 9.x or 8.x you
 need to apped the newest -lwdapiXXX version, such
 as -lwdapi921, -lwdapi910 or -lwdapi801 or newer:
    LDFLAGS = $(LDPATHS) ... -lssapi -lwdapi921

 To compile fuseMk5A finally run

   $ make

 To install it and do some extra steps run:

   $ sudo make install

 This copies fuseMk5A into /usr/bin/ and 
 performs the steps in section 3 -- Usability 
 tuning. It also edits /etc/rc.local (Redhat) 
 or /etc/modules (Debian) to load the 'fuse' 
 kernel module automatically on boot.


 3 -- Some usability tuning

 Optional! These steps are already done during
 the 'sudo make install'. You _may_ follow these
 manually as well.

 The 'fuse' kernel module must be loaded for
 any fuse programs to work. First time:
    $ sudo modprobe fuse 

 Optional: you can make 'fuse' to be modprobed
 automatically at system boot.
 RH9:    root$ echo "modprobe fuse" >> /etc/rc.local
 Debian: root$ echo "fuse" >> /etc/modules

 Now create a mount point for fuseMk5A and
 allow normal users to unmount it:
    $ sudo mkdir /mnt/diskpack
    $ sudo chmod a+rwxt /mnt/diskpack
    $ sudo chown oper:users /mnt/diskpack
   ($ sudo chown oper:oper /mnt/diskpack )
 
 Update /etc/group and add 'oper' to the 'fuse' group:
    fuse:x:107:oper  (or similar)

 After editing /etc/group you need to log out and
 back in again to apply your fuse group membership.


 4 -- Typical usage

 To start:

    You must stop the Mark5 software before starting fuseMk5A.
    Use Enddim, edrs, EndM5 or other.

    oper@Mark5-637[1]% ./fuseMk5 /mnt/diskpack

    FuseMk5A will then start and stay in the foreground.

    You should not stop fuseMk5 with Control-C. 
    Instead unmount it from another console window:

    oper@Mark5-637[1]% fusermount -u /mnt/diskpack

 Mount options:

    fuseMk5 [-v|--verbose] [-s|--silent] [-R|--noreset] [-r|--reset]
            [-b <0,1,2>|--bank=<0,1,2>] [-m <0,1>|--machine=<0,1>]
            [-c <bytes>|--cachesize=<bytes>] </mnt/where> [FUSE_options]

    -v --verbose   run in foreground mode, verbosely (default)
    -s --silent    run in foreground mode, but with less output
    -r --reset     performs initial XLRCardReset, sometimes needed
    -R --noreset   does not do any card reset at start (default)
    -b --bank      specify the bank to use (0=A, 1=B, 2=dual; default is 0)
    -m --machine   specify Mark5 type (0=Mark5A/5B(-), 1=Mark5B+/5C; default is 1)
    -c --cachesize size of the read cache (default is 16777216 bytes)
    FUSE_options   additional options for FUSE 'fusermount' like -oallow_root

 Usage:

    # in own terminal:
    oper@eff-mark5c-1:~$ fuseMk5 --bank=2 /mnt/diskpack

    # in other terminal:
    oper@eff-mark5c-1:~$ ll /mnt/diskpack
    total 0
    -r--r--r-- 1 oper oper  25G 1969-12-31 19:00 dualbank02.m5b
    -r--r--r-- 1 oper oper 101G 1969-12-31 19:00 dualbank03.m5b
    -r--r--r-- 1 oper oper 2.9G 1969-12-31 19:00 dualbank04.m5b
    -r--r--r-- 1 oper oper 204G 1969-12-31 19:00 dualbank05.m5b
    -r--r--r-- 1 oper oper 604G 1969-12-31 19:00 dualbank11.m5b

    oper@eff-mark5c-1:~$ /usr/bin/time cat /mnt/diskpack/dualbank04.m5b > /dev/null
    0.58user 5.86system 0:25.80elapsed 25%CPU (0avgtext+0avgdata 0maxresident)k
    0inputs+0outputs (0major+171minor)pagefaults 0swaps

    oper@eff-mark5c-1:~$ dd if=/mnt/diskpack/dualbank04.m5b of=/dev/null bs=1M
    2944+1 records in
    2944+1 records out
    3087435440 bytes (3.1 GB) copied, 14.63 s, 211 MB/s

    Note: probably due to memcpy()'s done between the user program (dd), the
    FUSE kernel module and the FUSE fuseMk5 file system, the throughput
    reported in the fuseMk5 verbose output log is twice faster than the
    actual rate seen in the user program like dd.

    You can test the maximum possible StreamStor raw read speed by running 
    the included program "./maxspeed"; fuseMk5A and Mark5 software must not
    must be running simultaneously.

    If you want to test maxspeed with an extra memcpy() step, look
    at maxspeed.c and change "#define DO_MEMCPY" from 0 to 1.

 To unmount the diskpack:

    oper@Mark5-637[113]% fusermount -u /mnt/diskpack


 4 -- Troubleshooting

 If there are FUSE errors when you try fuseMk5A, your
 FUSE setup might not be correct. You can test by
 trying other FUSE programs, the easiest would be 'sshfs',
 usage is similar to:
   $ sshfs username@my.observatory.org:~/somedir/ /mnt/test/

 There may be some issue with permissions of the StreamStor 
 kernel module. Confirm that you have 'rw' permission for 
 all users:
 oper@Mark5-637% ll /dev/windrvr6
 crw-rw-rw-    1 root     root     254,   0 Sep 28 00:26 /dev/windrvr6

 If there are other problems, post to the projects sourceforge
 forum or send an email to the developers. Include the output of:
   $ uname -a
   $ g++ --version
   $ fusermount --version
   $ /sbin/modinfo fuse
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.