Hi,<br><br>starting glusterfs with direct-io disabled (glusterfs --disable-direct-io) ensures working of NFS re-export of glusterfs.<br><br>regards,<br><br><div class="gmail_quote">On Fri, Apr 27, 2007 at 12:47 AM, <a href="mailto:gpvcs@tiscali.fr">gpvcs@tiscali.fr</a> <span dir="ltr">&lt;<a href="mailto:gpvcs@tiscali.fr">gpvcs@tiscali.fr</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Avati,<br>
<br>
I first thought that I found the error when suddenly it was<br>
working on my machine but I never managed to reproduce it.<br>
Then I realized that in cluster mode, one of my machine was<br>
running using the default fuse but it did it again on my<br>
standalone machine.<br>
One think for sure is that with default fuse (API 7.6)<br>
NFS mount fail always. You have to use a latter fuse.<br>
<br>
After many try I started to trace NFS and Fuse in kernel mode:<br>
<br>
cd /proc/sys/sunrpc<br>
echo 32767 &gt; nfs_debug<br>
echo 32767 &gt; nfsd_debug<br>
<br>
and did my test again:<br>
<br>
exportfs:<br>
localhost:/gfs/fs1 on /gfs/d610.nfsV3 type nfs<br>
(rw,nfsvers=3,noac,hard,intr,tcp,lock,posix,addr=127.0.0.1)<br>
<br>
cd /gfs/nfsV3<br>
ls &gt; 11<br>
<br>
<br>
The trace between a successfull writing other NFS and error<br>
change here:<br>
Apr 26 16:21:06 fturi kernel: NFS call  write 6 @ 0<br>
Apr 26 16:21:06 fturi kernel: nfsd_dispatch: vers 3 proc 7<br>
Apr 26 16:21:06 fturi kernel: nfsd: WRITE(3)    24: 02010001<br>
00000000 00000003 00000000 00000001 00000000 6 bytes at 0 stable<br>
Apr 26 16:21:06 fturi kernel: nfsd: fh_verify(24: 02010001<br>
00000000 00000003 00000000 00000001 00000000)<br>
<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
Apr 26 16:21:06 fturi kernel: # NO PERM 531 nfsd: write<br>
complete err=-1<br>
Apr 26 16:21:06 fturi kernel: NFS reply write: -1<br>
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
<br>
The NO PERM message comes from this function in fuse<br>
2.6.3/kernel/file.c<br>
<br>
static int fuse_get_user_pages(struct fuse_req *req, const<br>
char __user *buf,<br>
                               unsigned nbytes, int write)<br>
{<br>
        unsigned long user_addr = (unsigned long) buf;<br>
        unsigned offset = user_addr &amp; ~PAGE_MASK;<br>
        int npages;<br>
<br>
        /* This doesn&#39;t work with nfsd */<br>
        if (!current-&gt;mm)<br>
                {printk(KERN_CRIT &quot;# NO PERM<br>
%d&quot;,__LINE__);return -EPERM;};<br>
<br>
        nbytes = min(nbytes, (unsigned)<br>
FUSE_MAX_PAGES_PER_REQ &lt;&lt; PAGE_SHIFT);<br>
        npages = (nbytes + offset + PAGE_SIZE - 1) &gt;&gt;<br>
PAGE_SHIFT;<br>
        npages = max(npages, 1);<br>
        npages = min(npages, FUSE_MAX_PAGES_PER_REQ);<br>
        down_read(&amp;current-&gt;mm-&gt;mmap_sem);<br>
        npages = get_user_pages(current, current-&gt;mm,<br>
user_addr, npages, write,<br>
                                0, req-&gt;pages, NULL);<br>
        up_read(&amp;current-&gt;mm-&gt;mmap_sem);<br>
        if (npages &lt; 0)<br>
                return npages;<br>
<br>
        req-&gt;num_pages = npages;<br>
        req-&gt;page_offset = offset;<br>
        return 0;<br>
}<br>
<br>
<br>
I Just added the dprintk to make sure it was there. There is<br>
a comment about: /* doesnt work with nfsd */<br>
<br>
So, its look like its fuse refusing (error=-1 = NOPERM) the<br>
writting other NFS.<br>
I&#39;m puzzled by the fact it works under another linux. maybe<br>
the fuse_get_user_pages  is not called in your case of the<br>
structure &quot;current-&gt;mm&quot; is filled up in your case.<br>
<br>
This is the trace collected by the debug mode of server.vol<br>
and client.vol ( debug on top of the brick):<br>
<br>
glusterfsd is empty<br>
glusterfs contains:<br>
[Apr 26 16:21:02] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:21:02] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/11)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=64356, st_<br>
mode=33206, st_nlink=1, st_uid=99, st_gid=99, st_rdev=0,<br>
st_size=0, st_blksize=4096, st_blocks=8, st_atime=[Apr 26<br>
15:48:19], st_mtime=[Apr 26 15:54:32], st_ctime=[Apr 26<br>
 15:54:32]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/11)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=64356, st_<br>
