summaryrefslogtreecommitdiff
path: root/raidguessfs.py
diff options
context:
space:
mode:
authorLudovic Pouzenc <lpouzenc@gmail.com>2015-06-15 22:42:48 +0200
committerLudovic Pouzenc <lpouzenc@gmail.com>2015-06-15 22:42:48 +0200
commite4f77ba251e6594f298d1ff91d941826a7b06534 (patch)
tree1bb1a747bf435abe337e4d53f0f29c8b260a9426 /raidguessfs.py
parent8847a025b334ea0d9814215291e8f546dd5f1e7e (diff)
downloadraidguessfs-e4f77ba251e6594f298d1ff91d941826a7b06534.tar.gz
raidguessfs-e4f77ba251e6594f298d1ff91d941826a7b06534.tar.bz2
raidguessfs-e4f77ba251e6594f298d1ff91d941826a7b06534.zip
Minor refactoring and renames, implementation of disk_xor
Diffstat (limited to 'raidguessfs.py')
-rwxr-xr-xraidguessfs.py26
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,