cred_t *credp = crref();
struct vcache *vcp = NULL;
const char *comp = dp->d_name.name;
+#if 1
+ struct dentry *res = 0;
+#endif
#if defined(AFS_LINUX26_ENV)
lock_kernel();
} else if (S_ISDIR(ip->i_mode)) {
ip->i_op = &afs_dir_iops;
ip->i_fop = &afs_dir_fops;
+ d_prune_aliases(ip);
+ res = d_find_alias(ip);
} else if (S_ISLNK(ip->i_mode)) {
ip->i_op = &afs_symlink_iops;
ip->i_data.a_ops = &afs_symlink_aops;
}
dp->d_op = &afs_dentry_operations;
dp->d_time = hgetlo(ITOAFS(dip)->m.DataVersion);
+#if defined(AFS_LINUX24_ENV)
+ if (res) {
+ if (d_unhashed(res))
+ d_rehash(res);
+ } else
+#endif
d_add(dp, AFSTOI(vcp));
#if defined(AFS_LINUX26_ENV)
/* It's ok for the file to not be found. That's noted by the caller by
* seeing that the dp->d_inode field is NULL.
*/
+#if defined(AFS_LINUX24_ENV)
+ if (code == 0)
+ return res;
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,10)
if (code == ENOENT)
return ERR_PTR(0);