mode=33206, st_nlink=1, st_uid=99, st_gid=99, st_rdev=0,<br>
st_size=0, st_blksize=4096, st_blocks=8, st_atime=[Apr 26<br>
15:48:19], st_mtime=[Apr 26 15:54:32], st_ctime=[Apr 26<br>
 15:54:32]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:967/trace_open()]<br>
trace:trace_open (*this=0x8395650, path=/11, flags=32769,<br>
mode=0)<br>
[Apr 26 16:21:04] [DEBUG/trace.c:88/trace_open_cbk()]<br>
trace:trace_open_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *ctx=0x8396f58), *buf=0x8396c60 {st_dev=64768,<br>
st_ino=<br>
64356, st_mode=33206, st_nlink=1, st_uid=99, st_gid=99,<br>
st_rdev=0, st_size=0, st_blksize=4096, st_blocks=8,<br>
st_atime=[Apr 26 15:48:19], st_mtime=[Apr 26 15:54:32], st_cti<br>
me=[Apr 26 15:54:32]})<br>
[Apr 26 16:21:04] [DEBUG/trace.c:1089/trace_release()]<br>
trace:trace_release (*this=0x8395650, *ctx=0x8396f58)<br>
[Apr 26 16:21:04] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/11)<br>
<br>
[Apr 26 16:21:04] [DEBUG/trace.c:386/trace_release_cbk()]<br>
trace:trace_release_cbk (*this=0x8395650, op_ret=0, op_errno=95)<br>
[Apr 26 16:21:04] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8397098 {st_dev=64768, st_ino=64356, st_<br>
mode=33206, st_nlink=1, st_uid=99, st_gid=99, st_rdev=0,<br>
st_size=0, st_blksize=4096, st_blocks=8, st_atime=[Apr 26<br>
15:48:19], st_mtime=[Apr 26 15:54:32], st_ctime=[Apr 26<br>
 15:54:32]})<br>
