summaryrefslogtreecommitdiff
path: root/raidguessfs.py
diff options
context:
space:
mode:
authorLudovic Pouzenc <lpouzenc@gmail.com>2015-06-28 01:05:47 +0200
committerLudovic Pouzenc <lpouzenc@gmail.com>2015-06-28 01:05:47 +0200
commit45e7b53b013999e4cc2f72c080651cc2ece5a346 (patch)
tree8f965f0a436bdd2bfcb960128bf4c683b7a2e8b0 /raidguessfs.py
parent2e121ce4cd7e9a5ec856351459e5c683a33c9a80 (diff)
downloadraidguessfs-45e7b53b013999e4cc2f72c080651cc2ece5a346.tar.gz
raidguessfs-45e7b53b013999e4cc2f72c080651cc2ece5a346.tar.bz2
raidguessfs-45e7b53b013999e4cc2f72c080651cc2ece5a346.zip
RAID 5 layout implementation (left/right (as)symmetric and RAID 0 impl.
Diffstat (limited to 'raidguessfs.py')
-rwxr-xr-xraidguessfs.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/raidguessfs.py b/raidguessfs.py
index fba2187..807a2be 100755
--- a/raidguessfs.py
+++ b/raidguessfs.py
@@ -62,30 +62,33 @@ class RaidGuessFS(fuse.Fuse):
self.settings = [
'disk_count',
'raid_start', 'raid_end', 'raid_chunk_size', 'raid_disk_order',
+ 'raid_layout',
'bmp_height', 'bmp_width', 'bmp_start_offset'
]
self.settings_getters = [
self.d.get_disk_count,
self.raid.get_raid_start, self.raid.get_raid_end, self.raid.get_raid_chunk_size, self.raid.get_raid_disk_order_str,
+ self.raid.get_raid_layout,
self.bmp.get_bmp_height, self.bmp.get_bmp_width, self.bmp.get_bmp_start_offset
]
self.settings_updaters = [
self.update_disk_count,
self.update_raid_start, self.update_raid_end, self.update_raid_chunk_size, self.update_raid_disk_order,
+ self.raid.set_raid_layout,
self.update_bmp_height, self.update_bmp_width, self.update_bmp_start_offset
]
self.dentries = {
'/' : [ fuse.Direntry(name) for name in ['config','disk','raid','visual'] ],
'/config': [ fuse.Direntry(name) for name in self.settings ],
- '/raid' : [ fuse.Direntry(name) for name in self.raid.raid_types ],
+ '/raid' : [ fuse.Direntry(name) for name in myraid.MyRaid.RAID_TYPES ],
'/disk' : [ ], # Filled in _refresh_disk_dentries()
'/visual': [ ], # Filled in _refresh_disk_dentries()
}
- for raid_type in self.raid.raid_types:
+ for raid_type in myraid.MyRaid.RAID_TYPES:
self.dentries.update( {
'/raid/%s'%raid_type: [ fuse.Direntry(name) for name in ['disk_parity','disk_xor','raid_result'] ],
}
@@ -116,7 +119,7 @@ class RaidGuessFS(fuse.Fuse):
"""Update the raid computed attributes after a config change"""
logging.debug("Enter _refresh_raid_fattr()")
- for raid_type in self.raid.raid_types:
+ for raid_type in myraid.MyRaid.RAID_TYPES:
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)
@@ -133,6 +136,7 @@ class RaidGuessFS(fuse.Fuse):
def update_disk_count(self,arg):
i = int(arg)
+ #TODO : raise exception instead of using assertions
assert (i > 0), "Negative value make no sense here"
self.d.set_disk_count(i)
self.d.open_disks()
@@ -214,7 +218,7 @@ class RaidGuessFS(fuse.Fuse):
self.fattr = {
'/config/%s'%s: self.st.make_fake_file(64,0666) for s in self.settings
}
- for raid_type in self.raid.raid_types:
+ for raid_type in myraid.MyRaid.RAID_TYPES:
self.fattr.update( {
'/raid/%s/disk_parity'%raid_type: self.st.make_fake_file(0),
'/raid/%s/disk_xor'%raid_type: self.st.make_fake_file(0),
@@ -285,7 +289,7 @@ class RaidGuessFS(fuse.Fuse):
if path_chuncks[0] == 'raid':
raid_type=path_chuncks[2]
- if raid_type in self.raid.raid_types:
+ if raid_type in myraid.MyRaid.RAID_TYPES:
if path_chuncks[4] == 'disk_parity':
return self.raid.read_disk_parity(raid_type,offset,size)
if path_chuncks[4] == 'disk_xor':