Skip to content

Commit

Permalink
cifs: allocate kvec array for cifs_readdata as a separate allocation
Browse files Browse the repository at this point in the history
Eventually, we're going to want to append a list of pages to
cifs_readdata instead of a list of kvecs. To prepare for that, turn
the kvec array allocation into a separate one and just keep a
pointer to it in the readdata.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
  • Loading branch information
Jeff Layton authored and Steve French committed Sep 25, 2012
1 parent 67c1f52 commit f4e49cd
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion fs/cifs/cifsglob.h
Original file line number Diff line number Diff line change
Expand Up @@ -982,7 +982,7 @@ struct cifs_readdata {
int (*marshal_iov) (struct cifs_readdata *rdata,
unsigned int remaining);
unsigned int nr_iov;
struct kvec iov[1];
struct kvec *iov;
};

struct cifs_writedata;
Expand Down
15 changes: 12 additions & 3 deletions fs/cifs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -2410,19 +2410,27 @@ ssize_t cifs_strict_writev(struct kiocb *iocb, const struct iovec *iov,
}

static struct cifs_readdata *
cifs_readdata_alloc(unsigned int nr_vecs, work_func_t complete)
cifs_readdata_alloc(unsigned int nr_pages, work_func_t complete)
{
struct cifs_readdata *rdata;
struct kvec *iov;

rdata = kzalloc(sizeof(*rdata) +
sizeof(struct kvec) * nr_vecs, GFP_KERNEL);
iov = kzalloc(sizeof(*iov) * (nr_pages + 1), GFP_KERNEL);
if (!iov)
return (struct cifs_readdata *)iov;

rdata = kzalloc(sizeof(*rdata), GFP_KERNEL);
if (rdata != NULL) {
kref_init(&rdata->refcount);
INIT_LIST_HEAD(&rdata->list);
init_completion(&rdata->done);
INIT_WORK(&rdata->work, complete);
INIT_LIST_HEAD(&rdata->pages);
rdata->iov = iov;
} else {
kfree(iov);
}

return rdata;
}

Expand All @@ -2435,6 +2443,7 @@ cifs_readdata_release(struct kref *refcount)
if (rdata->cfile)
cifsFileInfo_put(rdata->cfile);

kfree(rdata->iov);
kfree(rdata);
}

Expand Down

0 comments on commit f4e49cd

Please sign in to comment.