write.c (bdc7f021f3a1fade77adf3c2d7f65690566fddfe) | write.c (0773769191d943358a8392fa86abd756d004c4b6) |
---|---|
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 --- 750 unchanged lines hidden (view full) --- 759 case FLUSH_HIGHPRI: 760 return RPC_PRIORITY_HIGH; 761 case FLUSH_LOWPRI: 762 return RPC_PRIORITY_LOW; 763 } 764 return RPC_PRIORITY_NORMAL; 765} 766 | 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 --- 750 unchanged lines hidden (view full) --- 759 case FLUSH_HIGHPRI: 760 return RPC_PRIORITY_HIGH; 761 case FLUSH_LOWPRI: 762 return RPC_PRIORITY_LOW; 763 } 764 return RPC_PRIORITY_NORMAL; 765} 766 |
767static void nfs_execute_write(struct nfs_write_data *data) 768{ 769 struct rpc_clnt *clnt = NFS_CLIENT(data->inode); 770 sigset_t oldset; 771 772 rpc_clnt_sigmask(clnt, &oldset); 773 rpc_execute(&data->task); 774 rpc_clnt_sigunmask(clnt, &oldset); 775} 776 | |
777/* 778 * Set up the argument/result storage required for the RPC call. 779 */ 780static void nfs_write_rpcsetup(struct nfs_page *req, 781 struct nfs_write_data *data, 782 const struct rpc_call_ops *call_ops, 783 unsigned int count, unsigned int offset, 784 int how) 785{ 786 struct inode *inode = req->wb_context->path.dentry->d_inode; 787 int flags = (how & FLUSH_SYNC) ? 0 : RPC_TASK_ASYNC; 788 int priority = flush_task_priority(how); | 767/* 768 * Set up the argument/result storage required for the RPC call. 769 */ 770static void nfs_write_rpcsetup(struct nfs_page *req, 771 struct nfs_write_data *data, 772 const struct rpc_call_ops *call_ops, 773 unsigned int count, unsigned int offset, 774 int how) 775{ 776 struct inode *inode = req->wb_context->path.dentry->d_inode; 777 int flags = (how & FLUSH_SYNC) ? 0 : RPC_TASK_ASYNC; 778 int priority = flush_task_priority(how); |
779 struct rpc_task *task; |
|
789 struct rpc_message msg = { 790 .rpc_argp = &data->args, 791 .rpc_resp = &data->res, 792 .rpc_cred = req->wb_context->cred, 793 }; 794 struct rpc_task_setup task_setup_data = { 795 .rpc_client = NFS_CLIENT(inode), | 780 struct rpc_message msg = { 781 .rpc_argp = &data->args, 782 .rpc_resp = &data->res, 783 .rpc_cred = req->wb_context->cred, 784 }; 785 struct rpc_task_setup task_setup_data = { 786 .rpc_client = NFS_CLIENT(inode), |
787 .task = &data->task, |
|
796 .rpc_message = &msg, 797 .callback_ops = call_ops, 798 .callback_data = data, 799 .flags = flags, 800 .priority = priority, 801 }; 802 803 /* Set up the RPC argument and reply structs --- 18 unchanged lines hidden (view full) --- 822 823 data->res.fattr = &data->fattr; 824 data->res.count = count; 825 data->res.verf = &data->verf; 826 nfs_fattr_init(&data->fattr); 827 828 /* Set up the initial task struct. */ 829 NFS_PROTO(inode)->write_setup(data, &msg); | 788 .rpc_message = &msg, 789 .callback_ops = call_ops, 790 .callback_data = data, 791 .flags = flags, 792 .priority = priority, 793 }; 794 795 /* Set up the RPC argument and reply structs --- 18 unchanged lines hidden (view full) --- 814 815 data->res.fattr = &data->fattr; 816 data->res.count = count; 817 data->res.verf = &data->verf; 818 nfs_fattr_init(&data->fattr); 819 820 /* Set up the initial task struct. */ 821 NFS_PROTO(inode)->write_setup(data, &msg); |
830 rpc_init_task(&data->task, &task_setup_data); | |
831 832 dprintk("NFS: %5u initiated write call " 833 "(req %s/%Ld, %u bytes @ offset %Lu)\n", 834 data->task.tk_pid, 835 inode->i_sb->s_id, 836 (long long)NFS_FILEID(inode), 837 count, 838 (unsigned long long)data->args.offset); 839 | 822 823 dprintk("NFS: %5u initiated write call " 824 "(req %s/%Ld, %u bytes @ offset %Lu)\n", 825 data->task.tk_pid, 826 inode->i_sb->s_id, 827 (long long)NFS_FILEID(inode), 828 count, 829 (unsigned long long)data->args.offset); 830 |
840 nfs_execute_write(data); | 831 task = rpc_run_task(&task_setup_data); 832 if (!IS_ERR(task)) 833 rpc_put_task(task); |
841} 842 843/* 844 * Generate multiple small requests to write out a single 845 * contiguous dirty area on one page. 846 */ 847static int nfs_flush_multi(struct inode *inode, struct list_head *head, unsigned int npages, size_t count, int how) 848{ --- 310 unchanged lines hidden (view full) --- 1159static void nfs_commit_rpcsetup(struct list_head *head, 1160 struct nfs_write_data *data, 1161 int how) 1162{ 1163 struct nfs_page *first = nfs_list_entry(head->next); 1164 struct inode *inode = first->wb_context->path.dentry->d_inode; 1165 int flags = (how & FLUSH_SYNC) ? 0 : RPC_TASK_ASYNC; 1166 int priority = flush_task_priority(how); | 834} 835 836/* 837 * Generate multiple small requests to write out a single 838 * contiguous dirty area on one page. 839 */ 840static int nfs_flush_multi(struct inode *inode, struct list_head *head, unsigned int npages, size_t count, int how) 841{ --- 310 unchanged lines hidden (view full) --- 1152static void nfs_commit_rpcsetup(struct list_head *head, 1153 struct nfs_write_data *data, 1154 int how) 1155{ 1156 struct nfs_page *first = nfs_list_entry(head->next); 1157 struct inode *inode = first->wb_context->path.dentry->d_inode; 1158 int flags = (how & FLUSH_SYNC) ? 0 : RPC_TASK_ASYNC; 1159 int priority = flush_task_priority(how); |
1160 struct rpc_task *task; |
|
1167 struct rpc_message msg = { 1168 .rpc_argp = &data->args, 1169 .rpc_resp = &data->res, 1170 .rpc_cred = first->wb_context->cred, 1171 }; 1172 struct rpc_task_setup task_setup_data = { | 1161 struct rpc_message msg = { 1162 .rpc_argp = &data->args, 1163 .rpc_resp = &data->res, 1164 .rpc_cred = first->wb_context->cred, 1165 }; 1166 struct rpc_task_setup task_setup_data = { |
1167 .task = &data->task, |
|
1173 .rpc_client = NFS_CLIENT(inode), 1174 .rpc_message = &msg, 1175 .callback_ops = &nfs_commit_ops, 1176 .callback_data = data, 1177 .flags = flags, 1178 .priority = priority, 1179 }; 1180 --- 11 unchanged lines hidden (view full) --- 1192 data->args.count = 0; 1193 data->res.count = 0; 1194 data->res.fattr = &data->fattr; 1195 data->res.verf = &data->verf; 1196 nfs_fattr_init(&data->fattr); 1197 1198 /* Set up the initial task struct. */ 1199 NFS_PROTO(inode)->commit_setup(data, &msg); | 1168 .rpc_client = NFS_CLIENT(inode), 1169 .rpc_message = &msg, 1170 .callback_ops = &nfs_commit_ops, 1171 .callback_data = data, 1172 .flags = flags, 1173 .priority = priority, 1174 }; 1175 --- 11 unchanged lines hidden (view full) --- 1187 data->args.count = 0; 1188 data->res.count = 0; 1189 data->res.fattr = &data->fattr; 1190 data->res.verf = &data->verf; 1191 nfs_fattr_init(&data->fattr); 1192 1193 /* Set up the initial task struct. */ 1194 NFS_PROTO(inode)->commit_setup(data, &msg); |
1200 rpc_init_task(&data->task, &task_setup_data); | |
1201 1202 dprintk("NFS: %5u initiated commit call\n", data->task.tk_pid); 1203 | 1195 1196 dprintk("NFS: %5u initiated commit call\n", data->task.tk_pid); 1197 |
1204 nfs_execute_write(data); | 1198 task = rpc_run_task(&task_setup_data); 1199 if (!IS_ERR(task)) 1200 rpc_put_task(task); |
1205} 1206 1207/* 1208 * Commit dirty pages 1209 */ 1210static int 1211nfs_commit_list(struct inode *inode, struct list_head *head, int how) 1212{ --- 336 unchanged lines hidden --- | 1201} 1202 1203/* 1204 * Commit dirty pages 1205 */ 1206static int 1207nfs_commit_list(struct inode *inode, struct list_head *head, int how) 1208{ --- 336 unchanged lines hidden --- |