On Wed, Jun 14, 2017 at 10:30 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > On Wed, Jun 14, 2017 at 9:26 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: >> Miklos, >> >> I've made all the changes we discussed on v2 review and now all >> upper/lower hardlinks are consistent. Note that I chose to invalidate >> lower indexed dentries instead of updating all aliases on first copy up >> (patch 21). That seemed simpler to me. Please let me know if you see any >> culprit with that approach. > > If the alias is open, it won't receive the st_ino updates through > fstat(2) since it will still have the ref to the old dentry/old inode. > So it's more correct to update the aliases, but I guess it's also more > complex. > fstat(2) and st_ino are not a problem, because st_ino of lower is returned both before and after link up. The issue is with other attributes like mtime. However, if the alias is open, then read(2) will read the lower content, so you may as well say that returning the lower mtime is a feature... My main concern for indexed lower inconsistency was that ovl_inode_real() may be upper, while ovl_dentry_real() is lower, especially when checking overlay object access permissions. The only places I found where this inconsistency might be exposed are ovl_get_acl() and ovl_permission() and both those cases are relevant for lookup and not for the "open alias" case. Right? Amir.