From d740e60ab772af0051c0e032db210a95e6483649 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 30 Aug 2015 19:57:15 +0200 Subject: mount-options : keep it simple and stupid + some refactoring --- raidguessfs.py | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) (limited to 'raidguessfs.py') diff --git a/raidguessfs.py b/raidguessfs.py index bd256bf..5e8433a 100755 --- a/raidguessfs.py +++ b/raidguessfs.py @@ -144,8 +144,7 @@ class RaidGuessFS(fuse.Fuse): def update_disk_count(self,arg): i = self._aton(arg) - self.d.set_disk_count(i) - self.d.open_disks() + self.d.open_disks(getattr(self.parser.values,'source_path'), i) self._refresh_disk_dentries() self.raid.set_raid_end(min(self.d.disks_size)-1) self.update_raid_disk_order(range(i)) @@ -240,8 +239,7 @@ class RaidGuessFS(fuse.Fuse): '/raid/%s'%s: self.st.make_fake_file(0) for s in ['disk_parity', 'disk_xor', 'raid_result'] }) - self.d.set_disks_path([getattr(self.parser.values,'disk%02d'%d) for d in range(self.d.max_disks)]) - self.update_disk_count(len(self.d.disk_paths)) + self.update_disk_count(getattr(self.parser.values,'disk_count')) self._refresh_disk_dentries() self._refresh_raid_fattr() @@ -364,28 +362,24 @@ RaidGuessFS is a pseudo-filesystem that allows to guess parameters and disk orde fuse.fuse_python_api = (0, 2) LOG_FILENAME = "/tmp/raidguessfs.log" - #logging.basicConfig(filename=LOG_FILENAME,level=logging.WARN,) - #logging.basicConfig(filename=LOG_FILENAME,level=logging.INFO,) - logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,) - - server = RaidGuessFS(version="%prog " + fuse.__version__,usage=usage,dash_s_do='setsingle') - server.multithreaded = False - - cwd = os.getcwd() - # TODO : only 2 parameters, but taking a parametrized string - for num in range(server.d.max_disks): - server.parser.add_option( - mountopt="disk%02d"%num, - metavar="ABS_PATH", - default="%s/disk%02d.img"%(cwd,num), - help="Disk #%d image file path [default: ./disk%02d.img]"%(num,num) - ) - server.parser.add_option( - mountopt="logf%02d"%num, - metavar="ABS_PATH", - default="%s/disk%02d.log"%(cwd,num), - help="Disk #%d ddrescue log file [default: ./disk%02d.log]"%(num,num) - ) + logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG) # WARN, INFO... + + server = RaidGuessFS(version="%prog " + fuse.__version__, usage=usage, dash_s_do='setsingle') + server.multithreaded = False # Many part of the code is not re-entrant + + server.parser.add_option( + mountopt="source_path", + metavar="PATH", + default="%s"%os.getcwd(), + help="Absolute path that contains source disks images (defaults to current dir)" + ) + + server.parser.add_option( + mountopt="disk_count", + metavar="N", + default="3", + help="Number of disks to try to open at mount time (also tunable at runtime)" + ) server.parse(errex=1) server.main() -- cgit v1.2.3