Hi Cai,

Thanks for the patch. As I said in my previous email,  I thought the 
problem might be related to tlibio.[ch] files.
About the usage of _UCLIBC_  define, it has to be used "only if" you 
build LTP for uclibc (to disable unsupported code for uclibc -AIO-). so 
that ok for me to add it under ifdef. UCLINUX.

Now, for me your patch is ok.

Regards
FR



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


------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to