fscache: remove unused ->now_uncached callback
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/20170726114704.7626-2-jack@suse.cz Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
db73ee0d46
commit
26b433d0da
|
@ -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,
|
void (*mark_pages_cached)(void *cookie_netfs_data,
|
||||||
struct address_space *mapping,
|
struct address_space *mapping,
|
||||||
struct pagevec *cached_pvec);
|
struct pagevec *cached_pvec);
|
||||||
|
|
||||||
void (*now_uncached)(void *cookie_netfs_data);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
This has the following fields:
|
This has the following fields:
|
||||||
|
|
|
@ -151,34 +151,6 @@ fscache_checkaux v9fs_cache_inode_check_aux(void *cookie_netfs_data,
|
||||||
return FSCACHE_CHECKAUX_OKAY;
|
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 = {
|
const struct fscache_cookie_def v9fs_cache_inode_index_def = {
|
||||||
.name = "9p.inode",
|
.name = "9p.inode",
|
||||||
.type = FSCACHE_COOKIE_TYPE_DATAFILE,
|
.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_attr = v9fs_cache_inode_get_attr,
|
||||||
.get_aux = v9fs_cache_inode_get_aux,
|
.get_aux = v9fs_cache_inode_get_aux,
|
||||||
.check_aux = v9fs_cache_inode_check_aux,
|
.check_aux = v9fs_cache_inode_check_aux,
|
||||||
.now_uncached = v9fs_cache_inode_now_uncached,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void v9fs_cache_inode_get_cookie(struct inode *inode)
|
void v9fs_cache_inode_get_cookie(struct inode *inode)
|
||||||
|
|
|
@ -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,
|
static enum fscache_checkaux afs_vnode_cache_check_aux(void *cookie_netfs_data,
|
||||||
const void *buffer,
|
const void *buffer,
|
||||||
uint16_t buflen);
|
uint16_t buflen);
|
||||||
static void afs_vnode_cache_now_uncached(void *cookie_netfs_data);
|
|
||||||
|
|
||||||
struct fscache_netfs afs_cache_netfs = {
|
struct fscache_netfs afs_cache_netfs = {
|
||||||
.name = "afs",
|
.name = "afs",
|
||||||
|
@ -75,7 +74,6 @@ struct fscache_cookie_def afs_vnode_cache_index_def = {
|
||||||
.get_attr = afs_vnode_cache_get_attr,
|
.get_attr = afs_vnode_cache_get_attr,
|
||||||
.get_aux = afs_vnode_cache_get_aux,
|
.get_aux = afs_vnode_cache_get_aux,
|
||||||
.check_aux = afs_vnode_cache_check_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");
|
_leave(" = SUCCESS");
|
||||||
return FSCACHE_CHECKAUX_OKAY;
|
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("");
|
|
||||||
}
|
|
||||||
|
|
|
@ -194,36 +194,6 @@ static enum fscache_checkaux ceph_fscache_inode_check_aux(
|
||||||
return FSCACHE_CHECKAUX_OKAY;
|
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 = {
|
static const struct fscache_cookie_def ceph_fscache_inode_object_def = {
|
||||||
.name = "CEPH.inode",
|
.name = "CEPH.inode",
|
||||||
.type = FSCACHE_COOKIE_TYPE_DATAFILE,
|
.type = FSCACHE_COOKIE_TYPE_DATAFILE,
|
||||||
|
@ -231,7 +201,6 @@ static const struct fscache_cookie_def ceph_fscache_inode_object_def = {
|
||||||
.get_attr = ceph_fscache_inode_get_attr,
|
.get_attr = ceph_fscache_inode_get_attr,
|
||||||
.get_aux = ceph_fscache_inode_get_aux,
|
.get_aux = ceph_fscache_inode_get_aux,
|
||||||
.check_aux = ceph_fscache_inode_check_aux,
|
.check_aux = ceph_fscache_inode_check_aux,
|
||||||
.now_uncached = ceph_fscache_inode_now_uncached,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void ceph_fscache_register_inode_cookie(struct inode *inode)
|
void ceph_fscache_register_inode_cookie(struct inode *inode)
|
||||||
|
|
|
@ -292,36 +292,6 @@ fscache_checkaux cifs_fscache_inode_check_aux(void *cookie_netfs_data,
|
||||||
return FSCACHE_CHECKAUX_OKAY;
|
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 = {
|
const struct fscache_cookie_def cifs_fscache_inode_object_def = {
|
||||||
.name = "CIFS.uniqueid",
|
.name = "CIFS.uniqueid",
|
||||||
.type = FSCACHE_COOKIE_TYPE_DATAFILE,
|
.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_attr = cifs_fscache_inode_get_attr,
|
||||||
.get_aux = cifs_fscache_inode_get_aux,
|
.get_aux = cifs_fscache_inode_get_aux,
|
||||||
.check_aux = cifs_fscache_inode_check_aux,
|
.check_aux = cifs_fscache_inode_check_aux,
|
||||||
.now_uncached = cifs_fscache_inode_now_uncached,
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -251,45 +251,6 @@ enum fscache_checkaux nfs_fscache_inode_check_aux(void *cookie_netfs_data,
|
||||||
return FSCACHE_CHECKAUX_OKAY;
|
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.
|
* Get an extra reference on a read context.
|
||||||
* - This function can be absent if the completion function doesn't require a
|
* - This function can be absent if the completion function doesn't require a
|
||||||
|
@ -330,7 +291,6 @@ const struct fscache_cookie_def nfs_fscache_inode_object_def = {
|
||||||
.get_attr = nfs_fscache_inode_get_attr,
|
.get_attr = nfs_fscache_inode_get_attr,
|
||||||
.get_aux = nfs_fscache_inode_get_aux,
|
.get_aux = nfs_fscache_inode_get_aux,
|
||||||
.check_aux = nfs_fscache_inode_check_aux,
|
.check_aux = nfs_fscache_inode_check_aux,
|
||||||
.now_uncached = nfs_fscache_inode_now_uncached,
|
|
||||||
.get_context = nfs_fh_get_context,
|
.get_context = nfs_fh_get_context,
|
||||||
.put_context = nfs_fh_put_context,
|
.put_context = nfs_fh_put_context,
|
||||||
};
|
};
|
||||||
|
|
|
@ -143,15 +143,6 @@ struct fscache_cookie_def {
|
||||||
void (*mark_page_cached)(void *cookie_netfs_data,
|
void (*mark_page_cached)(void *cookie_netfs_data,
|
||||||
struct address_space *mapping,
|
struct address_space *mapping,
|
||||||
struct page *page);
|
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);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue