On Wed, Nov 25, 2020 at 02:46:20AM -0800, Sargun Dhillon wrote: [..] > @@ -1125,16 +1183,19 @@ static int ovl_workdir_cleanup_recurse(struct path *path, int level) > if (p->len == 2 && p->name[1] == '.') > continue; > } else if (incompat) { > - pr_err("overlay with incompat feature '%s' cannot be mounted\n", > - p->name); > - err = -EINVAL; > - break; > + err = ovl_check_incompat(ofs, p, path); > + if (err < 0) > + break; > + /* Skip cleaning this */ > + if (err == 1) > + continue; > } Shouldn't we clean volatile/dirty on non-volatile mount. I did a volatile mount followed by a non-volatile remount and I still see work/incompat/volatile/dirty and "trusted.overlay.volatile" xattr on "volatile" dir. I would expect that this will be all cleaned up as soon as that upper/work is used for non-volatile mount.