[Bugs] [Bug 1477190] [GNFS] GNFS got crashed while mounting volume on solaris client

bugzilla at redhat.com bugzilla at redhat.com
Wed Aug 2 15:04:14 UTC 2017


https://bugzilla.redhat.com/show_bug.cgi?id=1477190



--- Comment #3 from Worker Ant <bugzilla-bot at gluster.org> ---
COMMIT: https://review.gluster.org/17946 committed in release-3.12 by
Shyamsundar Ranganathan (srangana at redhat.com) 
------
commit 64391ea321d269671814afd13cbdfe099b893e4d
Author: Niels de Vos <ndevos at redhat.com>
Date:   Tue Aug 1 14:41:22 2017 +0200

    libglusterfs: the global_xlator should have valid cbks

    There is a case where Gluster/NFS needs to resolve a path outside of the
    nfs-xlator itself. While resolving the path to fetch the GFID for
    creating the NFS-filehandle, gfapi may set an inode-ctx through
    glfs_resolve_at(). This inode-ctx is linked with the global_xlator.

    Because the global_xlator does not have any cbks, loc_wipe() will cause
    a segfault when it calls inode_unref() and xl->cbks->forget(). It is
    assumed that all xlators have a cbks symbol, otherwise loading of the
    xlator will fail. The global_xlator is not loaded in the same way, so
    there is no failure noticed when the instance is created. By adding an
    empty `struct xlator_cbks`, the global_xlator behaves similat to other
    xlators that do not implement all callbacks.

    I would have preferred to keep the inode-ctx setting through
    glfs_resolve_at() contained within Gluster/NFS. Unfortunately
    Gluster/NFS also uses the inode-ctx, and is not prepared to see the
    values that glfs_resolve_at() stores there.

    This problem is not easily reproducible because it involves mounting
    over WebNFS (like Solaris 10 can do). The segfault will also not be
    immediate, unless the following is done:

    1. create a subdir on a volume
    2. mount the volume/subdir over WebNFS
    3. unmount the volume/subdir
    4. mount the root of the volume
    5. delete the subdir on the volume -> segfault of Gluster/NFS

    Cherry picked from commit cec5036f7e99ae265bb5e0e7f3df30166466eb2c:
    > Change-Id: I2bd71d033e97edc07ba93b2d4ada558f65d68999
    > BUG: 1468291
    > Signed-off-by: Niels de Vos <ndevos at redhat.com>
    > Reviewed-on: https://review.gluster.org/17897
    > Smoke: Gluster Build System <jenkins at build.gluster.org>
    > Reviewed-by: Amar Tumballi <amarts at redhat.com>
    > Reviewed-by: jiffin tony Thottan <jthottan at redhat.com>
    > CentOS-regression: Gluster Build System <jenkins at build.gluster.org>
    > Reviewed-by: Jeff Darcy <jeff at pl.atyp.us>

    Change-Id: I2bd71d033e97edc07ba93b2d4ada558f65d68999
    BUG: 1477190
    Signed-off-by: Niels de Vos <ndevos at redhat.com>
    Reviewed-on: https://review.gluster.org/17946
    Smoke: Gluster Build System <jenkins at build.gluster.org>
    CentOS-regression: Gluster Build System <jenkins at build.gluster.org>
    Reviewed-by: Shyamsundar Ranganathan <srangana at redhat.com>

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=VXnN49iePB&a=cc_unsubscribe


More information about the Bugs mailing list