def writeDiskBlock(id, block_no, write_data): if not diskPhysical.diskMap.has_key(id): raise Exception("Error : Disk does not exist") disk = diskPhysical.diskMap[id] if disk.numBlocks < block_no + 1: raise Exception("Error : Invalid block number") disk.commandList.append(("writeDiskBlock", block_no, write_data)) print "Finding disk block..." virtual_block_no = getVirtualDiskNo(disk.patches, block_no) diskPhysical.writePhysicalBlock(virtual_block_no, write_data) delta = disk.numBlocks / 2 block_replica_disk = (block_no + delta) if block_no < delta else (block_no - delta) virtual_replica_block_no = getVirtualDiskNo(disk.patches, block_replica_disk) curr_replica = diskPhysical.getBlockReplica(virtual_block_no) if curr_replica == -1 or curr_replica != virtual_replica_block_no: diskPhysical.setBlockReplica(virtual_block_no, virtual_replica_block_no) diskPhysical.setBlockReplica(virtual_replica_block_no, virtual_block_no) print "Virtual replica block no : ", str( diskPhysical.getBlockReplica(virtual_block_no)) diskPhysical.writePhysicalBlock( diskPhysical.getBlockReplica(virtual_block_no), write_data) print "Written disk block..."
def writeDiskBlock(id, block_no, write_data): if not diskPhysical.diskMap.has_key(id): raise Exception("Error : Invalid disk id") disk = diskPhysical.diskMap[id] if disk.numBlocks < block_no + 1: raise Exception("Error : Invalid block number") disk.commandList.append(("writeDiskBlock", block_no, write_data)) print "Finding disk block..." print "Virtual disk no : ", getVirtualDiskNo(disk.patches, block_no) diskPhysical.writePhysicalBlock(getVirtualDiskNo(disk.patches, block_no), write_data) print "Written disk block..."
def writeBlock(block_no, write_data): diskPhysical.writePhysicalBlock(block_no, write_data)