Hi,
Let me try to explain my issue with gfs/gfs2 filesystem. I have two node cluster and a shared gfs filesystem which is mounted on both the nodes at the same time. I can access the filesystem from both nodes.
1. From node A I put a lock on a file called testfile and tried to put the lock on testfile from node B. I get message, file is already locked, which is good since file is locked from ndoe A.
2. Now unmount the filesystem on node B while lock is still there on testfile from node A and mount it back. Now try to put lock on the testfile from node B which is locked from node A. Expected result would be not to succeed in puting lock from node B, but "NO" I am able to put the lock from node B.
3. Node B does not know that there is some lock on testfile form node A but now if you release the lock from node A and put it again and then try to put lock on testfile from node B it works as expected means you will not be able to put lock on testfile. It says file is already locked.
It does not make any difference if I use gfs or gfs2 test works same way I tried on Oracle enterprise linux 5.1 and 5.2, which is nothing but redhat. Also node A or node B test results are same.
I have lock file which is compiled one but the following program also works the same way.
===========================================================================
/*
** lockdemo.c -- shows off your system's file locking. Rated R.
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
/* l_type l_whence l_start l_len l_pid */
struct flock fl = { F_WRLCK, SEEK_SET, 0, 0, 0 };
int fd;
fl.l_pid = getpid();
if (argc > 1)
fl.l_type = F_RDLCK;
if ((fd = open("lockdemo.c", O_RDWR)) == -1) {
perror("open");
exit(1);
}
printf("Press <RETURN> to try to get lock: ");
getchar();
printf("Trying to get lock...");
if (fcntl(fd, F_SETLKW, &fl) == -1) {
perror("fcntl");
exit(1);
}
printf("got lock\n");
printf("Press <RETURN> to release lock: ");
getchar();
fl.l_type = F_UNLCK; /* set to unlock same region */
if (fcntl(fd, F_SETLK, &fl) == -1) {
perror("fcntl");
exit(1);
}
printf("Unlocked.\n");
close(fd);
}
=============================================================================
I will be happy to provide more details as requested.
TIA
vip
Let me try to explain my issue with gfs/gfs2 filesystem. I have two node cluster and a shared gfs filesystem which is mounted on both the nodes at the same time. I can access the filesystem from both nodes.
1. From node A I put a lock on a file called testfile and tried to put the lock on testfile from node B. I get message, file is already locked, which is good since file is locked from ndoe A.
2. Now unmount the filesystem on node B while lock is still there on testfile from node A and mount it back. Now try to put lock on the testfile from node B which is locked from node A. Expected result would be not to succeed in puting lock from node B, but "NO" I am able to put the lock from node B.
3. Node B does not know that there is some lock on testfile form node A but now if you release the lock from node A and put it again and then try to put lock on testfile from node B it works as expected means you will not be able to put lock on testfile. It says file is already locked.
It does not make any difference if I use gfs or gfs2 test works same way I tried on Oracle enterprise linux 5.1 and 5.2, which is nothing but redhat. Also node A or node B test results are same.
I have lock file which is compiled one but the following program also works the same way.
===========================================================================
/*
** lockdemo.c -- shows off your system's file locking. Rated R.
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
/* l_type l_whence l_start l_len l_pid */
struct flock fl = { F_WRLCK, SEEK_SET, 0, 0, 0 };
int fd;
fl.l_pid = getpid();
if (argc > 1)
fl.l_type = F_RDLCK;
if ((fd = open("lockdemo.c", O_RDWR)) == -1) {
perror("open");
exit(1);
}
printf("Press <RETURN> to try to get lock: ");
getchar();
printf("Trying to get lock...");
if (fcntl(fd, F_SETLKW, &fl) == -1) {
perror("fcntl");
exit(1);
}
printf("got lock\n");
printf("Press <RETURN> to release lock: ");
getchar();
fl.l_type = F_UNLCK; /* set to unlock same region */
if (fcntl(fd, F_SETLK, &fl) == -1) {
perror("fcntl");
exit(1);
}
printf("Unlocked.\n");
close(fd);
}
=============================================================================
I will be happy to provide more details as requested.
TIA
vip
-- Linux-cluster mailing list Linux-cluster@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cluster