Merge branch 'cleanups'
Merge cleanups requested by Linus. * cleanups: (3 commits) pnfs: Refactor the *_layout_mark_request_commit to use pnfs_layout_mark_request_commit nfs: Can call nfs_clear_page_commit() instead nfs: Provide and use helper functions for marking a page as unstable
This commit is contained in:
@@ -85,25 +85,30 @@ static int nfs_delegation_claim_locks(struct nfs_open_context *ctx, struct nfs4_
|
||||
{
|
||||
struct inode *inode = state->inode;
|
||||
struct file_lock *fl;
|
||||
struct file_lock_context *flctx = inode->i_flctx;
|
||||
struct list_head *list;
|
||||
int status = 0;
|
||||
|
||||
if (inode->i_flock == NULL)
|
||||
if (flctx == NULL)
|
||||
goto out;
|
||||
|
||||
/* Protect inode->i_flock using the i_lock */
|
||||
spin_lock(&inode->i_lock);
|
||||
for (fl = inode->i_flock; fl != NULL; fl = fl->fl_next) {
|
||||
if (!(fl->fl_flags & (FL_POSIX|FL_FLOCK)))
|
||||
continue;
|
||||
list = &flctx->flc_posix;
|
||||
spin_lock(&flctx->flc_lock);
|
||||
restart:
|
||||
list_for_each_entry(fl, list, fl_list) {
|
||||
if (nfs_file_open_context(fl->fl_file) != ctx)
|
||||
continue;
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&flctx->flc_lock);
|
||||
status = nfs4_lock_delegation_recall(fl, state, stateid);
|
||||
if (status < 0)
|
||||
goto out;
|
||||
spin_lock(&inode->i_lock);
|
||||
spin_lock(&flctx->flc_lock);
|
||||
}
|
||||
spin_unlock(&inode->i_lock);
|
||||
if (list == &flctx->flc_posix) {
|
||||
list = &flctx->flc_flock;
|
||||
goto restart;
|
||||
}
|
||||
spin_unlock(&flctx->flc_lock);
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
Reference in New Issue
Block a user