mirror of https://gitee.com/openkylin/linux.git
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: Weston Andros Adamson <dros@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
d45f60c678
commit
c65e6254ca
|
@ -445,7 +445,7 @@ static void bl_end_par_io_write(void *data, int num_se)
|
|||
}
|
||||
|
||||
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);
|
||||
schedule_work(&hdr->task.u.tk_work);
|
||||
}
|
||||
|
|
|
@ -715,7 +715,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
|
|||
{
|
||||
struct nfs_direct_req *dreq = hdr->dreq;
|
||||
struct nfs_commit_info cinfo;
|
||||
int bit = -1;
|
||||
bool request_commit = false;
|
||||
struct nfs_page *req = nfs_list_entry(hdr->pages.next);
|
||||
|
||||
if (test_bit(NFS_IOHDR_REDO, &hdr->flags))
|
||||
|
@ -729,27 +729,20 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
|
|||
dreq->flags = 0;
|
||||
dreq->error = hdr->error;
|
||||
}
|
||||
if (dreq->error != 0)
|
||||
bit = NFS_IOHDR_ERROR;
|
||||
else {
|
||||
if (dreq->error == 0) {
|
||||
dreq->count += hdr->good_bytes;
|
||||
if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) {
|
||||
dreq->flags = NFS_ODIRECT_RESCHED_WRITES;
|
||||
bit = NFS_IOHDR_NEED_RESCHED;
|
||||
} else if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
|
||||
if (nfs_write_need_commit(hdr)) {
|
||||
if (dreq->flags == NFS_ODIRECT_RESCHED_WRITES)
|
||||
bit = NFS_IOHDR_NEED_RESCHED;
|
||||
request_commit = true;
|
||||
else if (dreq->flags == 0) {
|
||||
nfs_direct_set_hdr_verf(dreq, hdr);
|
||||
bit = NFS_IOHDR_NEED_COMMIT;
|
||||
request_commit = true;
|
||||
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 =
|
||||
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)
|
|||
|
||||
req = nfs_list_entry(hdr->pages.next);
|
||||
nfs_list_remove_request(req);
|
||||
switch (bit) {
|
||||
case NFS_IOHDR_NEED_RESCHED:
|
||||
case NFS_IOHDR_NEED_COMMIT:
|
||||
if (request_commit) {
|
||||
kref_get(&req->wb_kref);
|
||||
nfs_mark_request_commit(req, hdr->lseg, &cinfo);
|
||||
do_destroy = false;
|
||||
|
|
|
@ -441,6 +441,7 @@ int nfs_scan_commit(struct inode *inode, struct list_head *dst,
|
|||
void nfs_mark_request_commit(struct nfs_page *req,
|
||||
struct pnfs_layout_segment *lseg,
|
||||
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 how, struct nfs_commit_info *cinfo);
|
||||
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)
|
|||
oir->status = hdr->task.tk_status = status;
|
||||
if (status >= 0) {
|
||||
hdr->res.count = status;
|
||||
hdr->writeverf.committed = oir->committed;
|
||||
hdr->verf.committed = oir->committed;
|
||||
} else {
|
||||
hdr->pnfs_error = status;
|
||||
}
|
||||
|
@ -336,7 +336,7 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
|
|||
/* must not use oir after this point */
|
||||
|
||||
dprintk("%s: Return status %zd committed %d sync=%d\n", __func__,
|
||||
status, hdr->writeverf.committed, sync);
|
||||
status, hdr->verf.committed, sync);
|
||||
|
||||
if (sync)
|
||||
pnfs_ld_write_done(hdr);
|
||||
|
|
|
@ -545,7 +545,7 @@ static void nfs_pgio_rpcsetup(struct nfs_pgio_header *hdr,
|
|||
hdr->res.fattr = &hdr->fattr;
|
||||
hdr->res.count = count;
|
||||
hdr->res.eof = 0;
|
||||
hdr->res.verf = &hdr->writeverf;
|
||||
hdr->res.verf = &hdr->verf;
|
||||
nfs_fattr_init(&hdr->fattr);
|
||||
}
|
||||
|
||||
|
|
|
@ -595,12 +595,11 @@ nfs_clear_request_commit(struct nfs_page *req)
|
|||
}
|
||||
}
|
||||
|
||||
static inline
|
||||
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->writeverf.committed != NFS_FILE_SYNC;
|
||||
return hdr->verf.committed != NFS_FILE_SYNC;
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -626,7 +625,6 @@ nfs_clear_request_commit(struct nfs_page *req)
|
|||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
int nfs_write_need_commit(struct nfs_pgio_header *hdr)
|
||||
{
|
||||
return 0;
|
||||
|
@ -654,11 +652,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr)
|
|||
nfs_context_set_write_error(req->wb_context, hdr->error);
|
||||
goto remove_req;
|
||||
}
|
||||
if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) {
|
||||
nfs_mark_request_dirty(req);
|
||||
goto next;
|
||||
}
|
||||
if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
|
||||
if (nfs_write_need_commit(hdr)) {
|
||||
memcpy(&req->wb_verf, &hdr->verf.verifier, sizeof(req->wb_verf));
|
||||
nfs_mark_request_commit(req, hdr->lseg, &cinfo);
|
||||
goto next;
|
||||
|
@ -668,7 +662,7 @@ static void nfs_write_completion(struct nfs_pgio_header *hdr)
|
|||
next:
|
||||
nfs_unlock_request(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);
|
||||
}
|
||||
out:
|
||||
|
@ -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)
|
||||
{
|
||||
int status = hdr->task.tk_status;
|
||||
|
||||
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);
|
||||
}
|
||||
/* do nothing! */
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1253,8 +1253,6 @@ enum {
|
|||
NFS_IOHDR_ERROR = 0,
|
||||
NFS_IOHDR_EOF,
|
||||
NFS_IOHDR_REDO,
|
||||
NFS_IOHDR_NEED_COMMIT,
|
||||
NFS_IOHDR_NEED_RESCHED,
|
||||
};
|
||||
|
||||
struct nfs_pgio_header {
|
||||
|
@ -1284,7 +1282,6 @@ struct nfs_pgio_header {
|
|||
*/
|
||||
struct rpc_task task;
|
||||
struct nfs_fattr fattr;
|
||||
struct nfs_writeverf writeverf; /* Used for writes */
|
||||
struct nfs_pgio_args args; /* argument struct */
|
||||
struct nfs_pgio_res res; /* result struct */
|
||||
unsigned long timestamp; /* For lease renewal */
|
||||
|
|
Loading…
Reference in New Issue