xfs
[Top] [All Lists]

[xfstests PATCH 3/4] locktest: consolidate do_lock and do_unlock, and ad

To: xfs@xxxxxxxxxxx
Subject: [xfstests PATCH 3/4] locktest: consolidate do_lock and do_unlock, and add ability to F_GETLK
From: Jeff Layton <jlayton@xxxxxxxxxxxxxxx>
Date: Mon, 12 May 2014 11:06:32 -0400
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1399907193-23857-1-git-send-email-jlayton@xxxxxxxxxxxxxxx>
References: <1399907193-23857-1-git-send-email-jlayton@xxxxxxxxxxxxxxx>
Eliminate do_unlock as it's just cut-and-paste of do_lock (down to the
bad stderr fprintf). Fix the debug messages to print the cmd and type,
and add the ability to do a WRTEST and RDTEST.

Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxxxxxxx>
---
 src/locktest.c | 61 ++++++++++++++++++++++------------------------------------
 1 file changed, 23 insertions(+), 38 deletions(-)

diff --git a/src/locktest.c b/src/locktest.c
index 0a674a7ff5c2..c9cd04ca4a59 100644
--- a/src/locktest.c
+++ b/src/locktest.c
@@ -110,6 +110,8 @@ static int  D_flag = 0;
 #define                UNLOCK  2
 #define                F_CLOSE 3
 #define                F_OPEN  4
+#define                WRTEST  5
+#define                RDTEST  6
 
 #define                PASS    1
 #define                FAIL    0
@@ -629,14 +631,14 @@ int do_open(int flag)
     return PASS;
 }
 
-int do_lock(int type, int start, int length)
+static int do_lock(int cmd, int type, int start, int length)
 {
     int ret;
     int filedes = f_fd;
     struct flock fl;
 
     if(debug > 1) {
-       fprintf(stderr, "do_lock: start=%d, length=%d\n", start, length);
+       fprintf(stderr, "do_lock: cmd=%d type=%d start=%d, length=%d\n", cmd, 
type, start, length);
     }
 
     if (f_fd < 0)
@@ -650,7 +652,7 @@ int do_lock(int type, int start, int length)
 
     errno = 0;
 
-    ret = fcntl(filedes, F_SETLK, &fl);
+    ret = fcntl(filedes, cmd, &fl);
     saved_errno = errno;           
 
     if(debug > 1 && ret)
@@ -659,35 +661,6 @@ int do_lock(int type, int start, int length)
     return(ret==0?PASS:FAIL);
 }
 
-int do_unlock(int start, int length)
-{
-    int ret;
-    int filedes = f_fd;
-    struct flock fl;
-
-    if(debug > 1) {
-       fprintf(stderr, "do_unlock: start=%d, length=%d\n", start, length);
-    }
-
-    if (f_fd < 0)
-       return f_fd;
-    
-    fl.l_start = start;
-    fl.l_len = length;
-    fl.l_whence = SEEK_SET;
-    fl.l_pid = getpid();
-    fl.l_type = F_UNLCK;
-
-    errno = 0;
-
-    ret = fcntl(filedes, F_SETLK, &fl);
-    saved_errno = errno;           
-    if(debug > 1 && ret)
-       fprintf(stderr, "do_lock: ret = %d, errno = %d (%s)\n", ret, errno, 
strerror(errno));
-
-    return(ret==0?PASS:FAIL);
-}
-
 int do_close(void)
 {      
     if(debug > 1) {
@@ -1016,13 +989,13 @@ main(int argc, char *argv[])
                if(tests[index][TEST_NUM] != 0) {
                    switch(tests[index][COMMAND]) {
                        case WRLOCK:
-                           result = do_lock(F_WRLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                           result = do_lock(F_SETLK, F_WRLCK, 
tests[index][OFFSET], tests[index][LENGTH]);
                            break;
                        case RDLOCK:
-                           result = do_lock(F_RDLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                           result = do_lock(F_SETLK, F_RDLCK, 
tests[index][OFFSET], tests[index][LENGTH]);
                            break;
                        case UNLOCK:
-                           result = do_unlock(tests[index][OFFSET], 
tests[index][LENGTH]);
+                           result = do_lock(F_SETLK, F_UNLCK, 
tests[index][OFFSET], tests[index][LENGTH]);
                            break;
                        case F_CLOSE:
                            result = do_close();
@@ -1030,6 +1003,12 @@ main(int argc, char *argv[])
                        case F_OPEN:
                            result = do_open(tests[index][FLAGS]);
                            break;
+                       case WRTEST:
+                           result = do_lock(F_GETLK, F_WRLCK, 
tests[index][OFFSET], tests[index][LENGTH]);
+                           break;
+                       case RDTEST:
+                           result = do_lock(F_GETLK, F_RDLCK, 
tests[index][OFFSET], tests[index][LENGTH]);
+                           break;
                    }
                    if( result != tests[index][RESULT]) {
                        fail_flag++;
@@ -1126,13 +1105,13 @@ main(int argc, char *argv[])
            ctl.length = tests[index][LENGTH];
            switch(tests[index][COMMAND]) {
                case WRLOCK:
-                   result = do_lock(F_WRLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                   result = do_lock(F_SETLK, F_WRLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
                    break;
                case RDLOCK:
-                   result = do_lock(F_RDLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                   result = do_lock(F_SETLK, F_RDLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
                    break;
                case UNLOCK:
-                   result = do_unlock(tests[index][OFFSET], 
tests[index][LENGTH]);
+                   result = do_lock(F_SETLK, F_UNLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
                    break;
                case F_CLOSE:
                    result = do_close();
@@ -1140,6 +1119,12 @@ main(int argc, char *argv[])
                case F_OPEN:
                    result = do_open(tests[index][FLAGS]);
                    break;
+               case WRTEST:
+                   result = do_lock(F_GETLK, F_WRLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                   break;
+               case RDTEST:
+                   result = do_lock(F_GETLK, F_RDLCK, tests[index][OFFSET], 
tests[index][LENGTH]);
+                   break;
            }
            if( result != tests[index][RESULT] ) {
                if(debug)
-- 
1.9.0

<Prev in Thread] Current Thread [Next in Thread>