On Sun, Dec 4, 2016 at 6:33 PM, Al Viro [off-list ref] wrote:
On Sun, Dec 04, 2016 at 04:38:05AM +0000, Al Viro wrote:
quoted
I understand wanting to avoid extra arguments, but you are asking for trouble
with that sort of calling conventions. Verifying that all call chains have
these fields initialized is bloody unpleasant and it *is* going to break,
especially since the rules are "you need to initialize it for vfs_xgetattr(),
but not for vfs_getattr()" - the names are similar enough for confusion,
and that's not the only such pair.
FWIW, there's a bit of abuse of struct kstat in overlayfs object
creation paths - for one thing, it ends up with a very small subset
of struct kstat (mode + rdev), for another it also needs link in
case of symlinks and ends up passing it separately.
IMO it would be better to introduce a separate object for that; does anybody
have objections to something like the patch below? In principle, we might
even lift that thing into general API and switch ->mkdir()/->mknod()/->symlink()
to identical calling conventions. Hell knows, perhaps ->create() as well...
Comments?
Good cleanup. Applied, thanks.
Miklos