summaryrefslogtreecommitdiff
path: root/fs/aufs/sbinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/aufs/sbinfo.c')
-rw-r--r--fs/aufs/sbinfo.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/aufs/sbinfo.c b/fs/aufs/sbinfo.c
index cb7ac83a1..8f2ec5573 100644
--- a/fs/aufs/sbinfo.c
+++ b/fs/aufs/sbinfo.c
@@ -113,6 +113,9 @@ int au_si_alloc(struct super_block *sb)
au_sphl_init(&sbinfo->si_files);
+ /* with getattr by default */
+ sbinfo->si_iop_array = aufs_iop;
+
/* leave other members for sysaufs and si_mnt. */
sbinfo->si_sb = sb;
sb->s_fs_info = sbinfo;
@@ -237,7 +240,10 @@ int aufs_read_lock(struct dentry *dentry, int flags)
if (au_ftest_lock(flags, GEN)) {
err = au_digen_test(dentry, au_sigen(sb));
- AuDebugOn(!err && au_dbrange_test(dentry));
+ if (!au_opt_test(au_mntflags(sb), UDBA_NONE))
+ AuDebugOn(!err && au_dbrange_test(dentry));
+ else if (!err)
+ err = au_dbrange_test(dentry);
if (unlikely(err))
aufs_read_unlock(dentry, flags);
}
@@ -278,7 +284,7 @@ int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags)
if (unlikely(err))
goto out;
- di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIR));
+ di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIRS));
if (au_ftest_lock(flags, GEN)) {
sigen = au_sigen(sb);