^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Helper routines for the NFS client caches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (c) 2009 Trond Myklebust <Trond.Myklebust@netapp.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/completion.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/sunrpc/cache.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/atomic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * Deferred request handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct nfs_cache_defer_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct cache_req req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) struct cache_deferred_req deferred_req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) struct completion completion;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) refcount_t count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) extern int nfs_cache_upcall(struct cache_detail *cd, char *entry_name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) extern struct nfs_cache_defer_req *nfs_cache_defer_req_alloc(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) extern void nfs_cache_defer_req_put(struct nfs_cache_defer_req *dreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) extern int nfs_cache_wait_for_upcall(struct nfs_cache_defer_req *dreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) extern int nfs_cache_register_net(struct net *net, struct cache_detail *cd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) extern void nfs_cache_unregister_net(struct net *net, struct cache_detail *cd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) extern int nfs_cache_register_sb(struct super_block *sb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) struct cache_detail *cd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) extern void nfs_cache_unregister_sb(struct super_block *sb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct cache_detail *cd);