def sync(self): (serialized, imap_num) = inodemap.inodemap.save_inode_map(get_max_inode()) special_inode = Inode() special_inode.write(0, serialized) imap_loc = inodemap.inodemap.lookup(special_inode.id) segment.segman.update_imap_postion(imap_loc, imap_num) segment.segman.flush()
def sync(self): (serialized, imap_num) = inodemap.inodemap.save_inode_map(get_max_inode()) special_inode = Inode() special_inode.write(0, serialized) imap_loc = inodemap.inodemap.lookup(special_inode.id) segment.segman.update_imap_postion(imap_loc, imap_num) segment.segman.flush()
def unlink(self, path): filename = find_filename(path) parent_inode_no = self.search_dir(find_parent(path)) parent_inode_block = inodemap.inodemap.lookup(parent_inode_no) parent_inode = Inode(data=segment.segman.block_read(parent_inode_block)) parent_old_size = parent_inode.filesize parent_dir = Directory(parent_inode_no) found_entry = False entries = [] for (name, inode) in parent_dir.enumerate(): if found_entry: entries.append((name, inode)) if name == filename: fount = True position = parent_dir.position - (FILENAMELEN + 4) for (name, inode) in entries: parent_inode.write(position, struct.pack("%dsI" % FILENAMELEN, name, inode)) position += FILENAMELEN + 4 parent_inode.filesize = parent_old_size - (FILENAMELEN + 4) inodemap.inodemap.update_inode(parent_inode_no, parent_inode.serialize())
def unlink(self, path): filename = find_filename(path) parent_inode_no = self.search_dir(find_parent(path)) parent_inode_block = inodemap.inodemap.lookup(parent_inode_no) parent_inode = Inode( data=segment.segman.block_read(parent_inode_block)) parent_old_size = parent_inode.filesize parent_dir = Directory(parent_inode_no) found_entry = False entries = [] for (name, inode) in parent_dir.enumerate(): if found_entry: entries.append((name, inode)) if name == filename: fount = True position = parent_dir.position - (FILENAMELEN + 4) for (name, inode) in entries: parent_inode.write(position, struct.pack("%dsI" % FILENAMELEN, name, inode)) position += (FILENAMELEN + 4) parent_inode.filesize = parent_old_size - (FILENAMELEN + 4) inodemap.inodemap.update_inode(parent_inode_no, parent_inode.serialize())