ceph: use fl->fl_file as owner identifier of flock and posix lock
authorYan, Zheng <zheng.z.yan@intel.com>
Sun, 9 Mar 2014 15:16:40 +0000 (23:16 +0800)
committerSage Weil <sage@inktank.com>
Sat, 5 Apr 2014 04:07:11 +0000 (21:07 -0700)
commiteb13e832f823f6c110ea53e3067bafe22b87de63
treee7e06eaf5ded86bb0d64b363b1c98c5909cf4847
parenteb70c0ce4e877c6854c682c0fc009d7875994942
ceph: use fl->fl_file as owner identifier of flock and posix lock

flock and posix lock should use fl->fl_file instead of process ID
as owner identifier. (posix lock uses fl->fl_owner. fl->fl_owner
is usually equal to fl->fl_file, but it also can be a customized
value). The process ID of who holds the lock is just for F_GETLK
fcntl(2).

The fix is rename the 'pid' fields of struct ceph_mds_request_args
and struct ceph_filelock to 'owner', rename 'pid_namespace' fields
to 'pid'. Assign fl->fl_file to the 'owner' field of lock messages.
We also set the most significant bit of the 'owner' field. MDS can
use that bit to distinguish between old and new clients.

The MDS counterpart of this patch modifies the flock code to not
take the 'pid_namespace' into consideration when checking conflict
locks.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Sage Weil <sage@inktank.com>
fs/ceph/locks.c
fs/ceph/super.c
fs/ceph/super.h
include/linux/ceph/ceph_fs.h