Merge remote-tracking branch 'regulator/fix/tps65910' into regulator-linus
[cascardo/linux.git] / fs / nfs / file.c
index 039d587..ca699dd 100644 (file)
@@ -420,7 +420,7 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
                return status;
        NFS_I(mapping->host)->write_io += copied;
 
-       if (nfs_ctx_key_to_expire(ctx)) {
+       if (nfs_ctx_key_to_expire(ctx, mapping->host)) {
                status = nfs_wb_all(mapping->host);
                if (status < 0)
                        return status;
@@ -613,7 +613,7 @@ static int nfs_need_check_write(struct file *filp, struct inode *inode)
 
        ctx = nfs_file_open_context(filp);
        if (test_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags) ||
-           nfs_ctx_key_to_expire(ctx))
+           nfs_ctx_key_to_expire(ctx, inode))
                return 1;
        return 0;
 }
@@ -657,7 +657,10 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
        if (result <= 0)
                goto out;
 
-       written = generic_write_sync(iocb, result);
+       result = generic_write_sync(iocb, result);
+       if (result < 0)
+               goto out;
+       written = result;
        iocb->ki_pos += written;
 
        /* Return error values */