On Thu 11-05-17 18:52:06, Jan Kara wrote: > The callback doesn't ever get called. Remove it. Ping David? Honza > > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > Documentation/filesystems/caching/netfs-api.txt | 2 -- > fs/9p/cache.c | 29 ----------------- > fs/afs/cache.c | 43 ------------------------- > fs/ceph/cache.c | 31 ------------------ > fs/cifs/cache.c | 31 ------------------ > fs/nfs/fscache-index.c | 40 ----------------------- > include/linux/fscache.h | 9 ------ > 7 files changed, 185 deletions(-) > > David, am I missing something or is it really dead code? > > diff --git a/Documentation/filesystems/caching/netfs-api.txt b/Documentation/filesystems/caching/netfs-api.txt > index aed6b94160b1..0eb31de3a2c1 100644 > --- a/Documentation/filesystems/caching/netfs-api.txt > +++ b/Documentation/filesystems/caching/netfs-api.txt > @@ -151,8 +151,6 @@ To define an object, a structure of the following type should be filled out: > void (*mark_pages_cached)(void *cookie_netfs_data, > struct address_space *mapping, > struct pagevec *cached_pvec); > - > - void (*now_uncached)(void *cookie_netfs_data); > }; > > This has the following fields: > diff --git a/fs/9p/cache.c b/fs/9p/cache.c > index 103ca5e1267b..64c58eb26159 100644 > --- a/fs/9p/cache.c > +++ b/fs/9p/cache.c > @@ -151,34 +151,6 @@ fscache_checkaux v9fs_cache_inode_check_aux(void *cookie_netfs_data, > return FSCACHE_CHECKAUX_OKAY; > } > > -static void v9fs_cache_inode_now_uncached(void *cookie_netfs_data) > -{ > - struct v9fs_inode *v9inode = cookie_netfs_data; > - struct pagevec pvec; > - pgoff_t first; > - int loop, nr_pages; > - > - pagevec_init(&pvec, 0); > - first = 0; > - > - for (;;) { > - nr_pages = pagevec_lookup(&pvec, v9inode->vfs_inode.i_mapping, > - first, > - PAGEVEC_SIZE - pagevec_count(&pvec)); > - if (!nr_pages) > - break; > - > - for (loop = 0; loop < nr_pages; loop++) > - ClearPageFsCache(pvec.pages[loop]); > - > - first = pvec.pages[nr_pages - 1]->index + 1; > - > - pvec.nr = nr_pages; > - pagevec_release(&pvec); > - cond_resched(); > - } > -} > - > const struct fscache_cookie_def v9fs_cache_inode_index_def = { > .name = "9p.inode", > .type = FSCACHE_COOKIE_TYPE_DATAFILE, > @@ -186,7 +158,6 @@ const struct fscache_cookie_def v9fs_cache_inode_index_def = { > .get_attr = v9fs_cache_inode_get_attr, > .get_aux = v9fs_cache_inode_get_aux, > .check_aux = v9fs_cache_inode_check_aux, > - .now_uncached = v9fs_cache_inode_now_uncached, > }; > > void v9fs_cache_inode_get_cookie(struct inode *inode) > diff --git a/fs/afs/cache.c b/fs/afs/cache.c > index 577763c3d88b..1fe855191261 100644 > --- a/fs/afs/cache.c > +++ b/fs/afs/cache.c > @@ -39,7 +39,6 @@ static uint16_t afs_vnode_cache_get_aux(const void *cookie_netfs_data, > static enum fscache_checkaux afs_vnode_cache_check_aux(void *cookie_netfs_data, > const void *buffer, > uint16_t buflen); > -static void afs_vnode_cache_now_uncached(void *cookie_netfs_data); > > struct fscache_netfs afs_cache_netfs = { > .name = "afs", > @@ -75,7 +74,6 @@ struct fscache_cookie_def afs_vnode_cache_index_def = { > .get_attr = afs_vnode_cache_get_attr, > .get_aux = afs_vnode_cache_get_aux, > .check_aux = afs_vnode_cache_check_aux, > - .now_uncached = afs_vnode_cache_now_uncached, > }; > > /* > @@ -359,44 +357,3 @@ static enum fscache_checkaux afs_vnode_cache_check_aux(void *cookie_netfs_data, > _leave(" = SUCCESS"); > return FSCACHE_CHECKAUX_OKAY; > } > - > -/* > - * indication the cookie is no longer uncached > - * - this function is called when the backing store currently caching a cookie > - * is removed > - * - the netfs should use this to clean up any markers indicating cached pages > - * - this is mandatory for any object that may have data > - */ > -static void afs_vnode_cache_now_uncached(void *cookie_netfs_data) > -{ > - struct afs_vnode *vnode = cookie_netfs_data; > - struct pagevec pvec; > - pgoff_t first; > - int loop, nr_pages; > - > - _enter("{%x,%x,%Lx}", > - vnode->fid.vnode, vnode->fid.unique, vnode->status.data_version); > - > - pagevec_init(&pvec, 0); > - first = 0; > - > - for (;;) { > - /* grab a bunch of pages to clean */ > - nr_pages = pagevec_lookup(&pvec, vnode->vfs_inode.i_mapping, > - first, > - PAGEVEC_SIZE - pagevec_count(&pvec)); > - if (!nr_pages) > - break; > - > - for (loop = 0; loop < nr_pages; loop++) > - ClearPageFsCache(pvec.pages[loop]); > - > - first = pvec.pages[nr_pages - 1]->index + 1; > - > - pvec.nr = nr_pages; > - pagevec_release(&pvec); > - cond_resched(); > - } > - > - _leave(""); > -} > diff --git a/fs/ceph/cache.c b/fs/ceph/cache.c > index 4e7421caf380..edb86ac34051 100644 > --- a/fs/ceph/cache.c > +++ b/fs/ceph/cache.c > @@ -137,36 +137,6 @@ static enum fscache_checkaux ceph_fscache_inode_check_aux( > return FSCACHE_CHECKAUX_OKAY; > } > > -static void ceph_fscache_inode_now_uncached(void* cookie_netfs_data) > -{ > - struct ceph_inode_info* ci = cookie_netfs_data; > - struct pagevec pvec; > - pgoff_t first; > - int loop, nr_pages; > - > - pagevec_init(&pvec, 0); > - first = 0; > - > - dout("ceph inode 0x%p now uncached", ci); > - > - while (1) { > - nr_pages = pagevec_lookup(&pvec, ci->vfs_inode.i_mapping, first, > - PAGEVEC_SIZE - pagevec_count(&pvec)); > - > - if (!nr_pages) > - break; > - > - for (loop = 0; loop < nr_pages; loop++) > - ClearPageFsCache(pvec.pages[loop]); > - > - first = pvec.pages[nr_pages - 1]->index + 1; > - > - pvec.nr = nr_pages; > - pagevec_release(&pvec); > - cond_resched(); > - } > -} > - > static const struct fscache_cookie_def ceph_fscache_inode_object_def = { > .name = "CEPH.inode", > .type = FSCACHE_COOKIE_TYPE_DATAFILE, > @@ -174,7 +144,6 @@ static const struct fscache_cookie_def ceph_fscache_inode_object_def = { > .get_attr = ceph_fscache_inode_get_attr, > .get_aux = ceph_fscache_inode_get_aux, > .check_aux = ceph_fscache_inode_check_aux, > - .now_uncached = ceph_fscache_inode_now_uncached, > }; > > void ceph_fscache_register_inode_cookie(struct inode *inode) > diff --git a/fs/cifs/cache.c b/fs/cifs/cache.c > index 6c665bf4a27c..2c14020e5e1d 100644 > --- a/fs/cifs/cache.c > +++ b/fs/cifs/cache.c > @@ -292,36 +292,6 @@ fscache_checkaux cifs_fscache_inode_check_aux(void *cookie_netfs_data, > return FSCACHE_CHECKAUX_OKAY; > } > > -static void cifs_fscache_inode_now_uncached(void *cookie_netfs_data) > -{ > - struct cifsInodeInfo *cifsi = cookie_netfs_data; > - struct pagevec pvec; > - pgoff_t first; > - int loop, nr_pages; > - > - pagevec_init(&pvec, 0); > - first = 0; > - > - cifs_dbg(FYI, "%s: cifs inode 0x%p now uncached\n", __func__, cifsi); > - > - for (;;) { > - nr_pages = pagevec_lookup(&pvec, > - cifsi->vfs_inode.i_mapping, first, > - PAGEVEC_SIZE - pagevec_count(&pvec)); > - if (!nr_pages) > - break; > - > - for (loop = 0; loop < nr_pages; loop++) > - ClearPageFsCache(pvec.pages[loop]); > - > - first = pvec.pages[nr_pages - 1]->index + 1; > - > - pvec.nr = nr_pages; > - pagevec_release(&pvec); > - cond_resched(); > - } > -} > - > const struct fscache_cookie_def cifs_fscache_inode_object_def = { > .name = "CIFS.uniqueid", > .type = FSCACHE_COOKIE_TYPE_DATAFILE, > @@ -329,5 +299,4 @@ const struct fscache_cookie_def cifs_fscache_inode_object_def = { > .get_attr = cifs_fscache_inode_get_attr, > .get_aux = cifs_fscache_inode_get_aux, > .check_aux = cifs_fscache_inode_check_aux, > - .now_uncached = cifs_fscache_inode_now_uncached, > }; > diff --git a/fs/nfs/fscache-index.c b/fs/nfs/fscache-index.c > index 777b055063f6..3025fe8584a0 100644 > --- a/fs/nfs/fscache-index.c > +++ b/fs/nfs/fscache-index.c > @@ -252,45 +252,6 @@ enum fscache_checkaux nfs_fscache_inode_check_aux(void *cookie_netfs_data, > } > > /* > - * Indication from FS-Cache that the cookie is no longer cached > - * - This function is called when the backing store currently caching a cookie > - * is removed > - * - The netfs should use this to clean up any markers indicating cached pages > - * - This is mandatory for any object that may have data > - */ > -static void nfs_fscache_inode_now_uncached(void *cookie_netfs_data) > -{ > - struct nfs_inode *nfsi = cookie_netfs_data; > - struct pagevec pvec; > - pgoff_t first; > - int loop, nr_pages; > - > - pagevec_init(&pvec, 0); > - first = 0; > - > - dprintk("NFS: nfs_inode_now_uncached: nfs_inode 0x%p\n", nfsi); > - > - for (;;) { > - /* grab a bunch of pages to unmark */ > - nr_pages = pagevec_lookup(&pvec, > - nfsi->vfs_inode.i_mapping, > - first, > - PAGEVEC_SIZE - pagevec_count(&pvec)); > - if (!nr_pages) > - break; > - > - for (loop = 0; loop < nr_pages; loop++) > - ClearPageFsCache(pvec.pages[loop]); > - > - first = pvec.pages[nr_pages - 1]->index + 1; > - > - pvec.nr = nr_pages; > - pagevec_release(&pvec); > - cond_resched(); > - } > -} > - > -/* > * Get an extra reference on a read context. > * - This function can be absent if the completion function doesn't require a > * context. > @@ -330,7 +291,6 @@ const struct fscache_cookie_def nfs_fscache_inode_object_def = { > .get_attr = nfs_fscache_inode_get_attr, > .get_aux = nfs_fscache_inode_get_aux, > .check_aux = nfs_fscache_inode_check_aux, > - .now_uncached = nfs_fscache_inode_now_uncached, > .get_context = nfs_fh_get_context, > .put_context = nfs_fh_put_context, > }; > diff --git a/include/linux/fscache.h b/include/linux/fscache.h > index 115bb81912cc..f4ff47d4a893 100644 > --- a/include/linux/fscache.h > +++ b/include/linux/fscache.h > @@ -143,15 +143,6 @@ struct fscache_cookie_def { > void (*mark_page_cached)(void *cookie_netfs_data, > struct address_space *mapping, > struct page *page); > - > - /* indicate the cookie is no longer cached > - * - this function is called when the backing store currently caching > - * a cookie is removed > - * - the netfs should use this to clean up any markers indicating > - * cached pages > - * - this is mandatory for any object that may have data > - */ > - void (*now_uncached)(void *cookie_netfs_data); > }; > > /* > -- > 2.12.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR -- Linux-cachefs mailing list Linux-cachefs@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cachefs