diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-02-22 01:12:47 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-02-22 01:12:47 -0300 |
commit | 6d461a4fe7896faa1aec5a5417888cf179e46b9f (patch) | |
tree | 2e0f1a0b7a5418189c8d53592d33a44d0b356fc9 /fs | |
parent | 5c545e1fb127a4b11ddc5f1a5ed066b853dd1a1a (diff) |
Linux-libre 4.4.2-gnupck-4.4.2-gnu
Diffstat (limited to 'fs')
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 |