Description of problem:
If an unprivileged user tries to create a file in a directory with
4755 protection, the process hangs as does anything else that tries to
access that directory.
This only happens when running GFS with the DLM, not gulm. A user also
reports it happens using gfs_quota but I haven't checked this
# mkdir /mnt/gfs/test
# chown user /mnt/gfs/test
# chmod 4755 /mnt/gfs/test
# su - user
$ touch /mnt/gfs/test/file
Looking in /proc/cluster/dlm_locks shows no waiting or converting locks.
How reproducible:
Always

it works for me after the following fixes:
Three different problems resulting from recent change to quit doing
a convert-to-NL on a gfs unlock:
- dlm_unlock wasn't passing VALBLK flag to write lvb on unlock
- wake/complete for synchronous (internal) unlocks rather than gfs
callback
- lm_hold_lvb() wasn't preserving lvb contents since a dlm_unlock
would free the lkb and rsb. Now if there's an lvb to preserve,
convert to NL on a lm_unlock() and do dlm_unlock on lm_unhold_lvb().