Loading fs/cifs/smb2ops.c +16 −0 Original line number Diff line number Diff line Loading @@ -925,6 +925,22 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, return rc; } int open_cached_dir_by_dentry(struct cifs_tcon *tcon, struct dentry *dentry, struct cached_fid **cfid) { mutex_lock(&tcon->crfid.fid_mutex); if (tcon->crfid.dentry == dentry) { cifs_dbg(FYI, "found a cached root file handle by dentry\n"); *cfid = &tcon->crfid; kref_get(&tcon->crfid.refcount); mutex_unlock(&tcon->crfid.fid_mutex); return 0; } mutex_unlock(&tcon->crfid.fid_mutex); return -ENOENT; } static void smb3_qfs_tcon(const unsigned int xid, struct cifs_tcon *tcon, struct cifs_sb_info *cifs_sb) Loading fs/cifs/smb2proto.h +3 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,9 @@ extern int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, const char *path, struct cifs_sb_info *cifs_sb, struct cached_fid **cfid); extern int open_cached_dir_by_dentry(struct cifs_tcon *tcon, struct dentry *dentry, struct cached_fid **cfid); extern void close_cached_dir(struct cached_fid *cfid); extern void close_cached_dir_lease(struct cached_fid *cfid); extern void close_cached_dir_lease_locked(struct cached_fid *cfid); Loading Loading
fs/cifs/smb2ops.c +16 −0 Original line number Diff line number Diff line Loading @@ -925,6 +925,22 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, return rc; } int open_cached_dir_by_dentry(struct cifs_tcon *tcon, struct dentry *dentry, struct cached_fid **cfid) { mutex_lock(&tcon->crfid.fid_mutex); if (tcon->crfid.dentry == dentry) { cifs_dbg(FYI, "found a cached root file handle by dentry\n"); *cfid = &tcon->crfid; kref_get(&tcon->crfid.refcount); mutex_unlock(&tcon->crfid.fid_mutex); return 0; } mutex_unlock(&tcon->crfid.fid_mutex); return -ENOENT; } static void smb3_qfs_tcon(const unsigned int xid, struct cifs_tcon *tcon, struct cifs_sb_info *cifs_sb) Loading
fs/cifs/smb2proto.h +3 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,9 @@ extern int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, const char *path, struct cifs_sb_info *cifs_sb, struct cached_fid **cfid); extern int open_cached_dir_by_dentry(struct cifs_tcon *tcon, struct dentry *dentry, struct cached_fid **cfid); extern void close_cached_dir(struct cached_fid *cfid); extern void close_cached_dir_lease(struct cached_fid *cfid); extern void close_cached_dir_lease_locked(struct cached_fid *cfid); Loading