From b299aaed93379f70a76b260a4a1c5ce474c44abc Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 26 Sep 2022 22:19:46 +0200 Subject: [PATCH] fix some cases of deleted files not being forgotten --- copyparty/up2k.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 4d672586..c369fcaa 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -45,6 +45,7 @@ from .util import ( s3dec, s3enc, sanitize_fn, + spack, statdir, vjoin, vsplit, @@ -689,10 +690,8 @@ class Up2k(object): rei = vol.flags.get("noidx") reh = vol.flags.get("nohash") n4g = bool(vol.flags.get("noforget")) - - dev = 0 - if vol.flags.get("xdev"): - dev = bos.stat(top).st_dev + cst = bos.stat(top) + dev = cst.st_dev if vol.flags.get("xdev") else 0 with self.mutex: reg = self.register_vpath(top, vol.flags) @@ -728,6 +727,7 @@ class Up2k(object): reh, n4g, [], + cst, dev, bool(vol.flags.get("xvol")), ) @@ -764,6 +764,7 @@ class Up2k(object): reh: Optional[Pattern[str]], n4g: bool, seen: list[str], + cst: os.stat_result, dev: int, xvol: bool, ) -> int: @@ -818,7 +819,7 @@ class Up2k(object): # self.log(" dir: {}".format(abspath)) try: ret += self._build_dir( - db, top, excl, abspath, rap, rei, reh, n4g, seen, dev, xvol + db, top, excl, abspath, rap, rei, reh, n4g, seen, inf, dev, xvol ) except: t = "failed to index subdir [{}]:\n{}" @@ -851,6 +852,7 @@ class Up2k(object): zh = hashlib.sha1() _ = [zh.update(str(x).encode("utf-8", "replace")) for x in files] + zh.update(spack(b"