#include #include #include #include #include #include #include #include #include #include #include #include int gfapi = 1; #define LOG_ERR(func, ret) do { \ if (ret != 0) { \ fprintf (stderr, "%s : returned error %d (%s)\n", \ func, ret, strerror (errno)); \ goto out; \ } else { \ fprintf (stderr, "%s : returned %d\n", func, ret); \ } \ } while (0) int main (int argc, char *argv[]) { glfs_t *fs = NULL; int ret = 0, i, status = 0; glfs_fd_t *fd = NULL; char *filename = "file_tmp"; char *volname = NULL; char *logfile = NULL; struct flock lock = {0, }; if (argc != 3) { fprintf (stderr, "Invalid argument\n"); exit(1); } volname = argv[1]; logfile = argv[2]; fs = glfs_new (volname); if (!fs) { fprintf (stderr, "glfs_new: returned NULL\n"); return -1; } ret = glfs_set_volfile_server (fs, "tcp", "localhost", 24007); LOG_ERR("glfs_set_volfile_server", ret); ret = glfs_set_logging (fs, logfile, 7); LOG_ERR("glfs_set_logging", ret); ret = glfs_init (fs); LOG_ERR("glfs_init", ret); fd = glfs_creat(fs, filename, O_RDWR|O_SYNC, 0644); if (fd <= 0) { ret = -1; LOG_ERR ("glfs_creat", ret); } fprintf (stderr, "glfs-create fd - %d\n", fd); /* validate locks for negative range */ lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 10; lock.l_len = -9; ret = glfs_posix_lock (fd, F_SETLK, &lock); LOG_ERR ("glfs_posix_lock", ret); err: glfs_close(fd); LOG_ERR ("glfs_close", ret); out: if (fs) { ret = glfs_fini(fs); fprintf (stderr, "glfs_fini(fs) returned %d \n", ret); } if (ret) exit(1); exit(0); }