[Gluster-devel] glusterfs-3.3.2 client3_1_setattr_cbk EOVERFLOW

Vijay Bellur vbellur at redhat.com
Wed Jul 17 19:30:49 UTC 2013


On 07/17/2013 01:33 AM, Heiko L. wrote:
>
> Hallo
>
> I have a problem to understand following error:
>
> [2013-07-16 15:36:05.056955] D [afr-lk-common.c:403:transaction_lk_op] 0-gv0-replicate-0: lk op is for a transaction
> [2013-07-16 15:36:05.057367] D [afr-transaction.c:1027:afr_post_nonblocking_inodelk_cbk] 0-gv0-replicate-0: Non blocking
> inodelks done. Proceeding to FOP
> [2013-07-16 15:36:05.057640] D [client3_1-fops.c:2810:client_fdctx_destroy] 0-gv0-client-0: sending release on fd
> [2013-07-16 15:36:05.057687] D [client3_1-fops.c:2810:client_fdctx_destroy] 0-gv0-client-1: sending release on fd
> [2013-07-16 15:36:05.058460] W [client3_1-fops.c:2009:client3_1_setattr_cbk] 0-gv0-client-0: remote operation failed: Value too
> large for defined data type
> [2013-07-16 15:36:05.058515] W [client3_1-fops.c:2009:client3_1_setattr_cbk] 0-gv0-client-1: remote operation failed: Value too
> large for defined data
>
>
> # grep "EOVERFLOW " ./libglusterfs/src/compat-errno.c
> /*      EOVERFLOW 79    / * value too large to be stored in data type */
>          /*      EOVERFLOW       84              / * Value too large to be stored in data type */
>          /*      EOVERFLOW       84              / * Value too large to be stored in data type */
>
>
> root at osol4:/tmp/glusterfs-3.3.2# vi ./xlators/protocol/client/src/client3_1-fops.c
>
>     1983         if (-1 == req->rpc_status) {
>     1984                 rsp.op_ret   = -1;
>     1985                 rsp.op_errno = ENOTCONN;
>     1986                 goto out;
>     1987         }
>     1988
>     1989         ret = xdr_to_generic (*iov, &rsp, (xdrproc_t)xdr_gfs3_setattr_rsp);
>     1990         if (ret < 0) {
>     1991                 gf_log (this->name, GF_LOG_ERROR, "XDR decoding failed");
>     1992                 rsp.op_ret   = -1;
>     1993                 rsp.op_errno = EINVAL;
>     1994                 goto out;
>     1995         }
>     1996
>     1997         if (-1 != rsp.op_ret) {
>     1998                 gf_stat_to_iatt (&rsp.statpre, &prestat);
>     1999                 gf_stat_to_iatt (&rsp.statpost, &poststat);
>     2000         }
>     2001
>     2002         GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val),
>     2003                                       (rsp.xdata.xdata_len), ret,
>     2004                                       rsp.op_errno, out);
>     2005
>     2006 out:
>     2007         if (rsp.op_ret == -1) {
>     2008                 gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",
>     2009                         strerror (gf_error_to_errno (rsp.op_errno)));
>     2010         }
>
> my suggestion:
> - l2009 gf_log printed: remote operation failed: Value too large for defined data type
> - according to [1]: The symbolic name for this error is EOVERFLOW, errno=79
> - l2006 out: can jumping from 1986,1994 (ENOTCONN,EINVAL)
>    I do not see EOVERFLOW.
>
>
> where EOVERFLOW setting?
>
>

rsp.op_errno would be ENOTCONN or EINVAL if your client received an 
error from the rpc layer or if decoding of the rpc payload failed.
This situation mostly indicates that the brick set rsp.op_errno to 
EOVERFLOW. Have you checked the brick log file to determine if a 
corresponding error log message is present there?

-Vijay





More information about the Gluster-devel mailing list