locks: don't call ->copy_lock methods on return of conflicting locks
authorJ. Bruce Fields <bfields@citi.umich.edu>
Thu, 24 Apr 2008 14:08:22 +0000 (10:08 -0400)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Fri, 25 Apr 2008 17:00:11 +0000 (13:00 -0400)
commit1a747ee0cc11a198f9e2435add821bd0dfedb7c1
tree10b5a55bde30bef3f466e5126bd44fc0e111fc5a
parent17efa372cfe4d189705edf6cd4fbe283827a5dc7
locks: don't call ->copy_lock methods on return of conflicting locks

The file_lock structure is used both as a heavy-weight representation of
an active lock, with pointers to reference-counted structures, etc., and
as a simple container for parameters that describe a file lock.

The conflicting lock returned from __posix_lock_file is an example of
the latter; so don't call the filesystem or lock manager callbacks when
copying to it.  This also saves the need for an unnecessary
locks_init_lock in the nfsv4 server.

Thanks to Trond for pointing out the error.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/lockd/svclock.c
fs/locks.c
fs/nfsd/nfs4state.c
include/linux/fs.h