sure. On Mon, Feb 14, 2011 at 12:27 PM, Fred Isaman <iisaman@xxxxxxxxxx> wrote: > > On Feb 14, 2011, at 12:22 PM, Andy Adamson wrote: > >> Since I'm the author for the read version of this code, I'll raise my hand to be the author for this version. >> >> -->Andy >> > > OK, do you wan't patch 5 as well?...they were both split from the same "pNFS Team" patch. > > Fred > >> On Feb 11, 2011, at 11:54 AM, Fred Isaman wrote: >> >>> From: The pNFS Team <linux-nfs@xxxxxxxxxxxxxxx> >>> >>> Reorder nfs_write_rpcsetup, preparing for a pnfs switch. >>> >>> FIXME: these signoffs are ridiculous for this simple patch. >>> Lets just pick an author and be done with it. >>> >>> Reported-by: Alexandros Batsakis <batsakis@xxxxxxxxxx> >>> Signed-off-by: Andy Adamson <andros@xxxxxxxxxxxxxx> >>> Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx> >>> Signed-off-by: Dean Hildebrand <dhildeb@xxxxxxxxxx> >>> Signed-off-by: Fred Isaman <iisaman@xxxxxxxxxxxxxx> >>> Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxxxx> >>> Signed-off-by: Mike Sager <sager@xxxxxxxxxx> >>> Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@xxxxxxxxxx> >>> Signed-off-by: Tao Guo <guotao@xxxxxxxxxxxx> >>> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> >>> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> >>> Signed-off-by: Fred Isaman <iisaman@xxxxxxxxxx> >>> --- >>> fs/nfs/write.c | 82 +++++++++++++++++++++++++++++++------------------------ >>> 1 files changed, 46 insertions(+), 36 deletions(-) >>> >>> diff --git a/fs/nfs/write.c b/fs/nfs/write.c >>> index aca0268..5604854 100644 >>> --- a/fs/nfs/write.c >>> +++ b/fs/nfs/write.c >>> @@ -782,25 +782,21 @@ static int flush_task_priority(int how) >>> return RPC_PRIORITY_NORMAL; >>> } >>> >>> -/* >>> - * Set up the argument/result storage required for the RPC call. >>> - */ >>> -static int nfs_write_rpcsetup(struct nfs_page *req, >>> - struct nfs_write_data *data, >>> - const struct rpc_call_ops *call_ops, >>> - unsigned int count, unsigned int offset, >>> - int how) >>> +static int nfs_initiate_write(struct nfs_write_data *data, >>> + struct rpc_clnt *clnt, >>> + const struct rpc_call_ops *call_ops, >>> + int how) >>> { >>> - struct inode *inode = req->wb_context->path.dentry->d_inode; >>> + struct inode *inode = data->inode; >>> int priority = flush_task_priority(how); >>> struct rpc_task *task; >>> struct rpc_message msg = { >>> .rpc_argp = &data->args, >>> .rpc_resp = &data->res, >>> - .rpc_cred = req->wb_context->cred, >>> + .rpc_cred = data->cred, >>> }; >>> struct rpc_task_setup task_setup_data = { >>> - .rpc_client = NFS_CLIENT(inode), >>> + .rpc_client = clnt, >>> .task = &data->task, >>> .rpc_message = &msg, >>> .callback_ops = call_ops, >>> @@ -811,12 +807,49 @@ static int nfs_write_rpcsetup(struct nfs_page *req, >>> }; >>> int ret = 0; >>> >>> + /* Set up the initial task struct. */ >>> + NFS_PROTO(inode)->write_setup(data, &msg); >>> + >>> + dprintk("NFS: %5u initiated write call " >>> + "(req %s/%lld, %u bytes @ offset %llu)\n", >>> + data->task.tk_pid, >>> + inode->i_sb->s_id, >>> + (long long)NFS_FILEID(inode), >>> + data->args.count, >>> + (unsigned long long)data->args.offset); >>> + >>> + task = rpc_run_task(&task_setup_data); >>> + if (IS_ERR(task)) { >>> + ret = PTR_ERR(task); >>> + goto out; >>> + } >>> + if (how & FLUSH_SYNC) { >>> + ret = rpc_wait_for_completion_task(task); >>> + if (ret == 0) >>> + ret = task->tk_status; >>> + } >>> + rpc_put_task(task); >>> +out: >>> + return ret; >>> +} >>> + >>> +/* >>> + * Set up the argument/result storage required for the RPC call. >>> + */ >>> +static int nfs_write_rpcsetup(struct nfs_page *req, >>> + struct nfs_write_data *data, >>> + const struct rpc_call_ops *call_ops, >>> + unsigned int count, unsigned int offset, >>> + int how) >>> +{ >>> + struct inode *inode = req->wb_context->path.dentry->d_inode; >>> + >>> /* Set up the RPC argument and reply structs >>> * NB: take care not to mess about with data->commit et al. */ >>> >>> data->req = req; >>> data->inode = inode = req->wb_context->path.dentry->d_inode; >>> - data->cred = msg.rpc_cred; >>> + data->cred = req->wb_context->cred; >>> >>> data->args.fh = NFS_FH(inode); >>> data->args.offset = req_offset(req) + offset; >>> @@ -837,30 +870,7 @@ static int nfs_write_rpcsetup(struct nfs_page *req, >>> data->res.verf = &data->verf; >>> nfs_fattr_init(&data->fattr); >>> >>> - /* Set up the initial task struct. */ >>> - NFS_PROTO(inode)->write_setup(data, &msg); >>> - >>> - dprintk("NFS: %5u initiated write call " >>> - "(req %s/%lld, %u bytes @ offset %llu)\n", >>> - data->task.tk_pid, >>> - inode->i_sb->s_id, >>> - (long long)NFS_FILEID(inode), >>> - count, >>> - (unsigned long long)data->args.offset); >>> - >>> - task = rpc_run_task(&task_setup_data); >>> - if (IS_ERR(task)) { >>> - ret = PTR_ERR(task); >>> - goto out; >>> - } >>> - if (how & FLUSH_SYNC) { >>> - ret = rpc_wait_for_completion_task(task); >>> - if (ret == 0) >>> - ret = task->tk_status; >>> - } >>> - rpc_put_task(task); >>> -out: >>> - return ret; >>> + return nfs_initiate_write(data, NFS_CLIENT(inode), call_ops, how); >>> } >>> >>> /* If a nfs_flush_* function fails, it should remove reqs from @head and >>> -- >>> 1.7.2.1 >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html