diff options
Diffstat (limited to 'raidguessfs.py')
-rwxr-xr-x | raidguessfs.py | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/raidguessfs.py b/raidguessfs.py index 6b78a7d..c9c3833 100755 --- a/raidguessfs.py +++ b/raidguessfs.py @@ -87,8 +87,7 @@ class RaidGuessFS(fuse.Fuse): for raid_type in self.raid.raid_types: self.dentries.update( { - # TODO : all type of raid don't need the same pseudo files - '/raid/%s'%raid_type: [ fuse.Direntry(name) for name in ['result','data_xor','parity'] ], + '/raid/%s'%raid_type: [ fuse.Direntry(name) for name in ['disk_parity','disk_xor','raid_result'] ], } ) logging.debug("Exit. RaidGuessFS.__init__()") @@ -118,9 +117,9 @@ class RaidGuessFS(fuse.Fuse): logging.debug("Enter _refresh_raid_fattr()") for raid_type in self.raid.raid_types: - self.fattr['/raid/%s/data_xor'%raid_type].st_size = 0 # self.raid.raid_size - self.fattr['/raid/%s/parity'%raid_type].st_size = min(self.d.disks_size) / self.raid.raid_sector_size * 16 - self.fattr['/raid/%s/result'%raid_type].st_size = self.raid.get_raid_size(raid_type) + self.fattr['/raid/%s/disk_parity'%raid_type].st_size = self.raid.sizeof_disk_parity(raid_type) + self.fattr['/raid/%s/disk_xor' %raid_type].st_size = self.raid.sizeof_disk_xor (raid_type) + self.fattr['/raid/%s/raid_result'%raid_type].st_size = self.raid.sizeof_raid_result(raid_type) logging.debug("Exit. _refresh_raid_fattr()") @@ -210,9 +209,9 @@ class RaidGuessFS(fuse.Fuse): } for raid_type in self.raid.raid_types: self.fattr.update( { - '/raid/%s/data_xor'%raid_type: self.st.make_fake_file(0), - '/raid/%s/parity'%raid_type: self.st.make_fake_file(0), - '/raid/%s/result'%raid_type: self.st.make_fake_file(0), + '/raid/%s/disk_parity'%raid_type: self.st.make_fake_file(0), + '/raid/%s/disk_xor'%raid_type: self.st.make_fake_file(0), + '/raid/%s/raid_result'%raid_type: self.st.make_fake_file(0), }) self.d.set_disks_path([getattr(self.parser.values,'disk%02d'%d) for d in range(self.d.max_disks)]) @@ -280,10 +279,12 @@ class RaidGuessFS(fuse.Fuse): if path_chuncks[0] == 'raid': raid_type=path_chuncks[2] if raid_type in self.raid.raid_types: - if path_chuncks[4] == 'result': - return self.raid.read_data(raid_type,self.d.disks,offset,size) - if path_chuncks[4] == 'parity': - return self.raid.check_data(raid_type,self.d.disks,offset,size) + if path_chuncks[4] == 'disk_parity': + return self.raid.read_disk_parity(raid_type,self.d.disks,offset,size) + if path_chuncks[4] == 'disk_xor': + return self.raid.read_disk_xor(raid_type,self.d.disks,offset,size) + if path_chuncks[4] == 'raid_result': + return self.raid.read_raid_result(raid_type,self.d.disks,offset,size) except Exception as e: logging.exception(e) @@ -334,6 +335,7 @@ RaidGuessFS is a pseudo-filesystem that allows to guess parameters and disk orde 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, |