---
+**mandatory**
+
+lookup_one_qstr_excl() is no longer exported - use start_creating() or
+similar.
++
+---
+
+** mandatory**
+
+lock_rename(), lock_rename_child(), unlock_rename() are no
+longer available. Use start_renaming() or similar.
+
++---
++
+ **recommended**
+
+ If you really need to iterate through dentries for given inode, use
+ for_each_alias(dentry, inode) instead of hlist_for_each_entry; better
+ yet, see if any of the exported primitives could be used instead of
+ the entire loop. You still need to hold ->i_lock of the inode over
+ either form of manual loop.
{
struct dentry *dentry;
spin_lock(&inode->i_lock);
- hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ for_each_alias(dentry, inode) {
if (entry_ino == (u32)(long)dentry->d_fsdata) {
- dentry->d_fsdata = (void *)inode->i_ino;
+ dentry->d_fsdata = (void *)(unsigned long)inode->i_ino;
break;
}
}
return;
}
- dentry_ptr = container_of(dentry_first, struct dentry, d_u.d_alias);
+ dentry_ptr = container_of(dentry_first, struct dentry, d_alias);
if (get_kernel_nofault(dentry, dentry_ptr) ||
!dentry.d_parent || !dentry.d_name.name) {
- pr_warn("aops:%ps ino:%lx invalid dentry:%px\n",
+ pr_warn("aops:%ps ino:%llx invalid dentry:%px\n",
a_ops, ino, dentry_ptr);
return;
}