示例#1
0
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..."
示例#2
0
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..."
示例#3
0
def writeBlock(block_no, write_data):
    diskPhysical.writePhysicalBlock(block_no, write_data)