Disable use of the fscache I/O routined by the AFS filesystem.  It's about to
transition to passing iov_iters down and fscache is about to have its I/O path
to use iov_iter, so all that needs to change.

Signed-off-by: David Howells <dhowe...@redhat.com>
---

 fs/afs/file.c  |  196 ++++++++++----------------------------------------------
 fs/afs/write.c |   10 ---
 2 files changed, 35 insertions(+), 171 deletions(-)

diff --git a/fs/afs/file.c b/fs/afs/file.c
index 8415733f7bc1..f0cca37f2da8 100644
--- a/fs/afs/file.c
+++ b/fs/afs/file.c
@@ -202,24 +202,6 @@ void afs_put_read(struct afs_read *req)
        }
 }
 
-#ifdef CONFIG_AFS_FSCACHE
-/*
- * deal with notification that a page was read from the cache
- */
-static void afs_file_readpage_read_complete(struct page *page,
-                                           void *data,
-                                           int error)
-{
-       _enter("%p,%p,%d", page, data, error);
-
-       /* if the read completes with an error, we just unlock the page and let
-        * the VM reissue the readpage */
-       if (!error)
-               SetPageUptodate(page);
-       unlock_page(page);
-}
-#endif
-
 /*
  * Fetch file data from the volume.
  */
@@ -285,89 +267,46 @@ int afs_page_filler(void *data, struct page *page)
        if (test_bit(AFS_VNODE_DELETED, &vnode->flags))
                goto error;
 
