diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index a7db56f1523b7634ce4a6da8dde1ae8a75874e6b..5f0013aafa4be13df0f89dae2b04fe359464ffa0 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -843,11 +843,13 @@ static void update_dentry_lease(struct dentry *dentry, /* * Set dentry's directory position based on the current dir's max, and * order it in d_subdirs, so that dcache_readdir behaves. + * + * Always called under directory's i_mutex. */ static void ceph_set_dentry_offset(struct dentry *dn) { struct dentry *dir = dn->d_parent; - struct inode *inode = dn->d_parent->d_inode; + struct inode *inode = dir->d_inode; struct ceph_dentry_info *di; BUG_ON(!inode);