[dvblast-devel] error: couldn't read from DVR device (Value too large for defined data type)

Georgi Chorbadzhiyski gf at unixsol.org
Thu Jul 4 10:13:50 CEST 2013


Around 07/04/2013 10:58 AM, Honza Petrouš scribbled:
> But I don't see any other reason for such errno.
> I understand that it is not easy to track on production system,
> but I still think it must be some bottleneck in consumer
> processing.
> 
> BTW, one hint - can you check for values in p_iov->iov_len?
> Google found some issues when iov_len was > MAX_INT32
> on filesystems not supporting LARGE_FILES (64bit operations).

Looks like iov_len is set to 188 /line 241/. For me the strangest thing
is that it happens on only one transponder /the machine tunes to 14/ and
it started happening a week ago, no problems with others at all.

    228 /*****************************************************************************
    229  * DVRRead
    230  *****************************************************************************/
    231 static block_t *DVRRead( void )
    232 {
    233     int i, i_len;
    234     block_t *p_ts = p_freelist, **pp_current = &p_ts;
    235     struct iovec p_iov[MAX_READ_ONCE];
    236
    237     for ( i = 0; i < MAX_READ_ONCE; i++ )
    238     {
    239         if ( (*pp_current) == NULL ) *pp_current = block_New();
    240         p_iov[i].iov_base = (*pp_current)->p_ts;
    241         p_iov[i].iov_len = TS_SIZE;
    242         pp_current = &(*pp_current)->p_next;
    243     }
    244
    245     if ( (i_len = readv(i_dvr, p_iov, MAX_READ_ONCE)) < 0 )
    246     {
    247         msg_Err( NULL, "couldn't read from DVR device (%s)",
    248                  strerror(errno) );
    249         i_len = 0;
    250     }
    251     i_len /= TS_SIZE;
    252
    253     pp_current = &p_ts;
    254     while ( i_len && *pp_current )
    255     {
    256         pp_current = &(*pp_current)->p_next;
    257         i_len--;
    258     }
    259
    260     p_freelist = *pp_current;
    261     *pp_current = NULL;
    262
    263     return p_ts;
    264 }


-- 
Georgi Chorbadzhiyski
http://georgi.unixsol.org/
http://github.com/gfto/


More information about the dvblast-devel mailing list