-       /* is it cached? */
-#ifdef CONFIG_AFS_FSCACHE
-       ret = fscache_read_or_alloc_page(vnode->cache,
-                                        page,
-                                        afs_file_readpage_read_complete,
-                                        NULL,
-                                        GFP_KERNEL);
-#else
-       ret = -ENOBUFS;
-#endif
-       switch (ret) {
-               /* read BIO submitted (page in cache) */
-       case 0:
-               break;
-
-               /* page not yet cached */
-       case -ENODATA:
-               _debug("cache said ENODATA");
-               goto go_on;
-
-               /* page will not be cached */
-       case -ENOBUFS:
-               _debug("cache said ENOBUFS");
-
-               /* fall through */
-       default:
-       go_on:
-               req = kzalloc(struct_size(req, array, 1), GFP_KERNEL);
-               if (!req)
-                       goto enomem;
-
-               /* We request a full page.  If the page is a partial one at the
-                * end of the file, the server will return a short read and the
-                * unmarshalling code will clear the unfilled space.
-                */
-               refcount_set(&req->usage, 1);
-               req->pos = (loff_t)page->index << PAGE_SHIFT;
-               req->len = PAGE_SIZE;
-               req->nr_pages = 1;
-               req->pages = req->array;
-               req->pages[0] = page;
-               get_page(page);
-
-               /* read the contents of the file from the server into the
-                * page */
-               ret = afs_fetch_data(vnode, key, req);
-               afs_put_read(req);
-
-               if (ret < 0) {
-                       if (ret == -ENOENT) {
-                               _debug("got NOENT from server"
-                                      " - marking file deleted and stale");
-                               set_bit(AFS_VNODE_DELETED, &vnode->flags);
-                               ret = -ESTALE;
-                       }
-
-#ifdef CONFIG_AFS_FSCACHE
-                       fscache_uncache_page(vnode->cache, page);
-#endif
-                       BUG_ON(PageFsCache(page));
-
-                       if (ret == -EINTR ||
-                           ret == -ENOMEM ||
-                           ret == -ERESTARTSYS ||
-                           ret == -EAGAIN)
-                               goto error;
-                       goto io_error;
-               }
+       req = kzalloc(struct_size(req, array, 1), GFP_KERNEL);
+       if (!req)
+               goto enomem;
+
+       /* We request a full page.  If the page is a partial one at the
+        * end of the file, the server will return a short read and the
+        * unmarshalling code will clear the unfilled space.
+        */
+       refcount_set(&req->usage, 1);
+       req->pos = (loff_t)page->index << PAGE_SHIFT;
+       req->len = PAGE_SIZE;
+       req->nr_pages = 1;
+       req->pages = req->array;
+       req->pages[0] = page;
+       get_page(page);
 
-               SetPageUptodate(page);
+       /* read the contents of the file from the server into the
+        * page */
+       ret = afs_fetch_data(vnode, key, req);
+       afs_put_read(req);
 
-               /* send the page to the cache */
-#ifdef CONFIG_AFS_FSCACHE
-               if (PageFsCache(page) &&
-                   fscache_write_page(vnode->cache, page, vnode->status.size,
-                                      GFP_KERNEL) != 0) {
-                       fscache_uncache_page(vnode->cache, page);
-                       BUG_ON(PageFsCache(page));
+       if (ret < 0) {
+               if (ret == -ENOENT) {
+                       _debug("got NOENT from server"
+                              " - marking file deleted and stale");
+                       set_bit(AFS_VNODE_DELETED, &vnode->flags);
+                       ret = -ESTALE;
                }
-#endif
-               unlock_page(page);
+
+               if (ret == -EINTR ||
+                   ret == -ENOMEM ||
+                   ret == -ERESTARTSYS ||
+                   ret == -EAGAIN)
+                       goto error;
+               goto io_error;
        }
 
+       SetPageUptodate(page);
+       unlock_page(page);
+
        _leave(" = 0");
        return 0;
 
@@ -413,23 +352,10 @@ static int afs_readpage(struct file *file, struct page 
*page)
  */
 static void afs_readpages_page_done(struct afs_read *req)
 {
-#ifdef CONFIG_AFS_FSCACHE
-       struct afs_vnode *vnode = req->vnode;
-#endif
        struct page *page = req->pages[req->index];
 
        req->pages[req->index] = NULL;
        SetPageUptodate(page);
-
-       /* send the page to the cache */
-#ifdef CONFIG_AFS_FSCACHE
-       if (PageFsCache(page) &&
-           fscache_write_page(vnode->cache, page, vnode->status.size,
-                              GFP_KERNEL) != 0) {
-               fscache_uncache_page(vnode->cache, page);
-               BUG_ON(PageFsCache(page));
-       }
-#endif
        unlock_page(page);
        put_page(page);
 }
@@ -488,9 +414,6 @@ static int afs_readpages_one(struct file *file, struct 
address_space *mapping,
                index = page->index;
                if (add_to_page_cache_lru(page, mapping, index,
                                          readahead_gfp_mask(mapping))) {
-#ifdef CONFIG_AFS_FSCACHE
-                       fscache_uncache_page(vnode->cache, page);
-#endif
                        put_page(page);
                        break;
                }
@@ -523,9 +446,6 @@ static int afs_readpages_one(struct file *file, struct 
address_space *mapping,
        for (i = 0; i < req->nr_pages; i++) {
                page = req->pages[i];
                if (page) {
-#ifdef CONFIG_AFS_FSCACHE
-                       fscache_uncache_page(vnode->cache, page);
-#endif
                        SetPageError(page);
                        unlock_page(page);
                }
@@ -557,37 +477,6 @@ static int afs_readpages(struct file *file, struct 
address_space *mapping,
        }
 
        /* attempt to read as many of the pages as possible */
-#ifdef CONFIG_AFS_FSCACHE
-       ret = fscache_read_or_alloc_pages(vnode->cache,
-                                         mapping,
-                                         pages,
-                                         &nr_pages,
-                                         afs_file_readpage_read_complete,
-                                         NULL,
-                                         mapping_gfp_mask(mapping));
-#else
-       ret = -ENOBUFS;
-#endif
-
-       switch (ret) {
-               /* all pages are being read from the cache */
-       case 0:
-               BUG_ON(!list_empty(pages));
-               BUG_ON(nr_pages != 0);
-               _leave(" = 0 [reading all]");
-               return 0;
-
-               /* there were pages that couldn't be read from the cache */
-       case -ENODATA:
-       case -ENOBUFS:
-               break;
-
-               /* other error */
-       default:
-               _leave(" = %d", ret);
-               return ret;
-       }
-
        while (!list_empty(pages)) {
                ret = afs_readpages_one(file, mapping, pages);
                if (ret < 0)
@@ -615,14 +504,6 @@ static void afs_invalidatepage(struct page *page, unsigned 
int offset,
 
        /* we clean up only if the entire page is being invalidated */
        if (offset == 0 && length == PAGE_SIZE) {
-#ifdef CONFIG_AFS_FSCACHE
-               if (PageFsCache(page)) {
-                       struct afs_vnode *vnode = AFS_FS_I(page->mapping->host);
-                       fscache_wait_on_page_write(vnode->cache, page);
-                       fscache_uncache_page(vnode->cache, page);
-               }
-#endif
-
                if (PagePrivate(page)) {
                        priv = page_private(page);
                        trace_afs_page_dirty(vnode, tracepoint_string("inval"),
@@ -650,13 +531,6 @@ static int afs_releasepage(struct page *page, gfp_t 
gfp_flags)
 
        /* deny if page is being written to the cache and the caller hasn't
         * elected to wait */
-#ifdef CONFIG_AFS_FSCACHE
-       if (!fscache_maybe_release_page(vnode->cache, page, gfp_flags)) {
-               _leave(" = F [cache busy]");
-               return 0;
-       }
-#endif
-
        if (PagePrivate(page)) {
                priv = page_private(page);
                trace_afs_page_dirty(vnode, tracepoint_string("rel"),
diff --git a/fs/afs/write.c b/fs/afs/write.c
index cb76566763db..25786237485a 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -788,9 +788,6 @@ vm_fault_t afs_page_mkwrite(struct vm_fault *vmf)
        /* Wait for the page to be written to the cache before we allow it to
         * be modified.  We then assume the entire page will need writing back.
         */
-#ifdef CONFIG_AFS_FSCACHE
-       fscache_wait_on_page_write(vnode->cache, vmf->page);
-#endif
 
        if (PageWriteback(vmf->page) &&
            wait_on_page_bit_killable(vmf->page, PG_writeback) < 0)
@@ -875,12 +872,5 @@ int afs_launder_page(struct page *page)
                             page->index, priv);
        set_page_private(page, 0);
        ClearPagePrivate(page);
-
-#ifdef CONFIG_AFS_FSCACHE
-       if (PageFsCache(page)) {
-               fscache_wait_on_page_write(vnode->cache, page);
-               fscache_uncache_page(vnode->cache, page);
-       }
-#endif
        return ret;
 }


Reply via email to