fuse: Protect fi->nlookup with fi->lock
This continues previous patch and introduces the same protection for nlookup field. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
f15ecfef05
commit
c9d8f5f069
|
@ -207,9 +207,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags)
|
||||||
fuse_queue_forget(fc, forget, outarg.nodeid, 1);
|
fuse_queue_forget(fc, forget, outarg.nodeid, 1);
|
||||||
goto invalid;
|
goto invalid;
|
||||||
}
|
}
|
||||||
spin_lock(&fc->lock);
|
spin_lock(&fi->lock);
|
||||||
fi->nlookup++;
|
fi->nlookup++;
|
||||||
spin_unlock(&fc->lock);
|
spin_unlock(&fi->lock);
|
||||||
}
|
}
|
||||||
kfree(forget);
|
kfree(forget);
|
||||||
if (ret == -ENOMEM)
|
if (ret == -ENOMEM)
|
||||||
|
|
|
@ -325,9 +325,9 @@ struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
|
||||||
}
|
}
|
||||||
|
|
||||||
fi = get_fuse_inode(inode);
|
fi = get_fuse_inode(inode);
|
||||||
spin_lock(&fc->lock);
|
spin_lock(&fi->lock);
|
||||||
fi->nlookup++;
|
fi->nlookup++;
|
||||||
spin_unlock(&fc->lock);
|
spin_unlock(&fi->lock);
|
||||||
fuse_change_attributes(inode, attr, attr_valid, attr_version);
|
fuse_change_attributes(inode, attr, attr_valid, attr_version);
|
||||||
|
|
||||||
return inode;
|
return inode;
|
||||||
|
|
|
@ -213,9 +213,9 @@ retry:
|
||||||
}
|
}
|
||||||
|
|
||||||
fi = get_fuse_inode(inode);
|
fi = get_fuse_inode(inode);
|
||||||
spin_lock(&fc->lock);
|
spin_lock(&fi->lock);
|
||||||
fi->nlookup++;
|
fi->nlookup++;
|
||||||
spin_unlock(&fc->lock);
|
spin_unlock(&fi->lock);
|
||||||
|
|
||||||
forget_all_cached_acls(inode);
|
forget_all_cached_acls(inode);
|
||||||
fuse_change_attributes(inode, &o->attr,
|
fuse_change_attributes(inode, &o->attr,
|
||||||
|
|
Loading…
Reference in New Issue