Bug 762539 (GLUSTER-807)
Summary: | GlusterFS compilation fails on NFS Client | ||
---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | Anush Shetty <anush> |
Component: | nfs | Assignee: | Shehjar Tikoo <shehjart> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | low | ||
Version: | mainline | CC: | gluster-bugs |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | Type: | --- | |
Regression: | RTA | Mount Type: | nfs |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Anush Shetty
2010-04-07 06:09:48 UTC
The log does not help because the last call in there is ACCESS which returns successfully. The problem might be in the results returned through the access reply. The next step is to add some debug logs to see what gets returned. then mv -f ".deps/argp-pvh.Tpo" ".deps/argp-pvh.Po"; else rm -f ".deps/argp-pvh.Tpo"; exit 1; fi rm -f libargp.a ar cru libargp.a argp-ba.o argp-eexst.o argp-fmtstream.o argp-help.o argp-parse.o argp-pv.o argp-pvh.o ranlib libargp.a make[4]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3/argp-standalone' make[3]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3/argp-standalone' make[2]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3/argp-standalone' Making all in libglusterfs make[2]: Entering directory `/mnt/client1/glusterfs-3.0.4rc3/libglusterfs' Making all in src make[3]: Entering directory `/mnt/client1/glusterfs-3.0.4rc3/libglusterfs/src' if /bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64 -D_GNU_SOURCE -DXLATORDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/xlator\" -DSCHEDULERDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/scheduler\" -DTRANSPORTDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/transport\" -DGF_LINUX_HOST_OS -DLIBDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/auth\" -I../../contrib/rbtree -fPIC -Wall -g -shared -nostartfiles -g -O2 -MT libglusterfs_la-dict.lo -MD -MP -MF ".deps/libglusterfs_la-dict.Tpo" -c -o libglusterfs_la-dict.lo `test -f 'dict.c' || echo './'`dict.c; \ then mv -f ".deps/libglusterfs_la-dict.Tpo" ".deps/libglusterfs_la-dict.Plo"; else rm -f ".deps/libglusterfs_la-dict.Tpo"; exit 1; fi libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64 -D_GNU_SOURCE -DXLATORDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/xlator\" -DSCHEDULERDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/scheduler\" -DTRANSPORTDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/transport\" -DGF_LINUX_HOST_OS -DLIBDIR=\"/mnt/client1/gluster/lib/glusterfs/3.0.4rc3/auth\" -I../../contrib/rbtree -fPIC -Wall -g -nostartfiles -g -O2 -MT libglusterfs_la-dict.lo -MD -MP -MF .deps/libglusterfs_la-dict.Tpo -c dict.c -fPIC -DPIC -o .libs/libglusterfs_la-dict.o bison -y -d ./spec.y bison: cannot open file `y.tab.c': Permission denied make[3]: *** [y.tab.h] Error 1 make[3]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3/libglusterfs/src' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3/libglusterfs' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/mnt/client1/glusterfs-3.0.4rc3' make: *** [all] Error 2 GlusterFS Server vol file: volume posix1 type storage/posix option directory /gluster/nfs1 end-volume volume ac type features/access-control subvolumes posix1 end-volume volume locks type features/posix-locks option mandatory on subvolumes ac end-volume volume brick1 type performance/io-threads option thread-count 8 subvolumes locks end-volume ### Add network serving capability to above brick. volume server type protocol/server option transport-type tcp option transport.socket.listen-port 5001 subvolumes brick1 option auth.addr.brick1.allow * end-volume NFS Server vol file: volume client1 type protocol/client option transport-type tcp option remote-host 127.0.0.1 option transport.socket.remote-port 5001 option remote-subvolume brick1 end-volume volume client2 type protocol/client option transport-type tcp option remote-host 127.0.0.1 option transport.socket.remote-port 5002 option remote-subvolume brick2 end-volume volume client3 type protocol/client option transport-type tcp option remote-host 127.0.0.1 option transport.socket.remote-port 5003 option remote-subvolume brick3 end-volume volume client4 type protocol/client option transport-type tcp option remote-host 127.0.0.1 option transport.socket.remote-port 9304 option remote-subvolume brick4 end-volume volume distribute type cluster/distribute subvolumes client1 client2 client3 client4 end-volume volume writebehind type performance/write-behind option cache-size 4MB subvolumes replicate end-volume volume stat-prefetch type performance/stat-prefetch subvolumes writebehind end-volume volume io-cache type performance/io-cache option cache-size 64MB # default is 32MB option cache-timeout 2 # default is 1 second subvolumes stat-prefetch end-volume volume nfs type nfs/server option rpc-auth.addr.allow * subvolumes io-cache end-volume This fails because the access test by super user actually returns the access test bits using only the user, group and other, without accounting for the special status of super-user. This results in a permission denied for the super-user. PATCH: http://patches.gluster.com/patch/3121 in master (nfs3: Allow all access to superuser except execute at all times) Regression Test: The problem was that the source tree was extracted as a non-super user. Then, the source compilation was done using the super user. When super-user requested an access test, using the access() syscall, it failed to get the required permissions because the UID did not match the owner's UID of the source files, despite being the super-user. The same thing worked in previous tests because the source tree was extracted as super-user and built with the same id. Test Case: 1. As a regular user, extract glusterfsd source into a nfs mount point. 2. As super-user, configure and build the source in the nfs mount. The test must result in an error free build. |