summaryrefslogtreecommitdiffstats
path: root/tests/basic/gfapi/mandatory-lock-optimal.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basic/gfapi/mandatory-lock-optimal.c')
-rw-r--r--tests/basic/gfapi/mandatory-lock-optimal.c765
1 files changed, 397 insertions, 368 deletions
diff --git a/tests/basic/gfapi/mandatory-lock-optimal.c b/tests/basic/gfapi/mandatory-lock-optimal.c
index 4142258c06d..34fef8d0b80 100644
--- a/tests/basic/gfapi/mandatory-lock-optimal.c
+++ b/tests/basic/gfapi/mandatory-lock-optimal.c
@@ -1,11 +1,13 @@
/* Pre-requisites:-
*
- * 1. Make sure that performance translators are switched off while running this test.
+ * 1. Make sure that performance translators are switched off while running this
+ * test.
* 2. Perform the following volume set operation:
* # gluster volume set <VOLNAME> locks.mandatory-locking optimal
* 3. For installation under non-standard paths, export LD_LIBRARY_PATH to
* automatically load exact libgfapi.so and compile this C file as follows:
- * $ gcc mandatory-lock-optimal.c -lgfapi -I <include path for api/glfs.h> -L <include path for libgfapi shared library>
+ * $ gcc mandatory-lock-optimal.c -lgfapi -I <include path for api/glfs.h> -L
+ * <include path for libgfapi shared library>
*/
#include <errno.h>
@@ -70,434 +72,461 @@ off_t offset;
Expected result : First write should fail with EAGAIN.
Second write should pass. */
-#define LOG_ERR(func, err) do { \
- if (!fp) \
- fprintf (stderr, "\n%s : returned error (%s)\n", func, strerror (err)); \
- else \
- fprintf (fp, "\n%s : returned error (%s)\n", func, strerror (err)); \
- cleanup_and_exit (err); \
-} while (0)
-
-void cleanup_and_exit (int exit_status) {
- if (exit_status || test_count != TOTAL_TEST_COUNT) {
- fprintf (fp, "\nAborting due to some test failures.\n");
- exit_status = 1;
- } else
- fprintf (fp, "\nAll tests ran successfully.\n");
- if (fp)
- fclose (fp);
- if (fd)
- glfs_close (fd);
- if (fd1)
- glfs_close (fd1);
- if (fd2)
- glfs_close (fd2);
-
- glfs_unlink (fs1, fname);
-
- if (fs1)
- glfs_fini (fs1);
- if (fs2)
- glfs_fini (fs2);
-
- exit (exit_status);
+#define LOG_ERR(func, err) \
+ do { \
+ if (!fp) \
+ fprintf(stderr, "\n%s : returned error (%s)\n", func, \
+ strerror(err)); \
+ else \
+ fprintf(fp, "\n%s : returned error (%s)\n", func, strerror(err)); \
+ cleanup_and_exit(err); \
+ } while (0)
+
+void
+cleanup_and_exit(int exit_status)
+{
+ if (exit_status || test_count != TOTAL_TEST_COUNT) {
+ fprintf(fp, "\nAborting due to some test failures.\n");
+ exit_status = 1;
+ } else
+ fprintf(fp, "\nAll tests ran successfully.\n");
+ if (fp)
+ fclose(fp);
+ if (fd)
+ glfs_close(fd);
+ if (fd1)
+ glfs_close(fd1);
+ if (fd2)
+ glfs_close(fd2);
+
+ glfs_unlink(fs1, fname);
+
+ if (fs1)
+ glfs_fini(fs1);
+ if (fs2)
+ glfs_fini(fs2);
+
+ exit(exit_status);
}
-glfs_t *new_client_create (char *hostname, char *volname, char *logfile_name) {
- glfs_t *fs = NULL;
+glfs_t *
+new_client_create(char *hostname, char *volname, char *logfile_name)
+{
+ glfs_t *fs = NULL;
- fs = glfs_new (volname);
- if (!fs)
- LOG_ERR ("glfs_new", errno);
+ fs = glfs_new(volname);
+ if (!fs)
+ LOG_ERR("glfs_new", errno);
- ret = glfs_set_volfile_server (fs, "tcp", hostname, 24007);
- if (ret)
- LOG_ERR ("glfs_set_volfile_server", errno);
+ ret = glfs_set_volfile_server(fs, "tcp", hostname, 24007);
+ if (ret)
+ LOG_ERR("glfs_set_volfile_server", errno);
- ret = glfs_set_logging (fs, logfile_name, 7);
- if (ret)
- LOG_ERR ("glfs_set_logging", errno);
+ ret = glfs_set_logging(fs, logfile_name, 7);
+ if (ret)
+ LOG_ERR("glfs_set_logging", errno);
- ret = glfs_init (fs);
- if (ret)
- LOG_ERR ("glfs_init", errno);
+ ret = glfs_init(fs);
+ if (ret)
+ LOG_ERR("glfs_init", errno);
- return fs;
+ return fs;
}
-void run_test_1 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
-
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
-
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
-
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
-
- fd2 = glfs_open (fs2, fname, O_RDONLY | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
-
- /* On successful read, 0 is returned as there is no content inside the
- * file
- */
- ret = glfs_read (fd2, buf1, 10, 0);
- if (ret)
- LOG_ERR ("glfs_read", errno);
-
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
-
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
-
- test_count++;
- fprintf (fp, "OK\n", i);
+void
+run_test_1(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
+
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
+
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
+
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
+
+ fd2 = glfs_open(fs2, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
+
+ /* On successful read, 0 is returned as there is no content inside the
+ * file
+ */
+ ret = glfs_read(fd2, buf1, 10, 0);
+ if (ret)
+ LOG_ERR("glfs_read", errno);
+
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
+
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
+
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_2 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
+void
+run_test_2(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
- fd2 = glfs_open (fs2, fname, O_WRONLY | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
+ fd2 = glfs_open(fs2, fname, O_WRONLY | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
- ret = glfs_write (fd2, buf2, 10, 0);
- if (ret == 10 || errno != EAGAIN)
- LOG_ERR ("glfs_write", errno);
+ ret = glfs_write(fd2, buf2, 10, 0);
+ if (ret == 10 || errno != EAGAIN)
+ LOG_ERR("glfs_write", errno);
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
- test_count++;
- fprintf (fp, "OK\n", i);
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_3 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
-
- fd1 = glfs_open (fs1, fname, O_WRONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
-
- lock.l_type = F_WRLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
-
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
-
- fd2 = glfs_open (fs2, fname, O_RDONLY | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
-
- /* Still there is no content inside file. So following read should
- * return 0
- */
- ret = glfs_read (fd2, buf1, 10, 0);
- if (ret)
- LOG_ERR ("glfs_read", errno);
-
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
-
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
-
- test_count++;
- fprintf (fp, "OK\n", i);
+void
+run_test_3(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
+
+ fd1 = glfs_open(fs1, fname, O_WRONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
+
+ lock.l_type = F_WRLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
+
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
+
+ fd2 = glfs_open(fs2, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
+
+ /* Still there is no content inside file. So following read should
+ * return 0
+ */
+ ret = glfs_read(fd2, buf1, 10, 0);
+ if (ret)
+ LOG_ERR("glfs_read", errno);
+
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
+
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
+
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_4 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
+void
+run_test_4(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
- fd1 = glfs_open (fs1, fname, O_WRONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
+ fd1 = glfs_open(fs1, fname, O_WRONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
- lock.l_type = F_WRLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
+ lock.l_type = F_WRLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
- fd2 = glfs_open (fs2, fname, O_WRONLY | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
+ fd2 = glfs_open(fs2, fname, O_WRONLY | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
- ret = glfs_write (fd2, buf2, 10, 0);
- if (ret != 10)
- LOG_ERR ("glfs_write", errno);
+ ret = glfs_write(fd2, buf2, 10, 0);
+ if (ret != 10)
+ LOG_ERR("glfs_write", errno);
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
- test_count++;
- fprintf (fp, "OK\n", i);
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_5 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
+void
+run_test_5(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
- fd2 = glfs_open (fs2, fname, O_RDONLY | O_NONBLOCK | O_TRUNC);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
+ fd2 = glfs_open(fs2, fname, O_RDONLY | O_NONBLOCK | O_TRUNC);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
- test_count++;
- fprintf (fp, "OK\n", i);
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_6 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
+void
+run_test_6(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
- fd2 = glfs_open (fs2, fname, O_RDONLY | O_NONBLOCK | O_TRUNC);
- if (fd2)
- LOG_ERR ("glfs_open", errno);
+ fd2 = glfs_open(fs2, fname, O_RDONLY | O_NONBLOCK | O_TRUNC);
+ if (fd2)
+ LOG_ERR("glfs_open", errno);
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
- test_count++;
- fprintf (fp, "OK\n", i);
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_7 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
+void
+run_test_7(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 5L;
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 5L;
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_MANDATORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
- fd2 = glfs_open (fs2, fname, O_RDWR | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
+ fd2 = glfs_open(fs2, fname, O_RDWR | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
- ret = glfs_ftruncate (fd2, 4, NULL, NULL);
- if (ret == 0 || errno != EAGAIN)
- LOG_ERR ("glfs_ftruncate", errno);
+ ret = glfs_ftruncate(fd2, 4, NULL, NULL);
+ if (ret == 0 || errno != EAGAIN)
+ LOG_ERR("glfs_ftruncate", errno);
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
- test_count++;
- fprintf (fp, "OK\n", i);
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-void run_test_8 (int i) {
- fprintf (fp, "\nRunning Test-%d . . . ", i);
-
- fd1 = glfs_open (fs1, fname, O_RDONLY | O_NONBLOCK);
- if (!fd1)
- LOG_ERR ("glfs_open", errno);
-
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0L;
- lock.l_len = 10L;
-
- ret = glfs_file_lock (fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
-
- fd2 = glfs_open (fs2, fname, O_RDONLY | O_NONBLOCK);
- if (!fd2)
- LOG_ERR ("glfs_open", errno);
-
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 5L;
- lock.l_len = 2L;
-
- ret = glfs_file_lock (fd2, F_SETLK, &lock, GLFS_LK_MANDATORY);
- if (ret)
- LOG_ERR ("glfs_file_lock", errno);
-
- fd3 = glfs_open (fs3, fname, O_RDWR | O_NONBLOCK);
- if (!fd3)
- LOG_ERR ("glfs_open", errno);
-
- offset = glfs_lseek (fd3, 5L, SEEK_SET);
- if (offset != 5)
- LOG_ERR ("glfs_lseek", errno);
-
- ret = glfs_write (fd3, buf2, 10, 0);
- if (ret == 10 || errno != EAGAIN)
- LOG_ERR ("glfs_write", errno);
-
- offset = glfs_lseek (fd3, 8L, SEEK_SET);
- if (offset != 8)
- LOG_ERR ("glfs_lseek", errno);
-
- ret = glfs_write (fd3, buf2, 10, 0);
- if (ret != 10)
- LOG_ERR ("glfs_write", errno);
-
- ret = glfs_close (fd1);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd1 = NULL;
-
- ret = glfs_close (fd2);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd2 = NULL;
-
- ret = glfs_close (fd3);
- if (ret)
- LOG_ERR ("glfs_close", errno);
- fd3 = NULL;
-
- test_count++;
- fprintf (fp, "OK\n", i);
+void
+run_test_8(int i)
+{
+ fprintf(fp, "\nRunning Test-%d . . . ", i);
+
+ fd1 = glfs_open(fs1, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd1)
+ LOG_ERR("glfs_open", errno);
+
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0L;
+ lock.l_len = 10L;
+
+ ret = glfs_file_lock(fd1, F_SETLK, &lock, GLFS_LK_ADVISORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
+
+ fd2 = glfs_open(fs2, fname, O_RDONLY | O_NONBLOCK);
+ if (!fd2)
+ LOG_ERR("glfs_open", errno);
+
+ lock.l_type = F_RDLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 5L;
+ lock.l_len = 2L;
+
+ ret = glfs_file_lock(fd2, F_SETLK, &lock, GLFS_LK_MANDATORY);
+ if (ret)
+ LOG_ERR("glfs_file_lock", errno);
+
+ fd3 = glfs_open(fs3, fname, O_RDWR | O_NONBLOCK);
+ if (!fd3)
+ LOG_ERR("glfs_open", errno);
+
+ offset = glfs_lseek(fd3, 5L, SEEK_SET);
+ if (offset != 5)
+ LOG_ERR("glfs_lseek", errno);
+
+ ret = glfs_write(fd3, buf2, 10, 0);
+ if (ret == 10 || errno != EAGAIN)
+ LOG_ERR("glfs_write", errno);
+
+ offset = glfs_lseek(fd3, 8L, SEEK_SET);
+ if (offset != 8)
+ LOG_ERR("glfs_lseek", errno);
+
+ ret = glfs_write(fd3, buf2, 10, 0);
+ if (ret != 10)
+ LOG_ERR("glfs_write", errno);
+
+ ret = glfs_close(fd1);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd1 = NULL;
+
+ ret = glfs_close(fd2);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd2 = NULL;
+
+ ret = glfs_close(fd3);
+ if (ret)
+ LOG_ERR("glfs_close", errno);
+ fd3 = NULL;
+
+ test_count++;
+ fprintf(fp, "OK\n", i);
}
-int main (int argc, char *argv[]) {
- char logfile[50];
-
- if (argc != 4) {
- fprintf (stderr, "Usage: %s <server ip/hostname> <volume name> <test log directory>\n", argv[0]);
- return 0;
- }
-
- sprintf (logfile, "%s/%s", argv[3], "mandatory-lock-optimal-test.log");
- fp = fopen (logfile, "w");
- if (!fp) {
- fprintf (stderr, "\n%s\n", logfile);
- LOG_ERR ("Log file creation", errno);
- }
-
- sprintf (logfile, "%s/%s", argv[3], "glfs-client-1.log");
- fs1 = new_client_create (argv[1], argv[2], logfile);
- if (!fs1)
- LOG_ERR ("client-1 creation", EINVAL);
-
- sprintf (logfile, "%s/%s", argv[3], "glfs-client-2.log");
- fs2 = new_client_create (argv[1], argv[2], logfile);
- if (!fs2)
- LOG_ERR ("client-2 creation", EINVAL);
-
- sprintf (logfile, "%s/%s", argv[3], "glfs-client-3.log");
- fs3 = new_client_create (argv[1], argv[2], logfile);
- if (!fs3)
- LOG_ERR ("client-3 creation", EINVAL);
-
- fd = glfs_creat (fs1, fname, O_RDWR, 0644);
- if (!fd)
- LOG_ERR ("glfs_creat", errno);
-
- test_count = 0;
-
- run_test_1 (1);
- run_test_2 (2);
- run_test_3 (3);
- run_test_4 (4);
- run_test_5 (5);
- run_test_6 (6);
- run_test_7 (7);
- run_test_8 (8);
-
- cleanup_and_exit (0);
+int
+main(int argc, char *argv[])
+{
+ char logfile[50];
+ if (argc != 4) {
+ fprintf(stderr,
+ "Usage: %s <server ip/hostname> <volume name> <test log "
+ "directory>\n",
+ argv[0]);
return 0;
+ }
+
+ sprintf(logfile, "%s/%s", argv[3], "mandatory-lock-optimal-test.log");
+ fp = fopen(logfile, "w");
+ if (!fp) {
+ fprintf(stderr, "\n%s\n", logfile);
+ LOG_ERR("Log file creation", errno);
+ }
+
+ sprintf(logfile, "%s/%s", argv[3], "glfs-client-1.log");
+ fs1 = new_client_create(argv[1], argv[2], logfile);
+ if (!fs1)
+ LOG_ERR("client-1 creation", EINVAL);
+
+ sprintf(logfile, "%s/%s", argv[3], "glfs-client-2.log");
+ fs2 = new_client_create(argv[1], argv[2], logfile);
+ if (!fs2)
+ LOG_ERR("client-2 creation", EINVAL);
+
+ sprintf(logfile, "%s/%s", argv[3], "glfs-client-3.log");
+ fs3 = new_client_create(argv[1], argv[2], logfile);
+ if (!fs3)
+ LOG_ERR("client-3 creation", EINVAL);
+
+ fd = glfs_creat(fs1, fname, O_RDWR, 0644);
+ if (!fd)
+ LOG_ERR("glfs_creat", errno);
+
+ test_count = 0;
+
+ run_test_1(1);
+ run_test_2(2);
+ run_test_3(3);
+ run_test_4(4);
+ run_test_5(5);
+ run_test_6(6);
+ run_test_7(7);
+ run_test_8(8);
+
+ cleanup_and_exit(0);
+
+ return 0;
}