]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/exportfs/expfs.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / exportfs / expfs.c
index 51b304056f10fcd47c18593a9a12bf56e8633063..4b6825740dd5e6cfcf38918d3c8e477a677e94a4 100644 (file)
@@ -43,24 +43,26 @@ find_acceptable_alias(struct dentry *result,
                void *context)
 {
        struct dentry *dentry, *toput = NULL;
+       struct inode *inode;
 
        if (acceptable(context, result))
                return result;
 
-       spin_lock(&dcache_lock);
-       list_for_each_entry(dentry, &result->d_inode->i_dentry, d_alias) {
-               dget_locked(dentry);
-               spin_unlock(&dcache_lock);
+       inode = result->d_inode;
+       spin_lock(&inode->i_lock);
+       list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+               dget(dentry);
+               spin_unlock(&inode->i_lock);
                if (toput)
                        dput(toput);
                if (dentry != result && acceptable(context, dentry)) {
                        dput(result);
                        return dentry;
                }
-               spin_lock(&dcache_lock);
+               spin_lock(&inode->i_lock);
                toput = dentry;
        }
-       spin_unlock(&dcache_lock);
+       spin_unlock(&inode->i_lock);
 
        if (toput)
                dput(toput);