The patch titled nfs: remove user_addr and user_count from nfs_direct_req has been added to the -mm tree. Its filename is nfs-remove-user_addr-and-user_count-from-nfs_direct_req.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: nfs: remove user_addr and user_count from nfs_direct_req From: Chuck Lever <cel@xxxxxxxxxx> These fields won't fit the iovec API, and are no longer used for anything but passing a parameter to nfs_direct_read/write_schedule. Make the parameters explicit, and remove the fields from nfs_direct_req. Signed-off-by: Chuck Lever <cel@xxxxxxxxxx> Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- fs/nfs/direct.c | 29 ++++++++--------------------- 1 files changed, 8 insertions(+), 21 deletions(-) diff -puN fs/nfs/direct.c~nfs-remove-user_addr-and-user_count-from-nfs_direct_req fs/nfs/direct.c --- 25/fs/nfs/direct.c~nfs-remove-user_addr-and-user_count-from-nfs_direct_req Fri May 19 11:24:56 2006 +++ 25-akpm/fs/nfs/direct.c Fri May 19 11:24:56 2006 @@ -73,9 +73,6 @@ struct nfs_direct_req { struct nfs_open_context *ctx; /* file open context info */ struct kiocb * iocb; /* controlling i/o request */ struct inode * inode; /* target file of i/o */ - unsigned long user_addr; /* location of user's buffer */ - size_t user_count; /* total bytes to move */ - loff_t pos; /* starting offset in file */ struct page ** pages; /* pages in our buffer */ unsigned int npages; /* count of pages */ @@ -331,19 +328,17 @@ static const struct rpc_call_ops nfs_rea * For each nfs_read_data struct that was allocated on the list, dispatch * an NFS READ operation */ -static void nfs_direct_read_schedule(struct nfs_direct_req *dreq) +static void nfs_direct_read_schedule(struct nfs_direct_req *dreq, unsigned long user_addr, size_t count, loff_t pos) { struct nfs_open_context *ctx = dreq->ctx; struct inode *inode = ctx->dentry->d_inode; struct list_head *list = &dreq->list; struct page **pages = dreq->pages; - size_t count = dreq->user_count; - loff_t pos = dreq->pos; size_t rsize = NFS_SERVER(inode)->rsize; unsigned int curpage, pgbase; curpage = 0; - pgbase = dreq->user_addr & ~PAGE_MASK; + pgbase = user_addr & ~PAGE_MASK; do { struct nfs_read_data *data; size_t bytes; @@ -407,9 +402,6 @@ static ssize_t nfs_direct_read(struct ki if (!dreq) return -ENOMEM; - dreq->user_addr = user_addr; - dreq->user_count = count; - dreq->pos = pos; dreq->pages = pages; dreq->npages = nr_pages; dreq->inode = inode; @@ -419,7 +411,7 @@ static ssize_t nfs_direct_read(struct ki nfs_add_stats(inode, NFSIOS_DIRECTREADBYTES, count); rpc_clnt_sigmask(clnt, &oldset); - nfs_direct_read_schedule(dreq); + nfs_direct_read_schedule(dreq, user_addr, count, pos); result = nfs_direct_wait(dreq); rpc_clnt_sigunmask(clnt, &oldset); @@ -521,8 +513,8 @@ static void nfs_direct_commit_schedule(s data->cred = dreq->ctx->cred; data->args.fh = NFS_FH(data->inode); - data->args.offset = dreq->pos; - data->args.count = dreq->user_count; + data->args.offset = 0; + data->args.count = 0; data->res.count = 0; data->res.fattr = &data->fattr; data->res.verf = &data->verf; @@ -680,19 +672,17 @@ static const struct rpc_call_ops nfs_wri * For each nfs_write_data struct that was allocated on the list, dispatch * an NFS WRITE operation */ -static void nfs_direct_write_schedule(struct nfs_direct_req *dreq, int sync) +static void nfs_direct_write_schedule(struct nfs_direct_req *dreq, unsigned long user_addr, size_t count, loff_t pos, int sync) { struct nfs_open_context *ctx = dreq->ctx; struct inode *inode = ctx->dentry->d_inode; struct list_head *list = &dreq->list; struct page **pages = dreq->pages; - size_t count = dreq->user_count; - loff_t pos = dreq->pos; size_t wsize = NFS_SERVER(inode)->wsize; unsigned int curpage, pgbase; curpage = 0; - pgbase = dreq->user_addr & ~PAGE_MASK; + pgbase = user_addr & ~PAGE_MASK; do { struct nfs_write_data *data; size_t bytes; @@ -761,9 +751,6 @@ static ssize_t nfs_direct_write(struct k if (dreq->commit_data == NULL || count < wsize) sync = FLUSH_STABLE; - dreq->user_addr = user_addr; - dreq->user_count = count; - dreq->pos = pos; dreq->pages = pages; dreq->npages = nr_pages; dreq->inode = inode; @@ -776,7 +763,7 @@ static ssize_t nfs_direct_write(struct k nfs_begin_data_update(inode); rpc_clnt_sigmask(clnt, &oldset); - nfs_direct_write_schedule(dreq, sync); + nfs_direct_write_schedule(dreq, user_addr, count, pos, sync); result = nfs_direct_wait(dreq); rpc_clnt_sigunmask(clnt, &oldset); _ Patches currently in -mm which might be from cel@xxxxxxxxxx are git-nfs.patch nfs-open-code-the-nfs-direct-write-rescheduler.patch nfs-remove-user_addr-and-user_count-from-nfs_direct_req.patch nfs-eliminate-nfs_get_user_pages.patch nfs-alloc-nfs_read-write_data-as-direct-i-o-is-scheduled.patch nfs-check-all-iov-segments-for-correct-memory-access-rights.patch nfs-support-vector-i-o-throughout-the-nfs-direct-i-o-path.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html