summaryrefslogtreecommitdiff
path: root/nfs/ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'nfs/ops.c')
-rw-r--r--nfs/ops.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/nfs/ops.c b/nfs/ops.c
index 5251d423..4e4f2930 100644
--- a/nfs/ops.c
+++ b/nfs/ops.c
@@ -505,6 +505,13 @@ netfs_attempt_write (struct netcred *cred, struct node *np,
}
}
+ if (err == EINTR && amt != *len)
+ {
+ *len -= amt;
+ free (rpcbuf);
+ return 0;
+ }
+
if (err)
{
*len = 0;
@@ -945,7 +952,10 @@ netfs_attempt_create_file (struct netcred *cred, struct node *np,
{
err = verify_nonexistent (cred, np, name);
if (err)
- return err;
+ {
+ mutex_unlock (&np->lock);
+ return err;
+ }
}
p = nfs_initialize_rpc (NFSPROC_CREATE (protocol_version),