summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-02-22 01:12:47 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-02-22 01:12:47 -0300
commit6d461a4fe7896faa1aec5a5417888cf179e46b9f (patch)
tree2e0f1a0b7a5418189c8d53592d33a44d0b356fc9 /fs
parent5c545e1fb127a4b11ddc5f1a5ed066b853dd1a1a (diff)
Linux-libre 4.4.2-gnupck-4.4.2-gnu
Diffstat (limited to 'fs')
-rw-r--r--fs/aufs/aufs.h2
-rw-r--r--fs/aufs/branch.c2
-rw-r--r--fs/aufs/branch.h2
-rw-r--r--fs/aufs/cpup.c20
-rw-r--r--fs/aufs/cpup.h2
-rw-r--r--fs/aufs/dbgaufs.c2
-rw-r--r--fs/aufs/dbgaufs.h2
-rw-r--r--fs/aufs/dcsub.c2
-rw-r--r--fs/aufs/dcsub.h2
-rw-r--r--fs/aufs/debug.c2
-rw-r--r--fs/aufs/debug.h2
-rw-r--r--fs/aufs/dentry.c2
-rw-r--r--fs/aufs/dentry.h2
-rw-r--r--fs/aufs/dinfo.c2
-rw-r--r--fs/aufs/dir.c2
-rw-r--r--fs/aufs/dir.h2
-rw-r--r--fs/aufs/dynop.c2
-rw-r--r--fs/aufs/dynop.h2
-rw-r--r--fs/aufs/export.c2
-rw-r--r--fs/aufs/f_op.c2
-rw-r--r--fs/aufs/fhsm.c2
-rw-r--r--fs/aufs/file.c2
-rw-r--r--fs/aufs/file.h2
-rw-r--r--fs/aufs/finfo.c2
-rw-r--r--fs/aufs/fstype.h3
-rw-r--r--fs/aufs/hfsnotify.c2
-rw-r--r--fs/aufs/hfsplus.c2
-rw-r--r--fs/aufs/hnotify.c2
-rw-r--r--fs/aufs/i_op.c2
-rw-r--r--fs/aufs/i_op_add.c2
-rw-r--r--fs/aufs/i_op_del.c2
-rw-r--r--fs/aufs/i_op_ren.c2
-rw-r--r--fs/aufs/iinfo.c2
-rw-r--r--fs/aufs/inode.c2
-rw-r--r--fs/aufs/inode.h2
-rw-r--r--fs/aufs/ioctl.c2
-rw-r--r--fs/aufs/loop.c2
-rw-r--r--fs/aufs/loop.h2
-rw-r--r--fs/aufs/module.c2
-rw-r--r--fs/aufs/module.h2
-rw-r--r--fs/aufs/mvdown.c2
-rw-r--r--fs/aufs/opts.c2
-rw-r--r--fs/aufs/opts.h2
-rw-r--r--fs/aufs/plink.c2
-rw-r--r--fs/aufs/poll.c2
-rw-r--r--fs/aufs/posix_acl.c2
-rw-r--r--fs/aufs/procfs.c2
-rw-r--r--fs/aufs/rdu.c2
-rw-r--r--fs/aufs/rwsem.h2
-rw-r--r--fs/aufs/sbinfo.c2
-rw-r--r--fs/aufs/spl.h2
-rw-r--r--fs/aufs/super.c2
-rw-r--r--fs/aufs/super.h2
-rw-r--r--fs/aufs/sysaufs.c2
-rw-r--r--fs/aufs/sysaufs.h2
-rw-r--r--fs/aufs/sysfs.c2
-rw-r--r--fs/aufs/sysrq.c2
-rw-r--r--fs/aufs/vdir.c2
-rw-r--r--fs/aufs/vfsub.c2
-rw-r--r--fs/aufs/vfsub.h2
-rw-r--r--fs/aufs/wbr_policy.c2
-rw-r--r--fs/aufs/whout.c2
-rw-r--r--fs/aufs/whout.h2
-rw-r--r--fs/aufs/wkq.c2
-rw-r--r--fs/aufs/wkq.h2
-rw-r--r--fs/aufs/xattr.c2
-rw-r--r--fs/aufs/xino.c2
-rw-r--r--fs/ext4/crypto_key.c4
-rw-r--r--fs/file_table.c2
-rw-r--r--fs/nfs/nfs4proc.c1
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c26
-rw-r--r--fs/ocfs2/dlm/dlmrecovery.c2
-rw-r--r--fs/ocfs2/dlmglue.c6
73 files changed, 114 insertions, 80 deletions
diff --git a/fs/aufs/aufs.h b/fs/aufs/aufs.h
index 75290bdbb..49f43b433 100644
--- a/fs/aufs/aufs.h
+++ b/fs/aufs/aufs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/branch.c b/fs/aufs/branch.c
index f49142260..1ab5e1f2d 100644
--- a/fs/aufs/branch.c
+++ b/fs/aufs/branch.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/branch.h b/fs/aufs/branch.h
index 7b9e7c9cd..4c52ae166 100644
--- a/fs/aufs/branch.h
+++ b/fs/aufs/branch.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/cpup.c b/fs/aufs/cpup.c
index cd322746c..a34648874 100644
--- a/fs/aufs/cpup.c
+++ b/fs/aufs/cpup.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
@@ -8,6 +8,7 @@
#include <linux/fs_stack.h>
#include <linux/mm.h>
+#include <linux/task_work.h>
#include "aufs.h"
void au_cpup_attr_flags(struct inode *dst, unsigned int iflags)
@@ -380,6 +381,7 @@ static int au_cp_regular(struct au_cp_generic *cpg)
}
};
struct super_block *sb;
+ struct task_struct *tsk = current;
/* bsrc branch can be ro/rw. */
sb = cpg->dentry->d_sb;
@@ -397,7 +399,21 @@ static int au_cp_regular(struct au_cp_generic *cpg)
IMustLock(d_inode(file[SRC].dentry));
err = au_copy_file(file[DST].file, file[SRC].file, cpg->len);
- fput(file[DST].file);
+ /* i wonder if we had O_NO_DELAY_FPUT flag */
+ if (tsk->flags & PF_KTHREAD)
+ __fput_sync(file[DST].file);
+ else {
+ WARN(1, "%pD\nPlease report this warning to aufs-users ML",
+ file[DST].file);
+ fput(file[DST].file);
+ /*
+ * too bad.
+ * we have to call both since we don't know which place the file
+ * was added to.
+ */
+ task_work_run();
+ flush_delayed_fput();
+ }
au_sbr_put(sb, file[DST].bindex);
out_src:
diff --git a/fs/aufs/cpup.h b/fs/aufs/cpup.h
index 3355f0880..ccba2c427 100644
--- a/fs/aufs/cpup.h
+++ b/fs/aufs/cpup.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dbgaufs.c b/fs/aufs/dbgaufs.c
index c7c612c28..0aefb5ed8 100644
--- a/fs/aufs/dbgaufs.c
+++ b/fs/aufs/dbgaufs.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dbgaufs.h b/fs/aufs/dbgaufs.h
index efa9a4db9..81f272e42 100644
--- a/fs/aufs/dbgaufs.h
+++ b/fs/aufs/dbgaufs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dcsub.c b/fs/aufs/dcsub.c
index f9d9d526c..e72accebb 100644
--- a/fs/aufs/dcsub.c
+++ b/fs/aufs/dcsub.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dcsub.h b/fs/aufs/dcsub.h
index 2aa87acc3..5d2cf661d 100644
--- a/fs/aufs/dcsub.h
+++ b/fs/aufs/dcsub.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/debug.c b/fs/aufs/debug.c
index 42053aa7f..4529831a9 100644
--- a/fs/aufs/debug.c
+++ b/fs/aufs/debug.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/debug.h b/fs/aufs/debug.h
index 0a2e7e7b0..0567f31d0 100644
--- a/fs/aufs/debug.h
+++ b/fs/aufs/debug.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dentry.c b/fs/aufs/dentry.c
index aad25be88..e47a7e6c4 100644
--- a/fs/aufs/dentry.c
+++ b/fs/aufs/dentry.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dentry.h b/fs/aufs/dentry.h
index 522522179..c794adf59 100644
--- a/fs/aufs/dentry.h
+++ b/fs/aufs/dentry.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dinfo.c b/fs/aufs/dinfo.c
index 25b971bc6..ad6d045c4 100644
--- a/fs/aufs/dinfo.c
+++ b/fs/aufs/dinfo.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dir.c b/fs/aufs/dir.c
index ccdcebeb3..8a619062a 100644
--- a/fs/aufs/dir.c
+++ b/fs/aufs/dir.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dir.h b/fs/aufs/dir.h
index 803a0f1a5..b0a79d722 100644
--- a/fs/aufs/dir.h
+++ b/fs/aufs/dir.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dynop.c b/fs/aufs/dynop.c
index 1f1283814..53a8b55d8 100644
--- a/fs/aufs/dynop.c
+++ b/fs/aufs/dynop.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010-2015 Junjiro R. Okajima
+ * Copyright (C) 2010-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/dynop.h b/fs/aufs/dynop.h
index 6d739c124..8680bfc53 100644
--- a/fs/aufs/dynop.h
+++ b/fs/aufs/dynop.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010-2015 Junjiro R. Okajima
+ * Copyright (C) 2010-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/export.c b/fs/aufs/export.c
index 3026f39a7..4ce7732b7 100644
--- a/fs/aufs/export.c
+++ b/fs/aufs/export.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
index 91c2ce78a..c1be75cb0 100644
--- a/fs/aufs/f_op.c
+++ b/fs/aufs/f_op.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/fhsm.c b/fs/aufs/fhsm.c
index 47106cbe9..db079d6ee 100644
--- a/fs/aufs/fhsm.c
+++ b/fs/aufs/fhsm.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011-2015 Junjiro R. Okajima
+ * Copyright (C) 2011-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/file.c b/fs/aufs/file.c
index 72316b122..6b8a66b4a 100644
--- a/fs/aufs/file.c
+++ b/fs/aufs/file.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/file.h b/fs/aufs/file.h
index 488473e31..27d802487 100644
--- a/fs/aufs/file.h
+++ b/fs/aufs/file.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/finfo.c b/fs/aufs/finfo.c
index e709205b5..b5eb55dfb 100644
--- a/fs/aufs/finfo.c
+++ b/fs/aufs/finfo.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/fstype.h b/fs/aufs/fstype.h
index 6196c606b..e429a8b17 100644
--- a/fs/aufs/fstype.h
+++ b/fs/aufs/fstype.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
@@ -240,6 +240,7 @@ static inline int au_test_hfsplus(struct super_block *sb __maybe_unused)
static inline int au_test_fs_unsuppoted(struct super_block *sb)
{
return
+ au_test_fuse(sb) || /* for a security reason, temporarily */
#ifndef CONFIG_AUFS_BR_RAMFS
au_test_ramfs(sb) ||
#endif
diff --git a/fs/aufs/hfsnotify.c b/fs/aufs/hfsnotify.c
index 5c370196f..c0a1a63a9 100644
--- a/fs/aufs/hfsnotify.c
+++ b/fs/aufs/hfsnotify.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/hfsplus.c b/fs/aufs/hfsplus.c
index 34c1f1abf..145c6ac2f 100644
--- a/fs/aufs/hfsplus.c
+++ b/fs/aufs/hfsplus.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010-2015 Junjiro R. Okajima
+ * Copyright (C) 2010-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/hnotify.c b/fs/aufs/hnotify.c
index 3943dc4b4..3e0a4f67d 100644
--- a/fs/aufs/hnotify.c
+++ b/fs/aufs/hnotify.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/i_op.c b/fs/aufs/i_op.c
index daad67aa1..1c634bab9 100644
--- a/fs/aufs/i_op.c
+++ b/fs/aufs/i_op.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/i_op_add.c b/fs/aufs/i_op_add.c
index 0c3530e55..3fc355859 100644
--- a/fs/aufs/i_op_add.c
+++ b/fs/aufs/i_op_add.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/i_op_del.c b/fs/aufs/i_op_del.c
index 3cd4c7b19..68741aadb 100644
--- a/fs/aufs/i_op_del.c
+++ b/fs/aufs/i_op_del.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/i_op_ren.c b/fs/aufs/i_op_ren.c
index fd815fdbc..c880144b5 100644
--- a/fs/aufs/i_op_ren.c
+++ b/fs/aufs/i_op_ren.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/iinfo.c b/fs/aufs/iinfo.c
index c604f6987..67ef672a0 100644
--- a/fs/aufs/iinfo.c
+++ b/fs/aufs/iinfo.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/inode.c b/fs/aufs/inode.c
index cedc53420..5a87727ba 100644
--- a/fs/aufs/inode.c
+++ b/fs/aufs/inode.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/inode.h b/fs/aufs/inode.h
index c3e26940f..534b9e814 100644
--- a/fs/aufs/inode.h
+++ b/fs/aufs/inode.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/ioctl.c b/fs/aufs/ioctl.c
index 87e3ddc88..6528fb911 100644
--- a/fs/aufs/ioctl.c
+++ b/fs/aufs/ioctl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
index f324758e9..5711e7a2f 100644
--- a/fs/aufs/loop.c
+++ b/fs/aufs/loop.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h
index 6d9864dff..48bf070e8 100644
--- a/fs/aufs/loop.h
+++ b/fs/aufs/loop.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/module.c b/fs/aufs/module.c
index 3268e62e4..ec12f2e66 100644
--- a/fs/aufs/module.c
+++ b/fs/aufs/module.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/module.h b/fs/aufs/module.h
index adee827fa..b129ad4b6 100644
--- a/fs/aufs/module.h
+++ b/fs/aufs/module.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/mvdown.c b/fs/aufs/mvdown.c
index 53e0f6af9..1f2224f6d 100644
--- a/fs/aufs/mvdown.c
+++ b/fs/aufs/mvdown.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011-2015 Junjiro R. Okajima
+ * Copyright (C) 2011-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/opts.c b/fs/aufs/opts.c
index f79d15e32..5c39817f3 100644
--- a/fs/aufs/opts.c
+++ b/fs/aufs/opts.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/opts.h b/fs/aufs/opts.h
index 3899e9240..0d6c2e1c7 100644
--- a/fs/aufs/opts.h
+++ b/fs/aufs/opts.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/plink.c b/fs/aufs/plink.c
index af2246c09..6fdab1e0e 100644
--- a/fs/aufs/plink.c
+++ b/fs/aufs/plink.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/poll.c b/fs/aufs/poll.c
index c324fc727..dd2baf5dc 100644
--- a/fs/aufs/poll.c
+++ b/fs/aufs/poll.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/posix_acl.c b/fs/aufs/posix_acl.c
index d9ce95724..1c19e629b 100644
--- a/fs/aufs/posix_acl.c
+++ b/fs/aufs/posix_acl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014-2015 Junjiro R. Okajima
+ * Copyright (C) 2014-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/procfs.c b/fs/aufs/procfs.c
index ead2a0052..2c8893edf 100644
--- a/fs/aufs/procfs.c
+++ b/fs/aufs/procfs.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010-2015 Junjiro R. Okajima
+ * Copyright (C) 2010-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/rdu.c b/fs/aufs/rdu.c
index f11d9bbbd..a9e9e9893 100644
--- a/fs/aufs/rdu.c
+++ b/fs/aufs/rdu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/rwsem.h b/fs/aufs/rwsem.h
index 171ee0c18..ef50c2ccb 100644
--- a/fs/aufs/rwsem.h
+++ b/fs/aufs/rwsem.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/sbinfo.c b/fs/aufs/sbinfo.c
index 8f2ec5573..e3c58f643 100644
--- a/fs/aufs/sbinfo.c
+++ b/fs/aufs/sbinfo.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/spl.h b/fs/aufs/spl.h
index a66d39e9e..f9b528826 100644
--- a/fs/aufs/spl.h
+++ b/fs/aufs/spl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
index 98cfd64dd..b41d78913 100644
--- a/fs/aufs/super.c
+++ b/fs/aufs/super.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/super.h b/fs/aufs/super.h
index d15172962..2761df917 100644
--- a/fs/aufs/super.h
+++ b/fs/aufs/super.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/sysaufs.c b/fs/aufs/sysaufs.c
index 29ac6faa6..8ec10fb31 100644
--- a/fs/aufs/sysaufs.c
+++ b/fs/aufs/sysaufs.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/sysaufs.h b/fs/aufs/sysaufs.h
index feb78fd86..1f799835e 100644
--- a/fs/aufs/sysaufs.h
+++ b/fs/aufs/sysaufs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/sysfs.c b/fs/aufs/sysfs.c
index ec8df8f6c..ed42f53d0 100644
--- a/fs/aufs/sysfs.c
+++ b/fs/aufs/sysfs.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/sysrq.c b/fs/aufs/sysrq.c
index 3a0182b90..7921ed716 100644
--- a/fs/aufs/sysrq.c
+++ b/fs/aufs/sysrq.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/vdir.c b/fs/aufs/vdir.c
index db81f49dd..f64cc2b7a 100644
--- a/fs/aufs/vdir.c
+++ b/fs/aufs/vdir.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c
index da0df5a38..f072c59c0 100644
--- a/fs/aufs/vfsub.c
+++ b/fs/aufs/vfsub.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/vfsub.h b/fs/aufs/vfsub.h
index 4218da12e..a7d8a1cf9 100644
--- a/fs/aufs/vfsub.h
+++ b/fs/aufs/vfsub.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/wbr_policy.c b/fs/aufs/wbr_policy.c
index 53a01fb06..c822b428d 100644
--- a/fs/aufs/wbr_policy.c
+++ b/fs/aufs/wbr_policy.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/whout.c b/fs/aufs/whout.c
index 05ba0857b..04eb9af2b 100644
--- a/fs/aufs/whout.c
+++ b/fs/aufs/whout.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/whout.h b/fs/aufs/whout.h
index b39acea2c..4077dd19e 100644
--- a/fs/aufs/whout.h
+++ b/fs/aufs/whout.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/wkq.c b/fs/aufs/wkq.c
index 08870ec06..0f1500e93 100644
--- a/fs/aufs/wkq.c
+++ b/fs/aufs/wkq.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/wkq.h b/fs/aufs/wkq.h
index 8f01343d8..f6c9b9902 100644
--- a/fs/aufs/wkq.h
+++ b/fs/aufs/wkq.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/xattr.c b/fs/aufs/xattr.c
index c1695b329..f592e05ea 100644
--- a/fs/aufs/xattr.c
+++ b/fs/aufs/xattr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014-2015 Junjiro R. Okajima
+ * Copyright (C) 2014-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/aufs/xino.c b/fs/aufs/xino.c
index 61df836cd..994258e3f 100644
--- a/fs/aufs/xino.c
+++ b/fs/aufs/xino.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2015 Junjiro R. Okajima
+ * Copyright (C) 2005-2016 Junjiro R. Okajima
*/
/*
diff --git a/fs/ext4/crypto_key.c b/fs/ext4/crypto_key.c
index c5882b36e..9a16d1e75 100644
--- a/fs/ext4/crypto_key.c
+++ b/fs/ext4/crypto_key.c
@@ -213,9 +213,11 @@ retry:
res = -ENOKEY;
goto out;
}
+ down_read(&keyring_key->sem);
ukp = user_key_payload(keyring_key);
if (ukp->datalen != sizeof(struct ext4_encryption_key)) {
res = -EINVAL;
+ up_read(&keyring_key->sem);
goto out;
}
master_key = (struct ext4_encryption_key *)ukp->data;
@@ -226,10 +228,12 @@ retry:
"ext4: key size incorrect: %d\n",
master_key->size);
res = -ENOKEY;
+ up_read(&keyring_key->sem);
goto out;
}
res = ext4_derive_key_aes(ctx.nonce, master_key->raw,
raw_key);
+ up_read(&keyring_key->sem);
if (res)
goto out;
got_key:
diff --git a/fs/file_table.c b/fs/file_table.c
index df66450fb..38e046adc 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -259,6 +259,7 @@ void flush_delayed_fput(void)
{
delayed_fput(NULL);
}
+EXPORT_SYMBOL(flush_delayed_fput);
static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput);
@@ -301,6 +302,7 @@ void __fput_sync(struct file *file)
}
EXPORT_SYMBOL(fput);
+EXPORT_SYMBOL(__fput_sync);
void put_filp(struct file *file)
{
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 89818036f..343b0f1f1 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -8054,7 +8054,6 @@ static void nfs4_layoutreturn_release(void *calldata)
pnfs_set_layout_stateid(lo, &lrp->res.stateid, true);
pnfs_mark_matching_lsegs_invalid(lo, &freeme, &lrp->args.range);
pnfs_clear_layoutreturn_waitbit(lo);
- lo->plh_block_lgets--;
spin_unlock(&lo->plh_inode->i_lock);
pnfs_free_lseg_list(&freeme);
pnfs_put_layout_hdr(lrp->args.layout);
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 84f2f8079..4e2162b35 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -2519,6 +2519,11 @@ static int dlm_migrate_lockres(struct dlm_ctxt *dlm,
spin_lock(&dlm->master_lock);
ret = dlm_add_migration_mle(dlm, res, mle, &oldmle, name,
namelen, target, dlm->node_num);
+ /* get an extra reference on the mle.
+ * otherwise the assert_master from the new
+ * master will destroy this.
+ */
+ dlm_get_mle_inuse(mle);
spin_unlock(&dlm->master_lock);
spin_unlock(&dlm->spinlock);
@@ -2554,6 +2559,7 @@ fail:
if (mle_added) {
dlm_mle_detach_hb_events(dlm, mle);
dlm_put_mle(mle);
+ dlm_put_mle_inuse(mle);
} else if (mle) {
kmem_cache_free(dlm_mle_cache, mle);
mle = NULL;
@@ -2571,17 +2577,6 @@ fail:
* ensure that all assert_master work is flushed. */
flush_workqueue(dlm->dlm_worker);
- /* get an extra reference on the mle.
- * otherwise the assert_master from the new
- * master will destroy this.
- * also, make sure that all callers of dlm_get_mle
- * take both dlm->spinlock and dlm->master_lock */
- spin_lock(&dlm->spinlock);
- spin_lock(&dlm->master_lock);
- dlm_get_mle_inuse(mle);
- spin_unlock(&dlm->master_lock);
- spin_unlock(&dlm->spinlock);
-
/* notify new node and send all lock state */
/* call send_one_lockres with migration flag.
* this serves as notice to the target node that a
@@ -3312,6 +3307,15 @@ top:
mle->new_master != dead_node)
continue;
+ if (mle->new_master == dead_node && mle->inuse) {
+ mlog(ML_NOTICE, "%s: target %u died during "
+ "migration from %u, the MLE is "
+ "still keep used, ignore it!\n",
+ dlm->name, dead_node,
+ mle->master);
+ continue;
+ }
+
/* If we have reached this point, this mle needs to be
* removed from the list and freed. */
dlm_clean_migration_mle(dlm, mle);
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index 9e4f862d2..42f0cae93 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -2360,6 +2360,8 @@ static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
break;
}
}
+ dlm_lockres_clear_refmap_bit(dlm, res,
+ dead_node);
spin_unlock(&res->spinlock);
continue;
}
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
index 20276e340..b002acf50 100644
--- a/fs/ocfs2/dlmglue.c
+++ b/fs/ocfs2/dlmglue.c
@@ -1390,6 +1390,7 @@ static int __ocfs2_cluster_lock(struct ocfs2_super *osb,
unsigned int gen;
int noqueue_attempted = 0;
int dlm_locked = 0;
+ int kick_dc = 0;
if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) {
mlog_errno(-EINVAL);
@@ -1524,7 +1525,12 @@ update_holders:
unlock:
lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING);
+ /* ocfs2_unblock_lock reques on seeing OCFS2_LOCK_UPCONVERT_FINISHING */
+ kick_dc = (lockres->l_flags & OCFS2_LOCK_BLOCKED);
+
spin_unlock_irqrestore(&lockres->l_lock, flags);
+ if (kick_dc)
+ ocfs2_wake_downconvert_thread(osb);
out:
/*
* This is helping work around a lock inversion between the page lock