fs: make file_dentry() a simple accessor
file_dentry() is a relic from the days that overlayfs was using files with a "fake" path, meaning, f_path on overlayfs and f_inode on underlying fs. In those days, file_dentry() was needed to get the underlying fs dentry that matches f_inode. Files with "fake" path should not exist nowadays, so make file_dentry() a simple accessor and use an assertion to make sure that file_dentry() was not papering over filesystem bugs. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Link: https://lore.kernel.org/r/20240202110132.1584111-2-amir73il@gmail.com Tested-by: Stefan Berger <stefanb@linux.ibm.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
e6f7958042
commit
3058fca1ed
|
@ -1084,9 +1084,20 @@ static inline struct inode *file_inode(const struct file *f)
|
|||
return f->f_inode;
|
||||
}
|
||||
|
||||
/*
|
||||
* file_dentry() is a relic from the days that overlayfs was using files with a
|
||||
* "fake" path, meaning, f_path on overlayfs and f_inode on underlying fs.
|
||||
* In those days, file_dentry() was needed to get the underlying fs dentry that
|
||||
* matches f_inode.
|
||||
* Files with "fake" path should not exist nowadays, so use an assertion to make
|
||||
* sure that file_dentry() was not papering over filesystem bugs.
|
||||
*/
|
||||
static inline struct dentry *file_dentry(const struct file *file)
|
||||
{
|
||||
return d_real(file->f_path.dentry, file_inode(file));
|
||||
struct dentry *dentry = file->f_path.dentry;
|
||||
|
||||
WARN_ON_ONCE(d_inode(dentry) != file_inode(file));
|
||||
return dentry;
|
||||
}
|
||||
|
||||
struct fasync_struct {
|
||||
|
|
Loading…
Reference in New Issue