mirror of https://github.com/torvalds/linux.git
I don't know exactly how, but in some cases, a dir record is not removed, or a new one is created when it shouldn't be. The result is that the dir node lookup returns a master node where the rsb does not exist. In this case, The master node will repeatedly return -EBADR for requests, and the lock requests will be stuck. Until all possible ways for this to happen can be eliminated, a simple and effective way to recover from this situation is for the supposed master node to send a standard remove message to the dir node when it receives a request for a resource it has no rsb for. Signed-off-by: David Teigland <teigland@redhat.com> |
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| ast.c | ||
| ast.h | ||
| config.c | ||
| config.h | ||
| debug_fs.c | ||
| dir.c | ||
| dir.h | ||
| dlm_internal.h | ||
| lock.c | ||
| lock.h | ||
| lockspace.c | ||
| lockspace.h | ||
| lowcomms.c | ||
| lowcomms.h | ||
| lvb_table.h | ||
| main.c | ||
| member.c | ||
| member.h | ||
| memory.c | ||
| memory.h | ||
| midcomms.c | ||
| midcomms.h | ||
| netlink.c | ||
| plock.c | ||
| rcom.c | ||
| rcom.h | ||
| recover.c | ||
| recover.h | ||
| recoverd.c | ||
| recoverd.h | ||
| requestqueue.c | ||
| requestqueue.h | ||
| user.c | ||
| user.h | ||
| util.c | ||
| util.h | ||