[Bugs] [Bug 1210338] New: file copy operation fails on nfs

bugzilla at redhat.com bugzilla at redhat.com
Thu Apr 9 13:29:07 UTC 2015


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

            Bug ID: 1210338
           Summary: file copy operation fails on nfs
           Product: GlusterFS
           Version: mainline
         Component: nfs
          Assignee: bugs at gluster.org
          Reporter: rabhat at redhat.com
                CC: bugs at gluster.org, gluster-bugs at redhat.com



Description of problem:

On NFS mount, file copy operation fails with EINVAL. i.e. the below command
executed on a nfs mount fails.

cp /etc/resolv.conf .
cp: cannot create regular file ‘./resolv.conf’: Invalid argument.
This is the error reported in the logs

[2015-04-09 13:24:30.541426] W [nfs3.c:2516:nfs3svc_create_stat_cbk] 0-nfs:
abd82b73: /resolv.conf => -1 (Invalid argument)
[2015-04-09 13:24:30.541545] W [nfs3-helpers.c:3398:nfs3_log_common_res]
0-nfs-nfsv3: XID: abd82b73, CREATE: NFS: 22(Invalid argument for operation),
POSIX: 22(Invalid argument)


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1. copy a file to nfs mount
2.
3.

Actual results:


Expected results:


Additional info:

It seems that before sending the create fop, nfs server tries t resolve the
path by doing a lookup on the entry that is being created. When resolve fails,
the return value and the errno are saved in the local structure (frame->local).
But when create_resume has to be done, it tries to do a auth status check where
the op_ret and op_errno value saved in the local are changed.

This is the macro where the op_ret and op_errno of resolve operation are
changed.

#define nfs3_check_fh_auth_status(cst, nfstat, is_write_op, erlabl)     \
        do {                                                            \
                xlator_t *xlatorp = NULL;                               \
                char buf[256], gfid[256];                               \
                rpc_transport_t *trans = NULL;                          \
                cst->resolve_ret = cst->resolve_errno =                 \
                        nfs3_fh_auth_nfsop (cst, is_write_op);          \
                if ((cst)->resolve_ret < 0) {                           \
                        trans = rpcsvc_request_transport (cst->req);    \
                        xlatorp = nfs3_fh_to_xlator (cst->nfs3state,    \
                                                     &cst->resolvefh);  \
                        gf_uuid_unparse (cst->resolvefh.gfid, gfid);       \
                        sprintf (buf, "(%s) %s : %s",                   \
                                 trans->peerinfo.identifier,            \
                        xlatorp ? xlatorp->name : "ERR", gfid);         \
                        gf_log (GF_NFS3, GF_LOG_ERROR, "Unable to resolve FH"\
                                ": %s", buf);                           \
                        nfstat = nfs3_errno_to_nfsstat3 (-cst->resolve_errno);\
                        goto erlabl;                                    \
                }                                                       \
        } while (0)                                                     \

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