m5dir fails with "illegal directory size"
When running m5dir and receiving an error message like this:
Module directory parse error 1 encountered: Illegal directory size
The directory size was 5244512
The best guess about the directory content is printed below:
This module contains a NeoLegacy directory (capable of storing up to 65536 scans):
Number of scans on the directory = 342
Directory version = 2 subversion = 7
jive5ab format designator = Mark5B16DisksSDK9BankB
DiFX signature = 1773171562
The binary directory was dumped to /tmp/dir.dump
Error: Directory read for module GSFC+026 unsuccessful, error code=-3
FYI: Not setting disk module state to Played for GSFC+026
fuse mount the module
fuseMk5 -f /tmp/dir.dump /mark5fxXX
Check that the scans are properly mounted and can be decoded e.g.
m5findformat /mark5fxXX/scan or printVDIFheader /mark5fxXX/scan
if everythin looks OK you can write back the binary directory created by m5dir to the module
writeuserdir /tmp/dir.dump
Reconstructing a Mark5 user directory
When the user directory on a module has been corrupted for whatever reason, there are two possible ways to recover it, using utilities included in "fuseMk5". Place the problematic module as the only module into a Mark5 unit. Then:
If the module was previously imported into DiFX:
mkdir tmp; cd tmp cp -a /cluster/difx/directories/<modulename>.dir . /cluster/mark5/fuseMk5/fuseMk5-cvs/difxdirfile2userdir.py <modulename>.dir newdir.bin /cluster/mark5/fuseMk5/fuseMk5-cvs/fuseMk5 --udread newdir.bin /mnt/diskpack ls /mnt/diskpack # If files under /mnt/diskpack looked reasonable you can write newdir.bin onto module: fusermount -u /mnt/diskpack /cluster/mark5/fuseMk5/fuseMk5-cvs/writeuserdir newdir.bin
mkdir tmp; cd tmp cp <fieldsystemlog>.log fslog.log (cat expt_part_2.log >> fslog.log) # if there are multiple experiments on a module (cat expt_part_3.log >> fslog.log) # ... /cluster/mark5/fuseMk5/fuseMk5-cvs/fslog2userdir.py <fieldsystemlog>.log newdir.dir /cluster/mark5/fuseMk5/fuseMk5-cvs/fuseMk5 --udread newdir.bin /mnt/diskpack ls /mnt/diskpack # If files under /mnt/diskpack looked reasonable you can write newdir.bin onto module: fusermount -u /mnt/diskpack /cluster/mark5/fuseMk5/fuseMk5-cvs/writeuserdir newdir.bin
Mark5 Module recovery
Starting from a certain Conduant SDK version (uncertain which), the Conduant card firmware has lost its ability to gracefully play back modules that contain one or more corrupt/dead disks. Such modules will either freeze the Mark 5, or will play back extremely slowly with zero data.
Upgrade SDK Version
insert a module into slot A
BEWARE: data on the module might become deleted, so make sure it contains no valid data !
log-into the mark5 machine as user root, then execute:
cd /usr/local/src/streamstor/linux/util/ ./ssflash -u SDK9.3.ssf
make sure no errors are reported during the flashing process
run ssopen and sstest:
./ssinfo ./sstest
make sure no errors are reported
Update the sticker on the chassis of the mark5 to indicate the new version of SDK.