Loading fs/cifs/inode.c +12 −0 Original line number Diff line number Diff line Loading @@ -2193,6 +2193,8 @@ cifs_dentry_needs_reval(struct dentry *dentry) struct inode *inode = d_inode(dentry); struct cifsInodeInfo *cifs_i = CIFS_I(inode); struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb); struct cached_fid *cfid = NULL; if (cifs_i->time == 0) return true; Loading @@ -2203,6 +2205,16 @@ cifs_dentry_needs_reval(struct dentry *dentry) if (!lookupCacheEnabled) return true; if (!open_cached_dir_by_dentry(tcon, dentry->d_parent, &cfid)) { mutex_lock(&cfid->fid_mutex); if (cfid->time && cifs_i->time > cfid->time) { mutex_unlock(&cfid->fid_mutex); close_cached_dir(cfid); return false; } mutex_unlock(&cfid->fid_mutex); close_cached_dir(cfid); } /* * depending on inode type, check if attribute caching disabled for * files or directories Loading Loading
fs/cifs/inode.c +12 −0 Original line number Diff line number Diff line Loading @@ -2193,6 +2193,8 @@ cifs_dentry_needs_reval(struct dentry *dentry) struct inode *inode = d_inode(dentry); struct cifsInodeInfo *cifs_i = CIFS_I(inode); struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb); struct cached_fid *cfid = NULL; if (cifs_i->time == 0) return true; Loading @@ -2203,6 +2205,16 @@ cifs_dentry_needs_reval(struct dentry *dentry) if (!lookupCacheEnabled) return true; if (!open_cached_dir_by_dentry(tcon, dentry->d_parent, &cfid)) { mutex_lock(&cfid->fid_mutex); if (cfid->time && cifs_i->time > cfid->time) { mutex_unlock(&cfid->fid_mutex); close_cached_dir(cfid); return false; } mutex_unlock(&cfid->fid_mutex); close_cached_dir(cfid); } /* * depending on inode type, check if attribute caching disabled for * files or directories Loading