Re: [Announce] Linux Test Project

From: Andrea Arcangeli (andrea@suse.de)
Date: Sat Aug 12 2000 - 10:25:58 EST


I've a little fix for the fcntl09 test that was wrongly return a positive.

--- ltp-20000804-alpha/tests/fcntl09.c.~1~ Fri Aug 4 22:48:23 2000
+++ ltp-20000804-alpha/tests/fcntl09.c Sat Aug 12 05:14:25 2000
@@ -155,11 +155,14 @@
      * check looping state if -c option given
      ***************************************************************/
     for (lc=0; TEST_LOOPING(lc); lc++) {
+ int type;
+ for (type = 0; type < 2; type ++) {
 
         /* reset Tst_count in case we are looping. */
         Tst_count=0;
 
- flocks.l_type = F_RDLCK | F_WRLCK;
+ flocks.l_type = type ? F_RDLCK : F_WRLCK;
+
         /*
          * Call fcntl(2) with F_SETLK argument on fname
          */
@@ -169,8 +172,8 @@
         if ( TEST_RETURN == -1 ) {
             TEST_ERROR_LOG(TEST_ERRNO);
             tst_resm(TFAIL,
- "fcntl(%s, F_SETLK, &flocks) flocks.l_type = F_RDLCK | F_WRLCK Failed, errno=%d : %s",
- fname, TEST_ERRNO, strerror(TEST_ERRNO));
+ "fcntl(%s, F_SETLK, &flocks) flocks.l_type = %s Failed, errno=%d : %s",
+ fname, type ? "F_RDLCK" : "F_WRLCK", TEST_ERRNO, strerror(TEST_ERRNO));
         } else {
             
             /***************************************************************
@@ -179,8 +182,8 @@
             if ( STD_FUNCTIONAL_TEST ) {
                 /* No Verification test, yet... */
                 tst_resm(TPASS,
- "fcntl(%s, F_SETLK, &flocks) flocks.l_type = F_RDLCK | F_WRLCK returned %d",
- fname, TEST_RETURN);
+ "fcntl(%s, F_SETLK, &flocks) flocks.l_type = %s returned %d",
+ fname, type ? "F_RDLCK" : "F_WRLCK" ,TEST_RETURN);
             }
         }
 
@@ -208,6 +211,7 @@
                          fname, TEST_RETURN);
             }
         }
+ }
 
     } /* End for TEST_LOOPING */
 
 

You can set the l_type either RDLK or WRLK but not at the same time or
flock_to_posix_lock will rightly fail here (will get the default path).

        switch (l->l_type) {
        case F_RDLCK:
        case F_WRLCK:
        case F_UNLCK:
                fl->fl_type = l->l_type;
                break;
        default:
                return (0);
        }

(the WRITE lock just locks both writes and reads)

I also did an hack to test contention of the lock, but it's not clean
code, if you want it let me know.

Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Aug 15 2000 - 21:00:27 EST