On 07/01/2010 10:36 PM, Subrata Modak wrote:
> Probably, you would need to fix these:
>
> patching file testcases/kernel/syscalls/open/open10.c
> Hunk #1 FAILED at 282.
> Hunk #2 FAILED at 311.
> Hunk #3 FAILED at 359.
> Hunk #4 FAILED at 389.
> Hunk #5 FAILED at 440.
> 5 out of 5 hunks FAILED -- saving rejects to file
> testcases/kernel/syscalls/open/open10.c.rej
> patching file testcases/kernel/syscalls/splice/splice02.c
> patch: **** malformed patch at line 229: Passed");
>
>    
Dear Subrata,

I downloaded the latest ltp from 
http://ltp.git.sourceforge.net/git/gitweb.cgi?p=ltp/ltp-dev.git;a=tree
I used the "snapshot" to download the tgz and patched as following.

The patch seems to apply correctly.

[dars...@darsshah-tp ltp-dev]$ patch -p1 < 
../../ltp-full-20091231/patches/close-open-fds.diff
patching file testcases/kernel/syscalls/open/open10.c
patching file testcases/kernel/syscalls/splice/splice02.c
patching file testcases/kernel/io/direct_io/diotest2.c
patching file testcases/kernel/io/direct_io/diotest3.c
patching file testcases/kernel/io/direct_io/diotest5.c
patching file testcases/kernel/io/direct_io/diotest6.c
patching file testcases/kernel/mem/mmapstress/mmapstress02.c
patching file testcases/kernel/mem/mmapstress/mmapstress01.c
patching file testcases/kernel/mem/mmapstress/mmapstress05.c
patching file testcases/kernel/mem/mmapstress/mmapstress10.c
patching file testcases/kernel/syscalls/ppoll/ppoll01.c
patching file testcases/kernel/syscalls/utimes/utimes01.c
[dars...@darsshah-tp ltp-dev]$

If there is any other location from where I should take the ltp, please 
let me know.

Thank you.

> Regards--
> Subrata
> (Refer to git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev)
>
> On Thu, 2010-07-01 at 17:35 +0530, Darshak Shah wrote:
>    
>> Hi,
>>
>> While executing the ltp on an nfs root mounted system, I faced a problem
>> with some of the ltp test cases. These tests either did not close their
>> file descriptors or did no unmap the mmaped files. This results in a
>> failures while trying to clean up the temporary directory of the testcase.
>>
>> Here are the failures I see.
>>
>> [dars...@darsshah-tp mcp61_ppcnf-197001010022]$ grep TWARN
>> mcp61_ppcnf-197001010022.out |grep rmdir
>> open10      0  TWARN  :  rmdir(open10.testdir.A.19588) failed:
>> errno=???(39): Directory not empty
>> open10      0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/ope6m8CUb) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/ope6m8CUb/open10.testdir.B.19588/.nfs000000000011ef45000004b0)
>> failed; errno=16: Device or resource busy
>> ppoll01     0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/ppo1xLQtp) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/ppo1xLQtp/.nfs000000000011ef4a000004b7)
>> failed; errno=16: Device or resource busy
>> splice02    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/splESzJrq) failed:
>> remove(/tmp/ltp-yYmhzAq5ao/splESzJrq) failed; errno=39: Directory not empty
>> utimes01    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/utia5lQ1w) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/utia5lQ1w/.nfs0000000000122f28000004ca)
>> failed; errno=16: Device or resource busy
>> diotest02    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/dioaaIAuQ) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/dioaaIAuQ/.nfs000000000011ef57000004d3)
>> failed; errno=16: Device or resource busy
>> diotest03    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/dioqfwc9n) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/dioqfwc9n/.nfs000000000011ef58000004d4)
>> failed; errno=16: Device or resource busy
>> diotest05    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/dioYf4Dai) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/dioYf4Dai/.nfs000000000011ef59000004d5)
>> failed; errno=16: Device or resource busy
>> diotest06    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/dioBzOOyB) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/dioBzOOyB/.nfs000000000011ef5a000004d8)
>> failed; errno=16: Device or resource busy
>> mmapstress01    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/mmaR0zAez) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/mmaR0zAez/.nfs000000000011ef6e000004f9)
>> failed; errno=16: Device or resource busy
>> mmapstress02    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/mmad84xcc) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/mmad84xcc/.nfs000000000011ef6f000004fa)
>> failed; errno=16: Device or resource busy
>> mmapstress05    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/mmaOrvt5a) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/mmaOrvt5a/.nfs000000000011ef70000004fc)
>> failed; errno=16: Device or resource busy
>> mmapstress10    0  TWARN  :  tst_rmdir():
>> rmobj(/tmp/ltp-yYmhzAq5ao/mmaBRE9gi) failed:
>> unlink(/tmp/ltp-yYmhzAq5ao/mmaBRE9gi/.nfs000000000011ef71000004fe)
>> failed; errno=16: Device or resource busy
>> [dars...@darsshah-tp mcp61_ppcnf-197001010022]$
>>
>> I have fixed all of the above tests with the following patch.
>>
>> Signed-off-by: Darshak P Shah<[email protected]>
>>
>>
>> Index: ltp-full-20091231/testcases/kernel/syscalls/open/open10.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/syscalls/open/open10.c
>> +++ ltp-full-20091231/testcases/kernel/syscalls/open/open10.c
>> @@ -282,6 +282,7 @@ int main(int ac, char *av[])
>>                tst_resm(TFAIL|TERRNO, "open(%s) failed", nosetgid_A);
>>                local_flag = FAILED;
>>            }
>> +        close(ret);
>>
>>            if ((ret = stat(nosetgid_A,&buf))<  0) {
>>                tst_resm(TFAIL|TERRNO, "stat(%s) failed", nosetgid_A);
>> @@ -310,6 +311,7 @@ int main(int ac, char *av[])
>>                tst_resm(TFAIL|TERRNO, "open(%s) failed", setgid_A);
>>                local_flag = FAILED;
>>            }
>> +        close(ret);
>>
>>            if ((ret = stat(setgid_A,&buf))<  0) {
>>                tst_resm(TFAIL|TERRNO, "stat(%s) failed", setgid_A);
>> @@ -357,6 +359,7 @@ int main(int ac, char *av[])
>>                tst_resm(TFAIL|TERRNO, "open(%s) failed", nosetgid_B);
>>                local_flag = FAILED;
>>            }
>> +        close(ret);
>>
>>            if ((ret = stat(nosetgid_B,&buf))<  0) {
>>                tst_resm(TFAIL|TERRNO, "stat(%s) failed", nosetgid_B);
>> @@ -386,6 +389,7 @@ int main(int ac, char *av[])
>>                tst_resm(TFAIL|TERRNO, "open(%s) failed", setgid_B);
>>                local_flag = FAILED;
>>            }
>> +        close(ret);
>>
>>            if ((ret = stat(setgid_B,&buf))<  0) {
>>                tst_resm(TFAIL|TERRNO, "stat(%s) failed", setgid_B);
>> @@ -436,6 +440,7 @@ int main(int ac, char *av[])
>>                tst_resm(TFAIL|TERRNO, "open(%s) failed", root_setgid_B);
>>                local_flag = FAILED;
>>            }
>> +        close(ret);
>>
>>            if ((ret = stat(root_setgid_B,&buf))<  0) {
>>                tst_resm(TFAIL|TERRNO, "stat(%s) failed", root_setgid_B);
>> Index: ltp-full-20091231/testcases/kernel/syscalls/splice/splice02.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/syscalls/splice/splice02.c
>> +++ ltp-full-20091231/testcases/kernel/syscalls/splice/splice02.c
>> @@ -148,6 +148,7 @@ int main(int ac, char **av) {
>>            } else
>>                if (TEST_RETURN == 0){
>>                                tst_resm(TPASS, "splice() system call
>> Passed");
>> +        close(fd);
>>                cleanup();
>>                tst_exit();
>>            }
>> Index: ltp-full-20091231/testcases/kernel/io/direct_io/diotest2.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/io/direct_io/diotest2.c
>> +++ ltp-full-20091231/testcases/kernel/io/direct_io/diotest2.c
>> @@ -275,6 +275,7 @@ static void setup(void)
>>        if ((fd1 = open(filename, O_DIRECT, 0600))<  0) {
>>            tst_brkm(TCONF, cleanup, "O_DIRECT is not supported by this
>> filesystem. %s", strerror(errno));
>>        }
>> +    close(fd1);
>>
>>    }
>>
>> Index: ltp-full-20091231/testcases/kernel/io/direct_io/diotest3.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/io/direct_io/diotest3.c
>> +++ ltp-full-20091231/testcases/kernel/io/direct_io/diotest3.c
>> @@ -363,6 +363,7 @@ static void setup(void)
>>        if ((fd1 = open(filename, O_DIRECT, 0600))<  0) {
>>            tst_brkm(TCONF, cleanup, "O_DIRECT is not supported by this
>> filesystem. %s", strerror(errno));
>>        }
>> +    close(fd1);
>>    }
>>
>>    static void cleanup(void)
>> Index: ltp-full-20091231/testcases/kernel/io/direct_io/diotest5.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/io/direct_io/diotest5.c
>> +++ ltp-full-20091231/testcases/kernel/io/direct_io/diotest5.c
>> @@ -309,6 +309,7 @@ static void setup(void)
>>        if ((fd1 = open(filename, O_DIRECT, 0600))<  0) {
>>            tst_brkm(TCONF, cleanup, "O_DIRECT is not supported by this
>> filesystem. %s", strerror(errno));
>>        }
>> +    close(fd1);
>>    }
>>
>>    static void cleanup(void)
>> Index: ltp-full-20091231/testcases/kernel/io/direct_io/diotest6.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/io/direct_io/diotest6.c
>> +++ ltp-full-20091231/testcases/kernel/io/direct_io/diotest6.c
>> @@ -387,6 +387,7 @@ static void setup(void)
>>        if ((fd1 = open(filename, O_DIRECT, 0600))<  0) {
>>            tst_brkm(TCONF, cleanup, "O_DIRECT is not supported by this
>> filesystem. %s", strerror(errno));
>>        }
>> +    close(fd1);
>>    }
>>
>>    static void cleanup(void)
>> Index: ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress02.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/mem/mmapstress/mmapstress02.c
>> +++ ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress02.c
>> @@ -165,6 +165,10 @@ main(int argc, char *argv[]) {
>>            CLEANERROR("close failed");
>>            anyfail();
>>        }
>> +    if (munmap(mmapaddr, pagesize) == -1) {
>> +        CLEANERROR("munmap failed");
>> +        anyfail();
>> +    }
>>        if (unlink(tmpname) == -1) {
>>            ERROR("unlink failed");
>>            anyfail();
>> Index: ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress01.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/mem/mmapstress/mmapstress01.c
>> +++ ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress01.c
>> @@ -590,7 +590,11 @@ child_mapper(char *file, unsigned procno
>>                anyfail();
>>            }
>>        }
>> -
>> +    if (munmap(maddr, mapsize) == -1) {
>> +        perror("munmap failed");
>> +        local_flag = FAILED;
>> +        anyfail();
>> +    }
>>        exit(0);
>>    }
>>
>> @@ -694,6 +698,7 @@ fileokay(char *file, uchar_t *expbuf)
>>                }
>>            }
>>        }
>> +    close(fd);
>>
>>        return 1;
>>    }
>> Index: ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress05.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/mem/mmapstress/mmapstress05.c
>> +++ ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress05.c
>> @@ -61,6 +61,15 @@ void ok_exit();
>>    #define ERROR(M)    (void)fprintf(stderr, "%s:  errno = %d; " M "\n", \
>>                    progname, errno);
>>    #define CLEAN    (void)close(fd); \
>> +        if (munmap(mmapaddr+pagesize, pagesize) == -1) { \
>> +            ERROR("munmap failed"); \
>> +        } \
>> +        if (munmap(mmapaddr, pagesize) == -1) { \
>> +            ERROR("munmap failed"); \
>> +        } \
>> +        if (munmap(mmapaddr+2*pagesize, pagesize) == -1) { \
>> +            ERROR("munmap failed"); \
>> +        } \
>>            if (unlink(tmpname)) { \
>>                ERROR("couldn't clean up temp file"); \
>>            }
>> Index: ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress10.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/mem/mmapstress/mmapstress10.c
>> +++ ltp-full-20091231/testcases/kernel/mem/mmapstress/mmapstress10.c
>> @@ -154,6 +154,15 @@ unsigned do_offset = 0;
>>    unsigned pattern = 0;
>>    char filename[64];
>>
>> +void clean_mapper(int sig);
>> +void clean_writer(int sig);
>> +
>> +int fd_mapper = 0;
>> +caddr_t maddr_mapper;
>> +size_t mapsize_mapper;
>> +
>> +int fd_writer = 0;
>> +
>>    int
>>    main(int argc, char *argv[])
>>    {
>> @@ -484,8 +493,8 @@ main(int argc, char *argv[])
>>
>>    cleanup:
>>        for (i = 0; i<  nprocs; i++)
>> -        (void)kill(pidarray[i], SIGKILL);
>> -    (void)kill(wr_pid, SIGKILL);
>> +        (void)kill(pidarray[i], SIGUSR1);
>> +    (void)kill(wr_pid, SIGUSR1);
>>
>>        while (wait(&wait_stat) != -1 || errno != ECHILD)
>>            continue;
>> @@ -531,9 +540,7 @@ child_mapper(char *file, unsigned procno
>>        off_t offset;
>>    #endif /* LARGE_FILE */
>>        size_t validsize;
>> -    size_t mapsize;
>> -    caddr_t maddr, paddr;
>> -    int fd;
>> +    caddr_t paddr;
>>        int pagesize = sysconf(_SC_PAGE_SIZE);
>>        unsigned randpage;
>>        unsigned int seed;
>> @@ -542,25 +549,38 @@ child_mapper(char *file, unsigned procno
>>        unsigned mappages;
>>        unsigned mapflags;
>>        unsigned i;
>> +    struct sigaction sa_mapper;
>>
>>        mapflags = MAP_SHARED;
>>
>>        seed = initrand();        /* initialize random seed */
>>
>> +    sa_mapper.sa_handler = clean_mapper;
>> +    sa_mapper.sa_flags = 0;
>> +    if (sigemptyset(&sa_mapper.sa_mask)) {
>> +        perror("sigempty error");
>> +                anyfail();
>> +    }
>> +
>> +    if (sigaction(SIGUSR1,&sa_mapper, 0) == -1) {
>> +        perror("sigaction error SIGUSR1");
>> +                anyfail();
>> +    }
>> +
>>
>>    #ifdef LARGE_FILE
>> -    if ((fd = open64(file, O_RDWR)) == -1) {
>> +    if ((fd_mapper = open64(file, O_RDWR)) == -1) {
>>    #else /* LARGE_FILE */
>> -    if ((fd = open(file, O_RDWR)) == -1) {
>> +    if ((fd_mapper = open(file, O_RDWR)) == -1) {
>>    #endif /* LARGE_FILE */
>>            perror("open error");
>>                    anyfail();
>>        }
>>
>>    #ifdef LARGE_FILE
>> -    if (fstat64(fd,&statbuf) == -1) {
>> +    if (fstat64(fd_mapper,&statbuf) == -1) {
>>    #else /* LARGE_FILE */
>> -    if (fstat(fd,&statbuf) == -1) {
>> +    if (fstat(fd_mapper,&statbuf) == -1) {
>>    #endif /* LARGE_FILE */
>>            perror("stat error");
>>                    anyfail();
>> @@ -571,29 +591,29 @@ child_mapper(char *file, unsigned procno
>>            fprintf(stderr, "size_t overflow when setting up map\n");
>>                    anyfail();
>>        }
>> -    mapsize = (size_t)(statbuf.st_size - sparseoffset);
>> -    mappages = roundup(mapsize, pagesize) / pagesize;
>> +    mapsize_mapper = (size_t)(statbuf.st_size - sparseoffset);
>> +    mappages = roundup(mapsize_mapper, pagesize) / pagesize;
>>        offset = sparseoffset;
>>        if (do_offset) {
>>            int pageoffset = lrand48() % mappages;
>>            int byteoffset = pageoffset * pagesize;
>>            offset += byteoffset;
>> -        mapsize -= byteoffset;
>> +        mapsize_mapper -= byteoffset;
>>            mappages -= pageoffset;
>>        }
>>
>>    #ifdef LARGE_FILE
>> -    if ((maddr = mmap64(0, mapsize, PROT_READ|PROT_WRITE,
>> -            mapflags, fd, offset)) == (caddr_t)-1) {
>> +    if ((maddr_mapper = mmap64(0, mapsize_mapper, PROT_READ|PROT_WRITE,
>> +            mapflags, fd_mapper, offset)) == (caddr_t)-1) {
>>    #else /* LARGE_FILE */
>> -    if ((maddr = mmap(0, mapsize, PROT_READ|PROT_WRITE,
>> -            mapflags, fd, offset)) == (caddr_t)-1) {
>> +    if ((maddr_mapper = mmap(0, mapsize_mapper, PROT_READ|PROT_WRITE,
>> +            mapflags, fd_mapper, offset)) == (caddr_t)-1) {
>>    #endif /* LARGE_FILE */
>>            perror("mmap error");
>>                    anyfail();
>>        }
>>
>> -    (void)close(fd);
>> +    (void)close(fd_mapper);
>>
>>        nloops = (randloops) ? (lrand48() % MAXLOOPS) : MAXLOOPS;
>>
>> @@ -601,12 +621,12 @@ child_mapper(char *file, unsigned procno
>>    #ifdef LARGE_FILE
>>            (void)printf("child %d (pid %ld): seed %d, fsize %Ld, "
>>                "mapsize %d, off %Ld, loop %d\n",
>> -            procno, getpid(), seed, filesize, mapsize,
>> +            procno, getpid(), seed, filesize, mapsize_mapper,
>>                offset/pagesize, nloops);
>>    #else /* LARGE_FILE */
>>            (void)printf("child %d (pid %d): seed %d, fsize %ld, "
>>                "mapsize %ld, off %ld, loop %d\n",
>> -            procno, getpid(), seed, filesize, (long)mapsize,
>> +            procno, getpid(), seed, filesize, (long)mapsize_mapper,
>>                offset/pagesize, nloops);
>>    #endif /* LARGE_FILE */
>>        }
>> @@ -616,13 +636,13 @@ child_mapper(char *file, unsigned procno
>>         */
>>        for (loopcnt = 0; loopcnt<  nloops; loopcnt++) {
>>            randpage = lrand48() % mappages;
>> -        paddr = maddr + (randpage * pagesize);     /* page address */
>> +        paddr = maddr_mapper + (randpage * pagesize);     /* page
>> address */
>>
>>            if (randpage<  mappages - 1
>> -            || !(mapsize % pagesize))
>> +            || !(mapsize_mapper % pagesize))
>>                validsize = pagesize;
>>            else
>> -            validsize = mapsize % pagesize;
>> +            validsize = mapsize_mapper % pagesize;
>>
>>            /*
>>             * Because one child is mapping file in extend mode,
>> @@ -652,14 +672,17 @@ child_mapper(char *file, unsigned procno
>>             * Exercise msync() as well!
>>             */
>>            randpage = lrand48() % mappages;
>> -        paddr = maddr + (randpage * pagesize);     /* page address */
>> +        paddr = maddr_mapper + (randpage * pagesize);     /* page
>> address */
>>            if (msync(paddr, (mappages - randpage)*pagesize,
>>                MS_SYNC) == -1) {
>>                perror("msync error");
>>                            anyfail();
>>            }
>>        }
>> -
>> +    if ( munmap(maddr_mapper,mapsize_mapper) == -1 ) {
>> +        perror("munmap failed");
>> +        anyfail();
>> +    }
>>        exit(0);
>>    }
>>
>> @@ -675,7 +698,20 @@ child_mapper(char *file, unsigned procno
>>    void
>>    child_writer(char *file, uchar_t *buf)    /* buf already set up in main */
>>    {
>> -    int fd;
>> +    struct sigaction sa_writer;
>> +
>> +    sa_writer.sa_handler = clean_writer;
>> +    sa_writer.sa_flags = 0;
>> +    if (sigemptyset(&sa_writer.sa_mask)) {
>> +        perror("sigempty error");
>> +                anyfail();
>> +    }
>> +
>> +    if (sigaction(SIGUSR1,&sa_writer, 0) == -1) {
>> +        perror("sigaction error SIGUSR1");
>> +                anyfail();
>> +    }
>> +
>>    #ifdef LARGE_FILE
>>        struct stat64 statbuf;
>>        off64_t off;
>> @@ -688,18 +724,18 @@ child_writer(char *file, uchar_t *buf)    /
>>        int cnt;
>>
>>    #ifdef LARGE_FILE
>> -    if ((fd = open64(file, O_RDWR)) == -1) {
>> +    if ((fd_writer = open64(file, O_RDWR)) == -1) {
>>    #else /* LARGE_FILE */
>> -    if ((fd = open(file, O_RDWR)) == -1) {
>> +    if ((fd_writer = open(file, O_RDWR)) == -1) {
>>    #endif /* LARGE_FILE */
>>            perror("open error");
>>                    anyfail();
>>        }
>>
>>    #ifdef LARGE_FILE
>> -    if ((off = lseek64(fd, 0, SEEK_END)) == -1) {
>> +    if ((off = lseek64(fd_writer, 0, SEEK_END)) == -1) {
>>    #else /* LARGE_FILE */
>> -    if ((off = lseek(fd, 0, SEEK_END)) == -1) {
>> +    if ((off = lseek(fd_writer, 0, SEEK_END)) == -1) {
>>    #endif /* LARGE_FILE */
>>            perror("lseek error");
>>                    anyfail();
>> @@ -708,9 +744,9 @@ child_writer(char *file, uchar_t *buf)    /
>>
>>        for (;;) {
>>    #ifdef LARGE_FILE
>> -        if (fstat64(fd,&statbuf) == -1) {
>> +        if (fstat64(fd_writer,&statbuf) == -1) {
>>    #else /* LARGE_FILE */
>> -        if (fstat(fd,&statbuf) == -1) {
>> +        if (fstat(fd_writer,&statbuf) == -1) {
>>    #endif /* LARGE_FILE */
>>                perror("fstat error");
>>                            anyfail();
>> @@ -734,7 +770,7 @@ child_writer(char *file, uchar_t *buf)    /
>>
>>            p = buf + (off % pagesize);
>>
>> -        if ((cnt = write(fd, p, growsize)) != growsize) {
>> +        if ((cnt = write(fd_writer, p, growsize)) != growsize) {
>>                if (cnt == -1)
>>                    perror("write error");
>>                else
>> @@ -747,12 +783,13 @@ child_writer(char *file, uchar_t *buf)    /
>>
>>            (void)sleep(sleeptime);
>>            if (dosync) {
>> -            if (fsync(fd) == -1) {
>> +            if (fsync(fd_writer) == -1) {
>>                    perror("fsync error");
>>                                    anyfail();
>>                }
>>            }
>>        }
>> +    close(fd_writer);
>>    }
>>
>>
>> @@ -814,6 +851,7 @@ fileokay(char *file, uchar_t *expbuf)
>>            cnt = read(fd, (char *)readbuf, pagesize);
>>            if (cnt == -1) {
>>                perror("read error");
>> +            close(fd);
>>                return 0;
>>            } else if (cnt != pagesize) {
>>                /*
>> @@ -822,6 +860,7 @@ fileokay(char *file, uchar_t *expbuf)
>>                if ((i * pagesize) + cnt != mapsize) {
>>                    (void)fprintf(stderr, "read %d of %ld bytes\n",
>>                        (i*pagesize)+cnt, (long)mapsize);
>> +                close(fd);
>>                    return 0;
>>                }
>>            }
>> @@ -841,6 +880,7 @@ fileokay(char *file, uchar_t *expbuf)
>>                    (void)fprintf(stderr, ", pg %d off %d, "
>>                        "(fsize %ld)\n", i, j, statbuf.st_size);
>>    #endif /* LARGE_FILE */
>> +                close(fd);
>>                    return 0;
>>                }
>>            }
>> @@ -866,6 +906,21 @@ clean_up_file(int sig)
>>        exit(1);
>>    }
>>
>> +void clean_mapper(int sig)
>> +{
>> +    if (fd_mapper)
>> +        close(fd_mapper);
>> +    munmap(maddr_mapper,mapsize_mapper);
>> +    exit (0);
>> +}
>> +
>> +void clean_writer(int sig)
>> +{
>> +    if (fd_writer)
>> +        close(fd_writer);
>> +    exit(0);
>> +}
>> +
>>    unsigned int
>>    initrand(void)
>>    {
>> @@ -887,7 +942,6 @@ initrand(void)
>>        return (seed);
>>    }
>>
>> -
>>    /*****  LTP Port        *****/
>>    void ok_exit()
>>    {
>> Index: ltp-full-20091231/testcases/kernel/syscalls/ppoll/ppoll01.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/syscalls/ppoll/ppoll01.c
>> +++ ltp-full-20091231/testcases/kernel/syscalls/ppoll/ppoll01.c
>> @@ -378,8 +378,10 @@ static int do_test(struct test_case *tc)
>>        }
>>        result |= (sys_errno != tc->err) || !cmp_ok;
>>        PRINT_RESULT_CMP(sys_ret>= 0, tc->ret, tc->err, sys_ret,
>> sys_errno, cmp_ok);
>> -    cleanup: if (fd>= 0)
>> +    cleanup: if (fd>= 0) {
>> +        close(fd);
>>            cleanup_file(fpath);
>> +    }
>>
>>        sigemptyset(&sigmask);
>>        sigprocmask(SIG_SETMASK,&sigmask, NULL);
>> Index: ltp-full-20091231/testcases/kernel/syscalls/utimes/utimes01.c
>> ===================================================================
>> --- ltp-full-20091231.orig/testcases/kernel/syscalls/utimes/utimes01.c
>> +++ ltp-full-20091231/testcases/kernel/syscalls/utimes/utimes01.c
>> @@ -234,6 +234,8 @@ static int do_test(struct test_case *tc)
>>            TEST(rc = setup_file(TESTDIR, "test.file", fpath));
>>            if (rc<  0)
>>                    return 1;
>> +    /* The test just needs the file, so no need to keep it open. */
>> +    close(rc);
>>
>>        /*
>>             * Change effective user id
>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Sprint
>> What will you do first with EVO, the first 4G phone?
>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>> _______________________________________________
>> Ltp-list mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>>      
>    


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to