vfs: document locking requirements for d_move, __d_move and d_materialise_unique
Adding a comment to d_materialise_unique per Al's request... d_move and __d_move have some pretty substantial locking requirements, but they are not clearly documented. Add some comments spelling them out. Also, document the requirement for the i_mutex of the parent in d_materialise_unique. Cc: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
11
fs/dcache.c
11
fs/dcache.c
@@ -2138,8 +2138,9 @@ static void dentry_unlock_parents_for_move(struct dentry *dentry,
|
|||||||
* @target: new dentry
|
* @target: new dentry
|
||||||
*
|
*
|
||||||
* Update the dcache to reflect the move of a file name. Negative
|
* Update the dcache to reflect the move of a file name. Negative
|
||||||
* dcache entries should not be moved in this way. Caller hold
|
* dcache entries should not be moved in this way. Caller must hold
|
||||||
* rename_lock.
|
* rename_lock, the i_mutex of the source and target directories,
|
||||||
|
* and the sb->s_vfs_rename_mutex if they differ. See lock_rename().
|
||||||
*/
|
*/
|
||||||
static void __d_move(struct dentry * dentry, struct dentry * target)
|
static void __d_move(struct dentry * dentry, struct dentry * target)
|
||||||
{
|
{
|
||||||
@@ -2202,7 +2203,8 @@ static void __d_move(struct dentry * dentry, struct dentry * target)
|
|||||||
* @target: new dentry
|
* @target: new dentry
|
||||||
*
|
*
|
||||||
* Update the dcache to reflect the move of a file name. Negative
|
* Update the dcache to reflect the move of a file name. Negative
|
||||||
* dcache entries should not be moved in this way.
|
* dcache entries should not be moved in this way. See the locking
|
||||||
|
* requirements for __d_move.
|
||||||
*/
|
*/
|
||||||
void d_move(struct dentry *dentry, struct dentry *target)
|
void d_move(struct dentry *dentry, struct dentry *target)
|
||||||
{
|
{
|
||||||
@@ -2320,7 +2322,8 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
|
|||||||
* @inode: inode to bind to the dentry, to which aliases may be attached
|
* @inode: inode to bind to the dentry, to which aliases may be attached
|
||||||
*
|
*
|
||||||
* Introduces an dentry into the tree, substituting an extant disconnected
|
* Introduces an dentry into the tree, substituting an extant disconnected
|
||||||
* root directory alias in its place if there is one
|
* root directory alias in its place if there is one. Caller must hold the
|
||||||
|
* i_mutex of the parent directory.
|
||||||
*/
|
*/
|
||||||
struct dentry *d_materialise_unique(struct dentry *dentry, struct inode *inode)
|
struct dentry *d_materialise_unique(struct dentry *dentry, struct inode *inode)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user