def mkdir(self, path, mode): parts = path.split("/") parent = string.join(parts[:-1], "/") child = parts[-1] pptr = vfs_dir.lookup(self.fs, self.root, parent) if pptr == None: return -errno.ENOENT cptr = vfs_base.get_new_key() vfs_dir.mkdir(self.fs, cptr, mode) try: vfs_dir.link(self.fs, pptr, child, cptr) except vfs_dir.DupFileExc: return -errno.EEXIST
def create(self, path, flags, mode): print "in create(%s,0x%x,0x%x)" % (path, flags, mode) parts = path.split("/") parent = string.join(parts[:-1], "/") child = parts[-1] pptr = vfs_dir.lookup(self.fs, self.root, parent) if pptr == None: return -errno.ENOENT cptr = vfs_base.get_new_key() self.fs.create_inode(cptr, mode) try: vfs_dir.link(self.fs, pptr, child, cptr) except vfs_dir.DupFileExc: return -errno.EEXIST
import vfs_base import vfs_dir s = db.StoreClient("test", [("localhost", 6666)]) fs = vfs_base.FS(s) status = "OK" ### TEST SET 1: create and then do single-level lookups for 1000 files. vfs_dir.mkdir(fs, "root", 0755) for i in range(1000): path = "file%d" % i key = struct.pack(vfs_base.PTR_FMT, 1, 1, i + 100) try: vfs_dir.link(fs, "root", path, key) print "add(%s) OK" % path except: traceback.print_exc() print "add(%s) FAILED" % path status = "FAILED" print "adding file0 AGAIN" key = struct.pack(vfs_base.PTR_FMT, 1, 1, 0) vfs_dir.link(fs, "root", "file0", key) for i in range(1000): path = "/file%d" % i try: ptr = vfs_dir.lookup(fs, "root", path) if not ptr: