diff options
author | Jeff Layton <jlayton@primarydata.com> | 2015-01-16 15:05:55 -0500 |
---|---|---|
committer | Jeff Layton <jeff.layton@primarydata.com> | 2015-01-16 16:08:16 -0500 |
commit | bd61e0a9c852de2d705b6f1bb2cc54c5774db570 (patch) | |
tree | 67a583912923f2ae621bddf94fbba8816cb0e49d /fs/nfsd | |
parent | 5263e31e452fb84138b9bee061d5c06c0f359fea (diff) |
locks: convert posix locks to file_lock_context
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Acked-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index c06a1ba80d73..fad821991369 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -5556,10 +5556,11 @@ out_nfserr: | |||
5556 | static bool | 5556 | static bool |
5557 | check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) | 5557 | check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) |
5558 | { | 5558 | { |
5559 | struct file_lock **flpp; | 5559 | struct file_lock *fl; |
5560 | int status = false; | 5560 | int status = false; |
5561 | struct file *filp = find_any_file(fp); | 5561 | struct file *filp = find_any_file(fp); |
5562 | struct inode *inode; | 5562 | struct inode *inode; |
5563 | struct file_lock_context *flctx; | ||
5563 | 5564 | ||
5564 | if (!filp) { | 5565 | if (!filp) { |
5565 | /* Any valid lock stateid should have some sort of access */ | 5566 | /* Any valid lock stateid should have some sort of access */ |
@@ -5568,15 +5569,18 @@ check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) | |||
5568 | } | 5569 | } |
5569 | 5570 | ||
5570 | inode = file_inode(filp); | 5571 | inode = file_inode(filp); |
5572 | flctx = inode->i_flctx; | ||
5571 | 5573 | ||
5572 | spin_lock(&inode->i_lock); | 5574 | if (flctx && !list_empty_careful(&flctx->flc_posix)) { |
5573 | for (flpp = &inode->i_flock; *flpp != NULL; flpp = &(*flpp)->fl_next) { | 5575 | spin_lock(&inode->i_lock); |
5574 | if ((*flpp)->fl_owner == (fl_owner_t)lowner) { | 5576 | list_for_each_entry(fl, &flctx->flc_posix, fl_list) { |
5575 | status = true; | 5577 | if (fl->fl_owner == (fl_owner_t)lowner) { |
5576 | break; | 5578 | status = true; |
5579 | break; | ||
5580 | } | ||
5577 | } | 5581 | } |
5582 | spin_unlock(&inode->i_lock); | ||
5578 | } | 5583 | } |
5579 | spin_unlock(&inode->i_lock); | ||
5580 | fput(filp); | 5584 | fput(filp); |
5581 | return status; | 5585 | return status; |
5582 | } | 5586 | } |