diff options
Diffstat (limited to 'fs/ext4/fsync.c')
| -rw-r--r-- | fs/ext4/fsync.c | 11 | 
1 files changed, 2 insertions, 9 deletions
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index bb6c7d81131..2a1dcea4f12 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c @@ -135,14 +135,7 @@ static int ext4_sync_parent(struct inode *inode)  	inode = igrab(inode);  	while (ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY)) {  		ext4_clear_inode_state(inode, EXT4_STATE_NEWENTRY); -		dentry = NULL; -		spin_lock(&inode->i_lock); -		if (!list_empty(&inode->i_dentry)) { -			dentry = list_first_entry(&inode->i_dentry, -						  struct dentry, d_alias); -			dget(dentry); -		} -		spin_unlock(&inode->i_lock); +		dentry = d_find_any_alias(inode);  		if (!dentry)  			break;  		next = igrab(dentry->d_parent->d_inode); @@ -232,7 +225,7 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)  	if (!journal) {  		ret = __sync_inode(inode, datasync); -		if (!ret && !list_empty(&inode->i_dentry)) +		if (!ret && !hlist_empty(&inode->i_dentry))  			ret = ext4_sync_parent(inode);  		goto out;  	}  |