Send across patches attending Uclinux related issue(s).

Regards--
Subrata

On Fri, 2009-04-10 at 17:52 -0700, Jyothsna.ltp wrote:
> I observed something in tlibio.h.
> 
> LIO_IO_TYPES and LIO_WAIT_TYPES are not defined for uClinux.
> 
> They are defined for other linux varieties like regular linux, cray, hp etc.
> but not uClinux.
> 
> and that is why io_type gets a wrong value in fs/doio/growfile.c(though
> LIO_RANDOM bit inside is correct) 
> which eventually fails at line 996 in tlibio.c(shown below) as no random
> method could be obtained as LIO_IO_TYPES and LIO_WAIT_TYPES are undefined
> for uClinux
> 
> case 'I':
> #if NEWIO
>                       if((io_type=lio_parse_io_arg1(optarg)) == -1 ) {
> 
> 
> else {
>   996         printf("DEBUG %s/%d: No I/O method chosen\n", __FILE__, 
> __LINE__ );
> 
> 
> 
> Cai Qian-6 wrote:
> > 
> > Hi,
> > 
> > This patch fixes gf07 and other gf* test failures reported earlier,
> > 
> > gf01                           FAIL       1
> > gf02                           FAIL       1
> > gf03                           PASS       0
> > gf04                           PASS       0
> > gf05                           FAIL       1
> > gf06                           PASS       0
> > gf07                           FAIL       1
> > gf08                           PASS       0
> > gf09                           FAIL       1
> > gf10                           FAIL       1
> > gf11                           FAIL       1
> > gf12                           PASS       0
> > gf13                           FAIL       1
> > gf14                           PASS       0
> > gf15                           FAIL       1
> > gf16                           PASS       0
> > gf17                           PASS       0
> > gf18                           FAIL       1
> > gf19                           FAIL       1
> > 
> > The first problem is that the lastest patch against lib/Makefile always
> > exported some unnecessary symbols,
> > 
> >   CFLAGS+= -D_USC_LIB_ -D__UCLIBC__
> > 
> > which broke the tlibio.c functionalities. For example,
> > 
> > ...
> >   #if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
> >       else if ( method & LIO_IO_SYNCP ) {
> >       io_type="pread(2)";
> > ...
> > 
> > All of those code above will never get executed for Linux PCs, even if
> > it has nothing to do with UCLIBC. As the results, tests failed due to
> > falling back to no suitable IO methods found,
> > 
> >   else {
> >     printf("DEBUG %s/%d: No I/O method chosen\n", __FILE__, __LINE__ );
> >     return -1;
> > 
> > The second problem is that gf07 test case failed with the following
> > (with debug flags enabled for both tlibio.c and growfiles.c),
> > 
> > # growfiles -W gf07 -b -e 1 -r 1-5000 -R 0--2 -i 0 -L 30 -C 1 -I p
> >   g_rand13 g_rand13.2 -D 9
> > 
> > ...
> > growfiles: 12182 DEBUG3 growfiles.c/2038: lseeked to random offset 2052
> > (fsz:0)
> > growfiles: 12182 DEBUG3 growfiles.c/2080: attempting to write 4250 bytes
> > ...
> > growfiles: 12182 DEBUG5 growfiles.c/2173: about to chop Woffset.
> > tmp=2052, grow_incr=4250, Woffset was 2052
> > growfiles: 12182 DEBUG2 growfiles.c/2197: 1 wrote 4250 bytes(off:0),
> > grew file by 4250 bytes
> > growfiles: 12182 DEBUG3 growfiles.c/2418: about to do write validation,
> > offset = 0, size = 4250
> > growfiles: 12182 DEBUG4 growfiles.c/2428: lseeked to offset:0
> > DEBUG tlibio.c/1337: aio_read(fildes=3, buf, nbytes=4250, signo=10)
> > ...
> > growfiles(gf07): 12182 growfiles.c/2513: 1 CW data mismatch at offset 0,
> > exp:0101, act:0 in file g_rand13
> > ...
> > 
> > This is due to when doing write validation, it started from an incorrect
> > offset -- 0! The file was originally written from a random offset
> > 2052. However, it looks like a known issue for async IO highlighted in
> > growfiles.c, which has already been manually worked around for SGI
> > platform.
> > 
> > #if NEWIO
> > #ifdef sgi
> >  /* If this is POSIX I/O and it is via aio_{read,write}
> >   * or lio_listio then after completion of the I/O the
> >   * value of the file offset for the file is
> >   * unspecified--which means we cannot trust what
> >   * tell() told us.  Fudge it here.
> >   */
> > 
> > So, we probably need to do the same for __linux__.
> > 
> > Signed-off-by: CAI Qian <[email protected]>
> > 
> > --- ltp-full-20090228/lib/Makefile.orig     2009-04-02 15:33:19.000000000
> > +0800
> > +++ ltp-full-20090228/lib/Makefile  2009-04-02 15:39:21.000000000 +0800
> > @@ -2,12 +2,13 @@
> >  PREFIX=/opt/ltp
> >  
> >  CFLAGS+= -Wall
> > -CFLAGS+= -D_USC_LIB_ -D__UCLIBC__
> >  CPPFLAGS+= -I../include 
> >  ifeq ($(shell uname -s),HP-UX)
> >  CFLAGS+=-Ae -D_LARGEFILE64_SOURCE +DA1.1
> >  endif
> > -CFLAGS+=$(if $(UCLINUX),-DUCLINUX)
> > +ifeq ($(UCLINUX),1)
> > +CFLAGS+= -D_USC_LIB_ -D__UCLIBC__ -DUCLINUX
> > +endif
> >  LDFLAGS+=
> >  TARGET=libltp.a
> >  SRCS=$(wildcard *.c)
> > --- ltp-full-20090228/testcases/kernel/fs/doio/growfiles.c.orig     
> > 2009-04-02
> > 15:31:39.000000000 +0800
> > +++ ltp-full-20090228/testcases/kernel/fs/doio/growfiles.c  2009-04-02
> > 15:32:53.000000000 +0800
> > @@ -2115,7 +2115,7 @@
> >                             return -1;
> >                     }
> >  #if NEWIO
> > -#ifdef sgi
> > +#if defined(sgi) || defined(__linux__)
> >                     /* If this is POSIX I/O and it is via aio_{read,write}
> >                      * or lio_listio then after completion of the I/O the
> >                      * value of the file offset for the file is
> > @@ -2131,7 +2131,7 @@
> >                                     tmp = Woffset + grow_incr;
> >                             }
> >                     }
> > -#endif
> > +#endif /* sgi __linux__ */
> >  #endif
> >             }
> >             *curr_size_ptr=tmp;     /* BUG:14136 */
> > 
> > ------------------------------------------------------------------------------
> > _______________________________________________
> > Ltp-list mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/ltp-list
> > 
> > 
> 


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to