|
@@ -39,6 +39,7 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context*,
|
|
unsigned int, unsigned int);
|
|
unsigned int, unsigned int);
|
|
static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc,
|
|
static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc,
|
|
struct inode *inode, int ioflags);
|
|
struct inode *inode, int ioflags);
|
|
|
|
+static void nfs_redirty_request(struct nfs_page *req);
|
|
static const struct rpc_call_ops nfs_write_partial_ops;
|
|
static const struct rpc_call_ops nfs_write_partial_ops;
|
|
static const struct rpc_call_ops nfs_write_full_ops;
|
|
static const struct rpc_call_ops nfs_write_full_ops;
|
|
static const struct rpc_call_ops nfs_commit_ops;
|
|
static const struct rpc_call_ops nfs_commit_ops;
|
|
@@ -288,7 +289,12 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio,
|
|
BUG();
|
|
BUG();
|
|
}
|
|
}
|
|
spin_unlock(&inode->i_lock);
|
|
spin_unlock(&inode->i_lock);
|
|
- nfs_pageio_add_request(pgio, req);
|
|
|
|
|
|
+ if (!nfs_pageio_add_request(pgio, req)) {
|
|
|
|
+ nfs_redirty_request(req);
|
|
|
|
+ nfs_end_page_writeback(page);
|
|
|
|
+ nfs_clear_page_tag_locked(req);
|
|
|
|
+ return pgio->pg_error;
|
|
|
|
+ }
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|