Skip to content

Commit

Permalink
fscache: remove unused ->now_uncached callback
Browse files Browse the repository at this point in the history
Patch series "Ranged pagevec lookup", v2.

In this series I make pagevec_lookup() update the index (to be
consistent with pagevec_lookup_tag() and also as a preparation for
ranged lookups), provide ranged variant of pagevec_lookup() and use it
in places where it makes sense.  This not only removes some common code
but is also a measurable performance win for some use cases (see patch
4/10) where radix tree is sparse and searching & grabing of a page after
the end of the range has measurable overhead.

This patch (of 10):

The callback doesn't ever get called.  Remove it.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Jan Kara <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
jankara authored and torvalds committed Sep 7, 2017
1 parent db73ee0 commit 26b433d
Show file tree
Hide file tree
Showing 7 changed files with 0 additions and 185 deletions.
2 changes: 0 additions & 2 deletions Documentation/filesystems/caching/netfs-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
29 changes: 0 additions & 29 deletions fs/9p/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,42 +151,13 @@ 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,
.get_key = v9fs_cache_inode_get_key,
.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)
Expand Down
43 changes: 0 additions & 43 deletions fs/afs/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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,
};

/*
Expand Down Expand Up @@ -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("");
}
31 changes: 0 additions & 31 deletions fs/ceph/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -194,44 +194,13 @@ 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,
.get_key = ceph_fscache_inode_get_key,
.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)
Expand Down
31 changes: 0 additions & 31 deletions fs/cifs/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -292,42 +292,11 @@ 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,
.get_key = cifs_fscache_inode_get_key,
.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,
};
40 changes: 0 additions & 40 deletions fs/nfs/fscache-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,45 +251,6 @@ enum fscache_checkaux nfs_fscache_inode_check_aux(void *cookie_netfs_data,
return FSCACHE_CHECKAUX_OKAY;
}

/*
* 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
Expand Down Expand Up @@ -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,
};
9 changes: 0 additions & 9 deletions include/linux/fscache.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};

/*
Expand Down

0 comments on commit 26b433d

Please sign in to comment.