[Apr 26 16:28:28] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:28] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:28] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:28] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:31] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:31] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:31] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:31] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:688/trace_getattr()]<br>
trace:trace_getattr (*this=0x8395650, path=/)<br>
<br>
[Apr 26 16:28:31] [DEBUG/trace.c:109/trace_getattr_cbk()]<br>
trace:trace_getattr_cbk (*this=0x8395650, op_ret=0,<br>
op_errno=95, *buf=0x8396c60 {st_dev=64768, st_ino=68494, st_<br>
mode=16895, st_nlink=2, st_uid=0, st_gid=500, st_rdev=0,<br>
st_size=4096, st_blksize=4096, st_blocks=16, st_atime=[Apr<br>
26 16:19:02], st_mtime=[Apr 26 09:42:58], st_ctime=[Ap<br>
r 26 09:42:58]})<br>
[Apr 26 16:28:31] [DEBUG/trace.c:1155/trace_getxattr()]<br>
trace:trace_getxattr (*this=0x8395650, path=/,<br>
name=system.posix_acl_access, size=0)<br>
[Apr 26 16:28:31] [DEBUG/trace.c:513/trace_getxattr_cbk()]<br>
trace:trace_getxattr_cbk (*this=0x8395650, op_ret=-1,<br>
op_errno=95)<br>
<br>
<br>
Cdt FT<br>
<br>
<br>
<br>
<br>
<br>
---------- Initial Header -----------<br>
<br>
>From      : Anand Avati &lt;<a href="mailto:avati@zresearch.com">avati@zresearch.com</a>&gt;<br>
To          : <a href="mailto:gpvcs@tiscali.fr">gpvcs@tiscali.fr</a><br>
Cc          : <a href="mailto:gluster-devel@nongnu.org">gluster-devel@nongnu.org</a><br>
Date      : Wed, 18 Apr 2007 08:55:26 -0700<br>
Subject : Re: Re:[Gluster-devel] NFS re-export works for me<br>
<br>
I was able to successfully mount a glusterfs export via NFS<br>
too. I am<br>
using slackware 10.2 and did nothing special apart from using<br>
fuse-2.6.0. Maybe your problem could be because of the AIX<br>
client.<br>
please try from a GNU/Linux client and see if it helps.<br>
Attaching the<br>
log file by loading debug/trace will help get a better picture.<br>
<br>
regards,<br>
avati<br>
<br>
On Wed, Apr 18, 2007 at 11:25:49AM -0400, Brent A Nelson wrote:<br>
&gt; rw,fsid=10 are the export options.<br>
&gt;<br>
&gt; 2.6.15 is the kernel (it&#39;s a Ubuntu Dapper with its<br>
kernel, probably<br>
&gt; closer to 2.6.16).  Fuse 2.6.3 was added from an extra<br>
repository.<br>
&gt;<br>
&gt; I used no options at all on the Ubuntu Breezy NFS client<br>
mount.  Looking<br>
&gt; at the mtab, no special options are listed there, either,<br>
so the options<br>
&gt; are whatever is default for this platform.<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Brent<br>
&gt;<br>
&gt; On Wed, 18 Apr 2007, <a href="mailto:gpvcs@tiscali.fr">gpvcs@tiscali.fr</a> wrote:<br>
&gt;<br>
&gt; &gt;Hi Brent,<br>
&gt; &gt;<br>
&gt; &gt;That&#39;s a very good news for me. Could you please tell me<br>
&gt; &gt;which linux kernel version are you using (uname -a) and<br>
&gt; &gt;/etc/exports line and mount command you used ?<br>
&gt; &gt;I&#39;m not lucky with NFS and will very appreciate thoses<br>
details.<br>
&gt; &gt;<br>
&gt; &gt;Have a nice day, Francois<br>
&gt; &gt;---------- Initial Header -----------<br>
&gt; &gt;<br>
&gt; &gt;From      : gluster-devel-bounces+gpvcs=<a href="http://tiscali.fr" target="_blank">tiscali.fr</a>@<a href="http://nongnu.org" target="_blank">nongnu.org</a><br>
&gt; &gt;To          : <a href="mailto:gluster-devel@nongnu.org">gluster-devel@nongnu.org</a><br>
&gt; &gt;Cc          :<br>
&gt; &gt;Date      : Wed, 18 Apr 2007 00:51:51 -0400 (EDT)<br>
&gt; &gt;Subject : [Gluster-devel] NFS re-export works for me<br>
&gt; &gt;<br>
&gt; &gt;I tried a quick NFS re-export to another Linux box (with the<br>
&gt; &gt;fsid= option<br>
&gt; &gt;and fuse 2.6.3 on the NFS server, of course).  I didn&#39;t test<br>
&gt; &gt;it much, but<br>
&gt; &gt;copies to and from the NFS filesystem worked just fine.  I<br>
&gt; &gt;think writes<br>
&gt; &gt;were very slow, but they didn&#39;t give me any trouble.<br>
&gt; &gt;<br>
&gt; &gt;No special mount options (such as NFS version or transport)<br>
&gt; &gt;were needed.<br>
&gt; &gt;<br>
&gt; &gt;Thanks,<br>
&gt; &gt;<br>
&gt; &gt;Brent<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;_______________________________________________<br>
&gt; &gt;Gluster-devel mailing list<br>
&gt; &gt;<a href="mailto:Gluster-devel@nongnu.org">Gluster-devel@nongnu.org</a><br>
&gt; &gt;<a href="http://lists.nongnu.org/mailman/listinfo/gluster-devel" target="_blank">http://lists.nongnu.org/mailman/listinfo/gluster-devel</a><br>
&gt; &gt;<br>
&gt;<br>
&gt; ------------------------ ALICE C&#39;EST ENCORE MIEUX AVEC<br>
CANAL+ LE BOUQUET !<br>
&gt; ---------------<br>
&gt; Découvrez vite l&#39;offre exclusive ALICEBOX et CANAL+ LE<br>
BOUQUET, en cliquant<br>
&gt; ici <a href="http://alicebox.fr" target="_blank">http://alicebox.fr</a><br>
&gt; Soumis à conditions.<br>
&gt; &gt;<br>
&gt; &gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; Gluster-devel mailing list<br>
&gt; <a href="mailto:Gluster-devel@nongnu.org">Gluster-devel@nongnu.org</a><br>
&gt; <a href="http://lists.nongnu.org/mailman/listinfo/gluster-devel" target="_blank">http://lists.nongnu.org/mailman/listinfo/gluster-devel</a><br>
<br>
<br>
--<br>
ultimate_answer_t<br>
deep_thought (void)<br>
{<br>
  sleep (years2secs (7500000));<br>
  return 42;<br>
}<br>
<br>
<br>
------------------------ ALICE C&#39;EST ENCORE MIEUX AVEC CANAL+ LE BOUQUET ! ---------------<br>
Découvrez vite l&#39;offre exclusive ALICEBOX et CANAL+ LE BOUQUET, en cliquant ici <a href="http://alicebox.fr" target="_blank">http://alicebox.fr</a><br>
Soumis à conditions.<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@nongnu.org">Gluster-devel@nongnu.org</a><br>
<a href="http://lists.nongnu.org/mailman/listinfo/gluster-devel" target="_blank">http://lists.nongnu.org/mailman/listinfo/gluster-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Raghavendra G<br><br>