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 --- |