[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