[Bugs] [Bug 1181500] Can't mount glusterfs

bugzilla at redhat.com bugzilla at redhat.com
Wed Jan 14 09:29:41 UTC 2015


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

Niels de Vos <ndevos at redhat.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fharshav at redhat.com,
                   |                            |rgowdapp at redhat.com
          Component|fuse                        |posix
            Version|3.6.0                       |3.6.1
                 OS|Linux                       |FreeBSD



--- Comment #5 from Niels de Vos <ndevos at redhat.com> ---
This seems to be an issue in the posix-xlator. For some reason the 3.4 client
is able to crash the brick process.

When posix_getxattr() gets called with an xattr that is not treated specially,
the posix-xlator will retrieve a list with all xattrs the file has. It then
goes through that list and fetches all xattrs. This is where things seem to go
wrong. The name of the xattr that gets fetched is not the name of a existing
xattr, but a string with the concatenated list of all xattrs.

[posix.c:3747:posix_getxattr] 0-rep-vol-posix: getxattr failed on
/mnt/test12/brick01/file0: key =
^\trusted.afr.rep-vol-client-0^Ltrusted.gfid^\t
rusted.afr.rep-vol-client-1 (Attribute not found)

>From xlators/storage/posix/src/posix.c:

        size = sys_llistxattr (real_path, list, size);
        if (size < 0) {
                op_ret = -1;
                op_errno = errno;
                goto out;
        }

        remaining_size = size;
        list_offset = 0;
        while (remaining_size > 0) {
                strcpy (keybuffer, list + list_offset);
                size = sys_lgetxattr (real_path, keybuffer, NULL, 0);
                if (size == -1) {
                        op_ret = -1;
                        op_errno = errno;
                        gf_log (this->name, GF_LOG_ERROR, "getxattr failed on "
                                "%s: key = %s (%s)", real_path, keybuffer,
                                strerror (op_errno));
                        break;
                }


libglusterfs/src/syscall.c:sys_llistxattr() depends on the OS where the brick
process is running. So I suspect that the problem is related to how FreeBSD
returns the list of xattrs.

-- 
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