def write_bytes(self, rfd, wfd, work): os.lseek(rfd, work.offset, os.SEEK_SET) os.lseek(wfd, work.offset, os.SEEK_SET) m = None if self.verify: m = hashlib.sha1() remaining = work.length while remaining != 0: if remaining >= self.blocksize: self.read_then_write(rfd, wfd, work, self.blocksize, m) remaining -= self.blocksize else: self.read_then_write(rfd, wfd, work, remaining, m) remaining = 0 if self.verify: # use src path here ck = ChunkSum(work.dest, offset=work.offset, length=work.length, digest=m.hexdigest()) if len(self.chunksums_mem) < G.memitem_threshold: self.chunksums_mem.append(ck) else: self.chunksums_buf.append(ck) if len(self.chunksums_buf) == G.DB_BUFSIZE: if self.use_store == False: self.workdir = os.getcwd() self.chunksums_dbname = "%s/chunksums.%s" % (G.tempdir, self.circle.rank) self.chunksums_db = DbStore(dbname=self.chunksums_dbname) self.use_store = True self.chunksums_db.mput(self.chunksums_buf) del self.chunksums_buf[:]
def append_fitem(self, fitem): """ if G.use_store: self.flist_buf.append(fitem) if len(self.flist_buf) == G.DB_BUFSIZE: self.flist.mput(self.flist_buf) del self.flist_buf[:] else: self.flist.append(fitem) """ if len(self.flist) < G.memitem_threshold: self.flist.append(fitem) else: self.flist_buf.append(fitem) if len(self.flist_buf) == G.DB_BUFSIZE: if self.use_store == False: self.dbname = "%s/fwalk.%s" % (G.tempdir, self.circle.rank) self.flist_db = DbStore(self.dbname) self.use_store = True self.flist_db.mput(self.flist_buf) del self.flist_buf[:]