Skip to content

Commit

Permalink
sunrpc: extract some common sunrpc_cache code from nfsd
Browse files Browse the repository at this point in the history
Rather can duplicating this idiom twice, put it in an inline function.
This reduces the usage of 'expiry_time' out side the sunrpc/cache.c
code and thus the impact of a change that is about to be made to that
field.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
  • Loading branch information
NeilBrown authored and J. Bruce Fields committed Sep 7, 2010
1 parent 1132b26 commit 17cebf6
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
9 changes: 3 additions & 6 deletions fs/nfsd/export.c
Original file line number Diff line number Diff line change
Expand Up @@ -935,10 +935,9 @@ static void exp_fsid_unhash(struct svc_export *exp)

ek = exp_get_fsid_key(exp->ex_client, exp->ex_fsid);
if (!IS_ERR(ek)) {
ek->h.expiry_time = get_seconds()-1;
sunrpc_invalidate(&ek->h, &svc_expkey_cache);
cache_put(&ek->h, &svc_expkey_cache);
}
svc_expkey_cache.nextcheck = get_seconds();
}

static int exp_fsid_hash(svc_client *clp, struct svc_export *exp)
Expand Down Expand Up @@ -973,10 +972,9 @@ static void exp_unhash(struct svc_export *exp)

ek = exp_get_key(exp->ex_client, inode->i_sb->s_dev, inode->i_ino);
if (!IS_ERR(ek)) {
ek->h.expiry_time = get_seconds()-1;
sunrpc_invalidate(&ek->h, &svc_expkey_cache);
cache_put(&ek->h, &svc_expkey_cache);
}
svc_expkey_cache.nextcheck = get_seconds();
}

/*
Expand Down Expand Up @@ -1097,8 +1095,7 @@ exp_export(struct nfsctl_export *nxp)
static void
exp_do_unexport(svc_export *unexp)
{
unexp->h.expiry_time = get_seconds()-1;
svc_export_cache.nextcheck = get_seconds();
sunrpc_invalidate(&unexp->h, &svc_export_cache);
exp_unhash(unexp);
exp_fsid_unhash(unexp);
}
Expand Down
6 changes: 6 additions & 0 deletions include/linux/sunrpc/cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,10 @@ static inline time_t get_expiry(char **bpp)
return rv;
}

static inline void sunrpc_invalidate(struct cache_head *h,
struct cache_detail *detail)
{
h->expiry_time = get_seconds() - 1;
detail->nextcheck = get_seconds();
}
#endif /* _LINUX_SUNRPC_CACHE_H_ */

0 comments on commit 17cebf6

Please sign in to comment.