Commit c65e6254 authored by Weston Andros Adamson's avatar Weston Andros Adamson Committed by Trond Myklebust

nfs: remove unused writeverf code

Remove duplicate writeverf structure from merge of nfs_pgio_header and
nfs_pgio_data and remove writeverf related flags and logic to handle
more than one RPC per nfs_pgio_header.
Signed-off-by: default avatarWeston Andros Adamson <dros@primarydata.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent d45f60c6
...@@ -445,7 +445,7 @@ static void bl_end_par_io_write(void *data, int num_se) ...@@ -445,7 +445,7 @@ static void bl_end_par_io_write(void *data, int num_se)
} }
hdr->task.tk_status = hdr->pnfs_error; hdr->task.tk_status = hdr->pnfs_error;
hdr->writeverf.committed = NFS_FILE_SYNC; hdr->verf.committed = NFS_FILE_SYNC;
INIT_WORK(&hdr->task.u.tk_work, bl_write_cleanup); INIT_WORK(&hdr->task.u.tk_work, bl_write_cleanup);
schedule_work(&hdr->task.u.tk_work); schedule_work(&hdr->task.u.tk_work);
} }
......
...@@ -715,7 +715,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr) ...@@ -715,7 +715,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
{ {
struct nfs_direct_req *dreq = hdr->dreq; struct nfs_direct_req *dreq = hdr->dreq;
struct nfs_commit_info cinfo; struct nfs_commit_info cinfo;
int bit = -1; bool request_commit = false;
struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct nfs_page *req = nfs_list_entry(hdr->pages.next);
if (test_bit(NFS_IOHDR_REDO, &hdr->flags)) if (test_bit(NFS_IOHDR_REDO, &hdr->flags))
...@@ -729,27 +729,20 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr) ...@@ -729,27 +729,20 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
dreq->flags = 0; dreq->flags = 0;
dreq->error = hdr->error; dreq->error = hdr->error;
} }
if (dreq->error != 0) if (dreq->error == 0) {
bit = NFS_IOHDR_ERROR;
else {
dreq->count += hdr->good_bytes; dreq->count += hdr->good_bytes;
if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) { if (nfs_write_need_commit(hdr)) {
dreq->flags = NFS_ODIRECT_RESCHED_WRITES;
bit = NFS_IOHDR_NEED_RESCHED;
} else if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
if (dreq->flags == NFS_ODIRECT_RESCHED_WRITES) if (dreq->flags == NFS_ODIRECT_RESCHED_WRITES)
bit = NFS_IOHDR_NEED_RESCHED; request_commit = true;
else if (dreq->flags == 0) { else if (dreq->flags == 0) {
nfs_direct_set_hdr_verf(dreq, hdr); nfs_direct_set_hdr_verf(dreq, hdr);
bit = NFS_IOHDR_NEED_COMMIT; request_commit = true;
dreq->flags = NFS_ODIRECT_DO_COMMIT; dreq->flags = NFS_ODIRECT_DO_COMMIT;
} else if (dreq->flags == NFS_ODIRECT_DO_COMMIT) { } else if (dreq->flags == NFS_ODIRECT_DO_COMMIT) {
if (nfs_direct_set_or_cmp_hdr_verf(dreq, hdr)) { request_commit = true;
if (nfs_direct_set_or_cmp_hdr_verf(dreq, hdr))
dreq->flags = dreq->flags =
NFS_ODIRECT_RESCHED_WRITES; NFS_ODIRECT_RESCHED_WRITES;
bit = NFS_IOHDR_NEED_RESCHED;
} else
bit = NFS_IOHDR_NEED_COMMIT;
} }
} }
} }
...@@ -760,9 +753,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr) ...@@ -760,9 +753,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
req = nfs_list_entry(hdr->pages.next); req = nfs_list_entry(hdr->pages.next);
nfs_list_remove_request(req); nfs_list_remove_request(req);
switch (bit) { if (request_commit) {
case NFS_IOHDR_NEED_RESCHED:
case NFS_IOHDR_NEED_COMMIT:
kref_get(&req->wb_kref); kref_get(&req->wb_kref);
nfs_mark_request_commit(req, hdr->lseg, &cinfo); nfs_mark_request_commit(req, hdr->lseg, &cinfo);
do_destroy = false; do_destroy = false;
......
...@@ -441,6 +441,7 @@ int nfs_scan_commit(struct inode *inode, struct list_head *dst, ...@@ -441,6 +441,7 @@ int nfs_scan_commit(struct inode *inode, struct list_head *dst,
void nfs_mark_request_commit(struct nfs_page *req, void nfs_mark_request_commit(struct nfs_page *req,
struct pnfs_layout_segment *lseg, struct pnfs_layout_segment *lseg,
struct nfs_commit_info *cinfo); struct nfs_commit_info *cinfo);
int nfs_write_need_commit(struct nfs_pgio_header *);
int nfs_generic_commit_list(struct inode *inode, struct list_head *head, int nfs_generic_commit_list(struct inode *inode, struct list_head *head,
int how, struct nfs_commit_info *cinfo); int how, struct nfs_commit_info *cinfo);
void nfs_retry_commit(struct list_head *page_list, void nfs_retry_commit(struct list_head *page_list,
......
...@@ -328,7 +328,7 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync) ...@@ -328,7 +328,7 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
oir->status = hdr->task.tk_status = status; oir->status = hdr->task.tk_status = status;
if (status >= 0) { if (status >= 0) {
hdr->res.count = status; hdr->res.count = status;
hdr->writeverf.committed = oir->committed; hdr->verf.committed = oir->committed;
} else { } else {
hdr->pnfs_error = status; hdr->pnfs_error = status;
} }
...@@ -336,7 +336,7 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync) ...@@ -336,7 +336,7 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
/* must not use oir after this point */ /* must not use oir after this point */
dprintk("%s: Return status %zd committed %d sync=%d\n", __func__, dprintk("%s: Return status %zd committed %d sync=%d\n", __func__,
status, hdr->writeverf.committed, sync); status, hdr->verf.committed, sync);
if (sync) if (sync)
pnfs_ld_write_done(hdr); pnfs_ld_write_done(hdr);
......
...@@ -545,7 +545,7 @@ static void nfs_pgio_rpcsetup(struct nfs_pgio_header *hdr, ...@@ -545,7 +545,7 @@ static void nfs_pgio_rpcsetup(struct nfs_pgio_header *hdr,
hdr->res.fattr = &hdr->fattr; hdr->res.fattr = &hdr->fattr;
hdr->res.count = count; hdr->res.count = count;
hdr->res.eof = 0; hdr->res.eof = 0;
hdr->res.verf = &hdr->writeverf; hdr->res.verf = &hdr->verf;
nfs_fattr_init(&hdr->fattr); nfs_fattr_init(&hdr->fattr);
} }
......
...@@ -595,12 +595,11 @@ nfs_clear_request_commit(struct nfs_page *req) ...@@ -595,12 +595,11 @@ nfs_clear_request_commit(struct nfs_page *req)
} }
} }
static inline
int nfs_write_need_commit(struct nfs_pgio_header *hdr) int nfs_write_need_commit(struct nfs_pgio_header *hdr)
{ {
if (hdr->writeverf.committed == NFS_DATA_SYNC) if (hdr->verf.committed == NFS_DATA_SYNC)
return hdr->lseg == NULL; return hdr->lseg == NULL;
return hdr->writeverf.committed != NFS_FILE_SYNC; return hdr->verf.committed != NFS_FILE_SYNC;
} }
#else #else
...@@ -626,7 +625,6 @@ nfs_clear_request_commit(struct nfs_page *req) ...@@ -626,7 +625,6 @@ nfs_clear_request_commit(struct nfs_page *req)
{ {
} }
static inline
int nfs_write_need_commit(struct nfs_pgio_header *hdr) int nfs_write_need_commit(struct nfs_pgio_header *hdr)
{ {
return 0; return 0;
...@@ -654,11 +652,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr) ...@@ -654,11 +652,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr)
nfs_context_set_write_error(req->wb_context, hdr->error); nfs_context_set_write_error(req->wb_context, hdr->error);
goto remove_req; goto remove_req;
} }
if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) { if (nfs_write_need_commit(hdr)) {
nfs_mark_request_dirty(req);
goto next;
}
if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
memcpy(&req->wb_verf, &hdr->verf.verifier, sizeof(req->wb_verf)); memcpy(&req->wb_verf, &hdr->verf.verifier, sizeof(req->wb_verf));
nfs_mark_request_commit(req, hdr->lseg, &cinfo); nfs_mark_request_commit(req, hdr->lseg, &cinfo);
goto next; goto next;
...@@ -668,7 +662,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr) ...@@ -668,7 +662,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr)
next: next:
nfs_unlock_request(req); nfs_unlock_request(req);
nfs_end_page_writeback(req); nfs_end_page_writeback(req);
do_destroy = !test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags); do_destroy = !nfs_write_need_commit(hdr);
nfs_release_request(req); nfs_release_request(req);
} }
out: out:
...@@ -1088,18 +1082,7 @@ void nfs_commit_prepare(struct rpc_task *task, void *calldata) ...@@ -1088,18 +1082,7 @@ void nfs_commit_prepare(struct rpc_task *task, void *calldata)
static void nfs_writeback_release_common(struct nfs_pgio_header *hdr) static void nfs_writeback_release_common(struct nfs_pgio_header *hdr)
{ {
int status = hdr->task.tk_status; /* do nothing! */
if ((status >= 0) && nfs_write_need_commit(hdr)) {
spin_lock(&hdr->lock);
if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags))
; /* Do nothing */
else if (!test_and_set_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags))
memcpy(&hdr->verf, &hdr->writeverf, sizeof(hdr->verf));
else if (memcmp(&hdr->verf, &hdr->writeverf, sizeof(hdr->verf)))
set_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags);
spin_unlock(&hdr->lock);
}
} }
/* /*
......
...@@ -1253,8 +1253,6 @@ enum { ...@@ -1253,8 +1253,6 @@ enum {
NFS_IOHDR_ERROR = 0, NFS_IOHDR_ERROR = 0,
NFS_IOHDR_EOF, NFS_IOHDR_EOF,
NFS_IOHDR_REDO, NFS_IOHDR_REDO,
NFS_IOHDR_NEED_COMMIT,
NFS_IOHDR_NEED_RESCHED,
}; };
struct nfs_pgio_header { struct nfs_pgio_header {
...@@ -1284,7 +1282,6 @@ struct nfs_pgio_header { ...@@ -1284,7 +1282,6 @@ struct nfs_pgio_header {
*/ */
struct rpc_task task; struct rpc_task task;
struct nfs_fattr fattr; struct nfs_fattr fattr;
struct nfs_writeverf writeverf; /* Used for writes */
struct nfs_pgio_args args; /* argument struct */ struct nfs_pgio_args args; /* argument struct */
struct nfs_pgio_res res; /* result struct */ struct nfs_pgio_res res; /* result struct */
unsigned long timestamp; /* For lease renewal */ unsigned long timestamp; /* For lease renewal */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment