On Sat, Jul 8, 2017 at 12:09 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > On Fri, Jul 7, 2017 at 11:35 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > >> Chandan, >> >> I think your tests will fail on upstream kernel and older kernels. >> >> The test matrix to verify is at least: >> run --ov[=1] [--samefs] with kernel [v4.11|v4.12|overlayfs-next] >> run --ov[=1] --samefs --verify with kernel [4.12|overlayfs-next] >> run --ov[=1] --verify with kernel overlayfs-devel (with your patch) >> * all overlayfs Kconfig options set to y >> >> Maybe something like this. >> It is not tested at all, so may be bogus. Please reply on specific >> lines if you don't >> follow the reasoning: >> > > Sorry for all the messed up spaced and line wrapping... > >> if self.skip_layer_test(): >> pass >> elif dentry.is_dir(): >> # Directory inodes are always on overlay st_dev >> if dev != self.upper_dir_fs(): >> raise TestError(name + ": Directory not on union layer") >> pass >> elif self.config().is_samefs(): >> # With samefs setup, files are on overlay st_dev if st_ino >> is constant >> # on copy up and on real st_dev if st_ino is not constant. >> # --verify verifies constant st_ino, so it implies overlay >> st_dev check. >> # Without --verify, we allow for both options. >> if dev == self.upper_dir_fs(): >> pass >> if self.config().is_verify(): >> raise TestError(name + ": File not on union layer") >> if dev != self.upper_fs(): >> raise TestError(name + ": File unexpectedly not on >> lower/upper layer") >> pass >> else >> # With non samefs setup, files are on pseudo or upper >> st_dev if st_ino >> # is constant on copy up and on lower or upper st_dev if >> st_ino is not constant. >> # --verify verifies constant st_ino, so it implies pseudo >> st_dev check. >> # Without --verify we allow for both options. > >> # Lower file can be on upper fs when rotating upper layers (--ov=N). >> # TODO: stricter lower/upper checks for --ov=0. > > Don't think this comment about Lower file is relevant to these test cases. > I think in this context, not dentry.on_upper() means on lowermost layer, > which is either self.lower_fs() or pseudo dev. > >> if dev == self.upper_dir_fs(): >> raise TestError(name + ": File unexpectedly on union layer") >> if dev == self.upper_fs(): >> if not dentry.on_upper(): >> raise TestError(name + ": File unexpectedly on upper layer") >> pass >> if self.config().is_verify() >> if dev == self.lower_fs(): >> # Overlayfs returns pseudo st_dev or upper st_dev, >> but never the lower layer >> raise TestError(name + ": File unexpectedly on lower layer") >> pass >> if dev != self.upper_fs() and dev != self.lower_fs(): >> raise TestError(name + ": File unexpectedly not on >> lower/upper layer") > > Yeah, this last test is wrong because without --verify, pseudo st_dev > is still allowed. > Instead could check: > if dev == self.lower_fs() and dentry.on_upper(): > raise TestError(name + ": File unexpectedly on lower layer") > > >> pass >> >> if dentry.is_sym() and dentry not in symlinks: >> symlinks.add(dentry) OK, my pseudo patch was mostly correct, but full of brainoes, push a tested patch to https://github.com/amir73il/unionmount-testsuite/commits/overlayfs-devel Please review and verify. Thanks, Amir. -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html