[Bugs] [Bug 1668286] READDIRP incorrectly updates posix-acl inode ctx
bugzilla at redhat.com
bugzilla at redhat.com
Mon Jul 1 12:05:16 UTC 2019
https://bugzilla.redhat.com/show_bug.cgi?id=1668286
homma at allworks.co.jp changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|read-ahead |posix-acl
Severity|high |urgent
--- Comment #12 from homma at allworks.co.jp ---
The problem persists on release 5.6.
We cannot update fuse client to release 5 (or even 6) on our production
environment because of this problem.
I have examined the source code in more detail.
rda_fill_fd_cbk() passes entries with zeroed iatts to other xlators, but for
example, md-cache invalidates its cache entry when iatt with ia_ctime=0 is
passed.
In md-cache.c, function mdc_inode_iatt_set_validate():
if (!iatt || !iatt->ia_ctime) {
gf_msg_callingfn("md-cache", GF_LOG_TRACE, 0, 0,
"invalidating iatt(NULL)"
"(%s)",
uuid_utoa(inode->gfid));
mdc->ia_time = 0;
mdc->valid = 0;
gen = __mdc_get_generation(this, mdc);
mdc->invalidation_time = (gen & 0xffffffff);
goto unlock;
}
On the other hand, posix-acl updates its ctx without checking the content of
the passed iatts.
In posix-acl.c, function posix_acl_ctx_update():
ctx = __posix_acl_ctx_get(inode, this, _gf_true);
if (!ctx) {
ret = -1;
goto unlock;
}
ctx->uid = buf->ia_uid;
ctx->gid = buf->ia_gid;
ctx->perm = st_mode_from_ia(buf->ia_prot, buf->ia_type);
ctx->fop = fop;
I think posix-acl.c should be modified not to update its ctx, when iatt with
ia_ctime=0 is passed.
--
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.
More information about the Bugs
mailing list