write.c (d3514abcf5b896a3a66d8b7c960a0018a52ebc2c) write.c (9bce008bae8b57bc7b007bcc2071d1247a527120)
1/*
2 * linux/fs/nfs/write.c
3 *
4 * Write file data over NFS.
5 *
6 * Copyright (C) 1996, 1997, Olaf Kirch <okir@monad.swb.de>
7 */
8

--- 66 unchanged lines hidden (view full) ---

75 if (p) {
76 struct nfs_pgio_header *hdr = &p->header;
77
78 memset(p, 0, sizeof(*p));
79 INIT_LIST_HEAD(&hdr->pages);
80 INIT_LIST_HEAD(&hdr->rpc_list);
81 spin_lock_init(&hdr->lock);
82 atomic_set(&hdr->refcnt, 0);
1/*
2 * linux/fs/nfs/write.c
3 *
4 * Write file data over NFS.
5 *
6 * Copyright (C) 1996, 1997, Olaf Kirch <okir@monad.swb.de>
7 */
8

--- 66 unchanged lines hidden (view full) ---

75 if (p) {
76 struct nfs_pgio_header *hdr = &p->header;
77
78 memset(p, 0, sizeof(*p));
79 INIT_LIST_HEAD(&hdr->pages);
80 INIT_LIST_HEAD(&hdr->rpc_list);
81 spin_lock_init(&hdr->lock);
82 atomic_set(&hdr->refcnt, 0);
83 hdr->verf = &p->verf;
83 }
84 return p;
85}
86
87static struct nfs_write_data *nfs_writedata_alloc(struct nfs_pgio_header *hdr,
88 unsigned int pagecount)
89{
90 struct nfs_write_data *data, *prealloc;

--- 523 unchanged lines hidden (view full) ---

614 nfs_context_set_write_error(req->wb_context, hdr->error);
615 goto remove_req;
616 }
617 if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) {
618 nfs_mark_request_dirty(req);
619 goto next;
620 }
621 if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
84 }
85 return p;
86}
87
88static struct nfs_write_data *nfs_writedata_alloc(struct nfs_pgio_header *hdr,
89 unsigned int pagecount)
90{
91 struct nfs_write_data *data, *prealloc;

--- 523 unchanged lines hidden (view full) ---

615 nfs_context_set_write_error(req->wb_context, hdr->error);
616 goto remove_req;
617 }
618 if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags)) {
619 nfs_mark_request_dirty(req);
620 goto next;
621 }
622 if (test_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags)) {
623 memcpy(&req->wb_verf, hdr->verf, sizeof(req->wb_verf));
622 nfs_mark_request_commit(req, hdr->lseg, &cinfo);
623 goto next;
624 }
625remove_req:
626 nfs_inode_remove_request(req);
627next:
628 nfs_unlock_request(req);
629 nfs_end_page_writeback(req->wb_page);

--- 620 unchanged lines hidden (view full) ---

1250 nfs_writeback_done(task, data);
1251}
1252
1253static void nfs_writeback_release_common(void *calldata)
1254{
1255 struct nfs_write_data *data = calldata;
1256 struct nfs_pgio_header *hdr = data->header;
1257 int status = data->task.tk_status;
624 nfs_mark_request_commit(req, hdr->lseg, &cinfo);
625 goto next;
626 }
627remove_req:
628 nfs_inode_remove_request(req);
629next:
630 nfs_unlock_request(req);
631 nfs_end_page_writeback(req->wb_page);

--- 620 unchanged lines hidden (view full) ---

1252 nfs_writeback_done(task, data);
1253}
1254
1255static void nfs_writeback_release_common(void *calldata)
1256{
1257 struct nfs_write_data *data = calldata;
1258 struct nfs_pgio_header *hdr = data->header;
1259 int status = data->task.tk_status;
1258 struct nfs_page *req = hdr->req;
1259
1260 if ((status >= 0) && nfs_write_need_commit(data)) {
1261 spin_lock(&hdr->lock);
1262 if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags))
1263 ; /* Do nothing */
1264 else if (!test_and_set_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags))
1260
1261 if ((status >= 0) && nfs_write_need_commit(data)) {
1262 spin_lock(&hdr->lock);
1263 if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags))
1264 ; /* Do nothing */
1265 else if (!test_and_set_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags))
1265 memcpy(&req->wb_verf, &data->verf, sizeof(req->wb_verf));
1266 else if (memcmp(&req->wb_verf, &data->verf, sizeof(req->wb_verf)))
1266 memcpy(hdr->verf, &data->verf, sizeof(*hdr->verf));
1267 else if (memcmp(hdr->verf, &data->verf, sizeof(*hdr->verf)))
1267 set_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags);
1268 spin_unlock(&hdr->lock);
1269 }
1270 nfs_writedata_release(data);
1271}
1272
1273static const struct rpc_call_ops nfs_write_common_ops = {
1274 .rpc_call_prepare = nfs_write_prepare,

--- 577 unchanged lines hidden ---
1268 set_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags);
1269 spin_unlock(&hdr->lock);
1270 }
1271 nfs_writedata_release(data);
1272}
1273
1274static const struct rpc_call_ops nfs_write_common_ops = {
1275 .rpc_call_prepare = nfs_write_prepare,

--- 577 unchanged lines hidden ---