From 0c8014feab3f91bd0a97ee9d9a218fa658858199 Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Fri, 23 Mar 2012 14:40:55 -0400 Subject: [PATCH] --- yaml --- r: 297973 b: refs/heads/master c: c2e8764009a0245fd24fcd2a63ffbf64236af016 h: refs/heads/master i: 297971: 38fea7d3a1d5f2c2189511f7870839d703030116 v: v3 --- [refs] | 2 +- trunk/fs/cifs/cifsproto.h | 4 +++- trunk/fs/cifs/cifssmb.c | 6 +++--- trunk/fs/cifs/file.c | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 9e5162a51f4d..bb8d072f70e4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fe5f5d2e908957392aebbb852a6fb22885860d4b +refs/heads/master: c2e8764009a0245fd24fcd2a63ffbf64236af016 diff --git a/trunk/fs/cifs/cifsproto.h b/trunk/fs/cifs/cifsproto.h index 9e68340c7306..cbf09cdd42a7 100644 --- a/trunk/fs/cifs/cifsproto.h +++ b/trunk/fs/cifs/cifsproto.h @@ -495,7 +495,9 @@ struct cifs_writedata { }; int cifs_async_writev(struct cifs_writedata *wdata); -struct cifs_writedata *cifs_writedata_alloc(unsigned int nr_pages); +void cifs_writev_complete(struct work_struct *work); +struct cifs_writedata *cifs_writedata_alloc(unsigned int nr_pages, + work_func_t complete); void cifs_writedata_release(struct kref *refcount); #endif /* _CIFSPROTO_H */ diff --git a/trunk/fs/cifs/cifssmb.c b/trunk/fs/cifs/cifssmb.c index 61922142cf0d..21ff4bff6c89 100644 --- a/trunk/fs/cifs/cifssmb.c +++ b/trunk/fs/cifs/cifssmb.c @@ -2035,7 +2035,7 @@ cifs_writev_requeue(struct cifs_writedata *wdata) kref_put(&wdata->refcount, cifs_writedata_release); } -static void +void cifs_writev_complete(struct work_struct *work) { struct cifs_writedata *wdata = container_of(work, @@ -2065,7 +2065,7 @@ cifs_writev_complete(struct work_struct *work) } struct cifs_writedata * -cifs_writedata_alloc(unsigned int nr_pages) +cifs_writedata_alloc(unsigned int nr_pages, work_func_t complete) { struct cifs_writedata *wdata; @@ -2079,7 +2079,7 @@ cifs_writedata_alloc(unsigned int nr_pages) wdata = kzalloc(sizeof(*wdata) + sizeof(struct page *) * (nr_pages - 1), GFP_NOFS); if (wdata != NULL) { - INIT_WORK(&wdata->work, cifs_writev_complete); + INIT_WORK(&wdata->work, complete); kref_init(&wdata->refcount); } return wdata; diff --git a/trunk/fs/cifs/file.c b/trunk/fs/cifs/file.c index 5fedf6cb5a56..f624c4d4a393 100644 --- a/trunk/fs/cifs/file.c +++ b/trunk/fs/cifs/file.c @@ -1684,7 +1684,8 @@ static int cifs_writepages(struct address_space *mapping, tofind = min((cifs_sb->wsize / PAGE_CACHE_SIZE) - 1, end - index) + 1; - wdata = cifs_writedata_alloc((unsigned int)tofind); + wdata = cifs_writedata_alloc((unsigned int)tofind, + cifs_writev_complete); if (!wdata) { rc = -ENOMEM; break;