#include <linux/namei.h>
#include "cifsglob.h"
#include "cifsproto.h"
#include "cifs_debug.h"
#include "smb2proto.h"
#include "cached_dir.h"
static struct cached_fid *init_cached_dir(const char *path);
static void free_cached_dir(struct cached_fid *cfid);
static void smb2_close_cached_fid(struct kref *ref);
static void cfids_laundromat_worker(struct work_struct *work);
static struct cached_fid *find_or_create_cached_dir(struct cached_fids *cfids,
const char *path,
bool lookup_only,
__u32 max_cached_dirs)
{ … }
static struct dentry *
path_to_dentry(struct cifs_sb_info *cifs_sb, const char *path)
{ … }
static const char *path_no_prefix(struct cifs_sb_info *cifs_sb,
const char *path)
{ … }
int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
const char *path,
struct cifs_sb_info *cifs_sb,
bool lookup_only, struct cached_fid **ret_cfid)
{ … }
int open_cached_dir_by_dentry(struct cifs_tcon *tcon,
struct dentry *dentry,
struct cached_fid **ret_cfid)
{ … }
static void
smb2_close_cached_fid(struct kref *ref)
{ … }
void drop_cached_dir_by_name(const unsigned int xid, struct cifs_tcon *tcon,
const char *name, struct cifs_sb_info *cifs_sb)
{ … }
void close_cached_dir(struct cached_fid *cfid)
{ … }
void close_all_cached_dirs(struct cifs_sb_info *cifs_sb)
{ … }
void invalidate_all_cached_dirs(struct cifs_tcon *tcon)
{ … }
static void
smb2_cached_lease_break(struct work_struct *work)
{ … }
int cached_dir_lease_break(struct cifs_tcon *tcon, __u8 lease_key[16])
{ … }
static struct cached_fid *init_cached_dir(const char *path)
{ … }
static void free_cached_dir(struct cached_fid *cfid)
{ … }
static void cfids_laundromat_worker(struct work_struct *work)
{ … }
struct cached_fids *init_cached_dirs(void)
{ … }
void free_cached_dirs(struct cached_fids *cfids)
{ … }