NFS, NLM: Allow blocking locks to respect signals
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -443,10 +443,8 @@ static int do_vfs_lock(struct file *file, struct file_lock *fl)
|
|||||||
static int do_unlk(struct file *filp, int cmd, struct file_lock *fl)
|
static int do_unlk(struct file *filp, int cmd, struct file_lock *fl)
|
||||||
{
|
{
|
||||||
struct inode *inode = filp->f_mapping->host;
|
struct inode *inode = filp->f_mapping->host;
|
||||||
sigset_t oldset;
|
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
rpc_clnt_sigmask(NFS_CLIENT(inode), &oldset);
|
|
||||||
/*
|
/*
|
||||||
* Flush all pending writes before doing anything
|
* Flush all pending writes before doing anything
|
||||||
* with locks..
|
* with locks..
|
||||||
@@ -464,17 +462,14 @@ static int do_unlk(struct file *filp, int cmd, struct file_lock *fl)
|
|||||||
else
|
else
|
||||||
status = do_vfs_lock(filp, fl);
|
status = do_vfs_lock(filp, fl);
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
rpc_clnt_sigunmask(NFS_CLIENT(inode), &oldset);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_setlk(struct file *filp, int cmd, struct file_lock *fl)
|
static int do_setlk(struct file *filp, int cmd, struct file_lock *fl)
|
||||||
{
|
{
|
||||||
struct inode *inode = filp->f_mapping->host;
|
struct inode *inode = filp->f_mapping->host;
|
||||||
sigset_t oldset;
|
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
rpc_clnt_sigmask(NFS_CLIENT(inode), &oldset);
|
|
||||||
/*
|
/*
|
||||||
* Flush all pending writes before doing anything
|
* Flush all pending writes before doing anything
|
||||||
* with locks..
|
* with locks..
|
||||||
@@ -507,7 +502,6 @@ static int do_setlk(struct file *filp, int cmd, struct file_lock *fl)
|
|||||||
nfs_sync_mapping(filp->f_mapping);
|
nfs_sync_mapping(filp->f_mapping);
|
||||||
nfs_zap_caches(inode);
|
nfs_zap_caches(inode);
|
||||||
out:
|
out:
|
||||||
rpc_clnt_sigunmask(NFS_CLIENT(inode), &oldset);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user