[packages/kernel/LINUX_4_1] - up to 4.1.12; vserver patch is back (off at this moment; needs runtime testing)
arekm
arekm at pld-linux.org
Sat Oct 31 23:22:37 CET 2015
commit 5eef560768b20094542fb6945eaf0c3d445f3050
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sat Oct 31 23:22:29 2015 +0100
- up to 4.1.12; vserver patch is back (off at this moment; needs runtime testing)
kernel-vserver-2.3.patch | 4239 +++++++++++++++++++++++-----------------------
kernel.spec | 6 +-
2 files changed, 2095 insertions(+), 2150 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index f3a02c2..d88fb18 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -71,7 +71,7 @@
%define rel 1
%define basever 4.1
-%define postver .11
+%define postver .12
# define this to '-%{basever}' for longterm branch
%define versuffix -%{basever}
@@ -120,7 +120,7 @@ Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz
# Source0-md5: fe9dc0f6729f36400ea81aa41d614c37
%if "%{postver}" != ".0"
Patch0: http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz
-# Patch0-md5: 46a403b167416719901565190298e680
+# Patch0-md5: e790ae84e0109a3d95cc617be448171b
%endif
Source1: kernel.sysconfig
@@ -189,7 +189,7 @@ Patch59: kernel-rndis_host-wm5.patch
Patch85: kernel-hostap.patch
%define vserver_patch 3.18.5-vs2.3.7.3
-# http://vserver.13thfloor.at/Experimental/patch-3.18.5-vs2.3.7.3.diff
+# http://vserver.13thfloor.at/Experimental/patch-4.1.12-vs2.3.8.3.diff
# note there are additional patches from above url:
# - *fix* are real fixes (we want these)
# - *feat* are new features/tests (we don't want these)
diff --git a/kernel-vserver-2.3.patch b/kernel-vserver-2.3.patch
index 1f7aa6f..2a64d1f 100644
--- a/kernel-vserver-2.3.patch
+++ b/kernel-vserver-2.3.patch
@@ -1,6 +1,6 @@
-diff -NurpP --minimal linux-3.18.5/Documentation/vserver/debug.txt linux-3.18.5-vs2.3.7.3/Documentation/vserver/debug.txt
---- linux-3.18.5/Documentation/vserver/debug.txt 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/Documentation/vserver/debug.txt 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/Documentation/vserver/debug.txt linux-4.1.12-vs2.3.8.3/Documentation/vserver/debug.txt
+--- linux-4.1.12/Documentation/vserver/debug.txt 1970-01-01 00:00:00.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/Documentation/vserver/debug.txt 2015-07-06 20:43:43.000000000 +0000
@@ -0,0 +1,154 @@
+
+debug_cvirt:
@@ -156,10 +156,10 @@ diff -NurpP --minimal linux-3.18.5/Documentation/vserver/debug.txt linux-3.18.5-
+ m 2^m "vx_acc_page[%5d,%s,%2d]: %5d%s"
+ "vx_acc_pages[%5d,%s,%2d]: %5d += %5d"
+ "vx_pages_avail[%5d,%s,%2d]: %5ld > %5d + %5d"
-diff -NurpP --minimal linux-3.18.5/arch/alpha/Kconfig linux-3.18.5-vs2.3.7.3/arch/alpha/Kconfig
---- linux-3.18.5/arch/alpha/Kconfig 2014-06-12 13:00:27.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/alpha/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -740,6 +740,8 @@ config DUMMY_CONSOLE
+diff -NurpP --minimal linux-4.1.12/arch/alpha/Kconfig linux-4.1.12-vs2.3.8.3/arch/alpha/Kconfig
+--- linux-4.1.12/arch/alpha/Kconfig 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/alpha/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -744,6 +744,8 @@ config DUMMY_CONSOLE
depends on VGA_HOSE
default y
@@ -168,9 +168,9 @@ diff -NurpP --minimal linux-3.18.5/arch/alpha/Kconfig linux-3.18.5-vs2.3.7.3/arc
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/alpha/kernel/systbls.S linux-3.18.5-vs2.3.7.3/arch/alpha/kernel/systbls.S
---- linux-3.18.5/arch/alpha/kernel/systbls.S 2015-01-16 22:18:10.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/alpha/kernel/systbls.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/alpha/kernel/systbls.S linux-4.1.12-vs2.3.8.3/arch/alpha/kernel/systbls.S
+--- linux-4.1.12/arch/alpha/kernel/systbls.S 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/alpha/kernel/systbls.S 2015-07-06 20:43:43.000000000 +0000
@@ -446,7 +446,7 @@ sys_call_table:
.quad sys_stat64 /* 425 */
.quad sys_lstat64
@@ -180,10 +180,10 @@ diff -NurpP --minimal linux-3.18.5/arch/alpha/kernel/systbls.S linux-3.18.5-vs2.
.quad sys_ni_syscall /* sys_mbind */
.quad sys_ni_syscall /* sys_get_mempolicy */
.quad sys_ni_syscall /* sys_set_mempolicy */
-diff -NurpP --minimal linux-3.18.5/arch/alpha/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/alpha/kernel/traps.c
---- linux-3.18.5/arch/alpha/kernel/traps.c 2014-01-22 20:38:10.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/alpha/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
-@@ -175,7 +175,8 @@ die_if_kernel(char * str, struct pt_regs
+diff -NurpP --minimal linux-4.1.12/arch/alpha/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/alpha/kernel/traps.c
+--- linux-4.1.12/arch/alpha/kernel/traps.c 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/alpha/kernel/traps.c 2015-07-06 20:43:43.000000000 +0000
+@@ -174,7 +174,8 @@ die_if_kernel(char * str, struct pt_regs
#ifdef CONFIG_SMP
printk("CPU %d ", hard_smp_processor_id());
#endif
@@ -193,10 +193,10 @@ diff -NurpP --minimal linux-3.18.5/arch/alpha/kernel/traps.c linux-3.18.5-vs2.3.
dik_show_regs(regs, r9_15);
add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
dik_show_trace((unsigned long *)(regs+1));
-diff -NurpP --minimal linux-3.18.5/arch/arm/Kconfig linux-3.18.5-vs2.3.7.3/arch/arm/Kconfig
---- linux-3.18.5/arch/arm/Kconfig 2015-01-17 02:39:30.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/arm/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -2170,6 +2170,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/arm/Kconfig linux-4.1.12-vs2.3.8.3/arch/arm/Kconfig
+--- linux-4.1.12/arch/arm/Kconfig 2015-10-29 09:20:01.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/arm/Kconfig 2015-10-29 09:25:24.000000000 +0000
+@@ -2110,6 +2110,8 @@ source "fs/Kconfig"
source "arch/arm/Kconfig.debug"
@@ -205,9 +205,9 @@ diff -NurpP --minimal linux-3.18.5/arch/arm/Kconfig linux-3.18.5-vs2.3.7.3/arch/
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/arm/kernel/calls.S linux-3.18.5-vs2.3.7.3/arch/arm/kernel/calls.S
---- linux-3.18.5/arch/arm/kernel/calls.S 2015-01-17 02:39:31.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/arm/kernel/calls.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/arm/kernel/calls.S linux-4.1.12-vs2.3.8.3/arch/arm/kernel/calls.S
+--- linux-4.1.12/arch/arm/kernel/calls.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/arm/kernel/calls.S 2015-07-06 20:43:43.000000000 +0000
@@ -322,7 +322,7 @@
/* 310 */ CALL(sys_request_key)
CALL(sys_keyctl)
@@ -217,24 +217,24 @@ diff -NurpP --minimal linux-3.18.5/arch/arm/kernel/calls.S linux-3.18.5-vs2.3.7.
CALL(sys_ioprio_set)
/* 315 */ CALL(sys_ioprio_get)
CALL(sys_inotify_init)
-diff -NurpP --minimal linux-3.18.5/arch/arm/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/arm/kernel/traps.c
---- linux-3.18.5/arch/arm/kernel/traps.c 2015-01-17 02:39:31.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/arm/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/arm/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/arm/kernel/traps.c
+--- linux-4.1.12/arch/arm/kernel/traps.c 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/arm/kernel/traps.c 2015-07-06 20:43:43.000000000 +0000
@@ -250,8 +250,8 @@ static int __die(const char *str, int er
print_modules();
__show_regs(regs);
-- printk(KERN_EMERG "Process %.*s (pid: %d, stack limit = 0x%p)\n",
-- TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), end_of_stack(tsk));
-+ printk(KERN_EMERG "Process %.*s (pid: %d:#%u, stack limit = 0x%p)\n",
-+ TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), tsk->xid, end_of_stack(tsk));
+- pr_emerg("Process %.*s (pid: %d, stack limit = 0x%p)\n",
+- TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), end_of_stack(tsk));
++ pr_emerg("Process %.*s (pid: %d:%u, stack limit = 0x%p)\n",
++ TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), tsk->xid, end_of_stack(tsk));
if (!user_mode(regs) || in_interrupt()) {
dump_mem(KERN_EMERG, "Stack: ", regs->ARM_sp,
-diff -NurpP --minimal linux-3.18.5/arch/cris/Kconfig linux-3.18.5-vs2.3.7.3/arch/cris/Kconfig
---- linux-3.18.5/arch/cris/Kconfig 2014-06-12 13:00:42.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/cris/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -556,6 +556,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/cris/Kconfig linux-4.1.12-vs2.3.8.3/arch/cris/Kconfig
+--- linux-4.1.12/arch/cris/Kconfig 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/cris/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -570,6 +570,8 @@ source "fs/Kconfig"
source "arch/cris/Kconfig.debug"
@@ -243,10 +243,10 @@ diff -NurpP --minimal linux-3.18.5/arch/cris/Kconfig linux-3.18.5-vs2.3.7.3/arch
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/ia64/Kconfig linux-3.18.5-vs2.3.7.3/arch/ia64/Kconfig
---- linux-3.18.5/arch/ia64/Kconfig 2015-01-16 22:18:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/ia64/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -636,6 +636,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/ia64/Kconfig linux-4.1.12-vs2.3.8.3/arch/ia64/Kconfig
+--- linux-4.1.12/arch/ia64/Kconfig 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/ia64/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -628,6 +628,8 @@ source "fs/Kconfig"
source "arch/ia64/Kconfig.debug"
@@ -255,9 +255,9 @@ diff -NurpP --minimal linux-3.18.5/arch/ia64/Kconfig linux-3.18.5-vs2.3.7.3/arch
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/entry.S linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/entry.S
---- linux-3.18.5/arch/ia64/kernel/entry.S 2015-01-17 02:39:35.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/entry.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/ia64/kernel/entry.S linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/entry.S
+--- linux-4.1.12/arch/ia64/kernel/entry.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/entry.S 2015-07-06 20:43:43.000000000 +0000
@@ -1706,7 +1706,7 @@ sys_call_table:
data8 sys_mq_notify
data8 sys_mq_getsetattr
@@ -267,9 +267,9 @@ diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/entry.S linux-3.18.5-vs2.3.7
data8 sys_waitid // 1270
data8 sys_add_key
data8 sys_request_key
-diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/ptrace.c linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/ptrace.c
---- linux-3.18.5/arch/ia64/kernel/ptrace.c 2015-01-17 02:39:35.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/ptrace.c 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/ia64/kernel/ptrace.c linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/ptrace.c
+--- linux-4.1.12/arch/ia64/kernel/ptrace.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/ptrace.c 2015-07-06 20:43:43.000000000 +0000
@@ -21,6 +21,7 @@
#include <linux/regset.h>
#include <linux/elf.h>
@@ -278,9 +278,9 @@ diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/ptrace.c linux-3.18.5-vs2.3.
#include <asm/pgtable.h>
#include <asm/processor.h>
-diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/traps.c
---- linux-3.18.5/arch/ia64/kernel/traps.c 2015-01-17 02:39:35.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/ia64/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/ia64/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/traps.c
+--- linux-4.1.12/arch/ia64/kernel/traps.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/ia64/kernel/traps.c 2015-07-06 20:43:43.000000000 +0000
@@ -60,8 +60,9 @@ die (const char *str, struct pt_regs *re
put_cpu();
@@ -305,9 +305,9 @@ diff -NurpP --minimal linux-3.18.5/arch/ia64/kernel/traps.c linux-3.18.5-vs2.3.7
}
}
}
-diff -NurpP --minimal linux-3.18.5/arch/m32r/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/m32r/kernel/traps.c
---- linux-3.18.5/arch/m32r/kernel/traps.c 2013-07-14 17:00:26.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/m32r/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/m32r/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/m32r/kernel/traps.c
+--- linux-4.1.12/arch/m32r/kernel/traps.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/m32r/kernel/traps.c 2015-07-06 20:43:43.000000000 +0000
@@ -184,8 +184,9 @@ static void show_registers(struct pt_reg
} else {
printk("SPI: %08lx\n", sp);
@@ -320,10 +320,10 @@ diff -NurpP --minimal linux-3.18.5/arch/m32r/kernel/traps.c linux-3.18.5-vs2.3.7
/*
* When in-kernel, we also print out the stack and code at the
-diff -NurpP --minimal linux-3.18.5/arch/m68k/Kconfig linux-3.18.5-vs2.3.7.3/arch/m68k/Kconfig
---- linux-3.18.5/arch/m68k/Kconfig 2014-06-12 13:00:43.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/m68k/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -159,6 +159,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/m68k/Kconfig linux-4.1.12-vs2.3.8.3/arch/m68k/Kconfig
+--- linux-4.1.12/arch/m68k/Kconfig 2015-07-06 20:41:36.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/m68k/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -163,6 +163,8 @@ source "fs/Kconfig"
source "arch/m68k/Kconfig.debug"
@@ -332,10 +332,10 @@ diff -NurpP --minimal linux-3.18.5/arch/m68k/Kconfig linux-3.18.5-vs2.3.7.3/arch
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/mips/Kconfig linux-3.18.5-vs2.3.7.3/arch/mips/Kconfig
---- linux-3.18.5/arch/mips/Kconfig 2015-01-17 02:39:35.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -2712,6 +2712,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/mips/Kconfig linux-4.1.12-vs2.3.8.3/arch/mips/Kconfig
+--- linux-4.1.12/arch/mips/Kconfig 2015-10-29 09:20:02.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/Kconfig 2015-10-29 09:25:24.000000000 +0000
+@@ -2887,6 +2887,8 @@ source "fs/Kconfig"
source "arch/mips/Kconfig.debug"
@@ -344,9 +344,9 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/Kconfig linux-3.18.5-vs2.3.7.3/arch
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/ptrace.c linux-3.18.5-vs2.3.7.3/arch/mips/kernel/ptrace.c
---- linux-3.18.5/arch/mips/kernel/ptrace.c 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/ptrace.c 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/ptrace.c linux-4.1.12-vs2.3.8.3/arch/mips/kernel/ptrace.c
+--- linux-4.1.12/arch/mips/kernel/ptrace.c 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/ptrace.c 2015-07-06 20:43:43.000000000 +0000
@@ -29,6 +29,7 @@
#include <linux/audit.h>
#include <linux/seccomp.h>
@@ -355,7 +355,7 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/ptrace.c linux-3.18.5-vs2.3.
#include <asm/byteorder.h>
#include <asm/cpu.h>
-@@ -544,6 +545,9 @@ long arch_ptrace(struct task_struct *chi
+@@ -573,6 +574,9 @@ long arch_ptrace(struct task_struct *chi
void __user *datavp = (void __user *) data;
unsigned long __user *datalp = (void __user *) data;
@@ -365,10 +365,10 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/ptrace.c linux-3.18.5-vs2.3.
switch (request) {
/* when I and D space are separate, these will need to be fixed. */
case PTRACE_PEEKTEXT: /* read word at location addr. */
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall32-o32.S linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall32-o32.S
---- linux-3.18.5/arch/mips/kernel/scall32-o32.S 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall32-o32.S 2015-01-19 10:57:45.000000000 +0000
-@@ -501,7 +501,7 @@ EXPORT(sys_call_table)
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/scall32-o32.S linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall32-o32.S
+--- linux-4.1.12/arch/mips/kernel/scall32-o32.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall32-o32.S 2015-07-06 20:43:43.000000000 +0000
+@@ -502,7 +502,7 @@ EXPORT(sys_call_table)
PTR sys_mq_timedreceive
PTR sys_mq_notify /* 4275 */
PTR sys_mq_getsetattr
@@ -377,9 +377,9 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall32-o32.S linux-3.18.5-v
PTR sys_waitid
PTR sys_ni_syscall /* available, was setaltroot */
PTR sys_add_key /* 4280 */
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-64.S linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-64.S
---- linux-3.18.5/arch/mips/kernel/scall64-64.S 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-64.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/scall64-64.S linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-64.S
+--- linux-4.1.12/arch/mips/kernel/scall64-64.S 2015-10-29 09:20:02.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-64.S 2015-10-29 09:25:25.000000000 +0000
@@ -355,7 +355,7 @@ EXPORT(sys_call_table)
PTR sys_mq_timedreceive
PTR sys_mq_notify
@@ -389,9 +389,9 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-64.S linux-3.18.5-vs
PTR sys_waitid
PTR sys_ni_syscall /* available, was setaltroot */
PTR sys_add_key
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-n32.S linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-n32.S
---- linux-3.18.5/arch/mips/kernel/scall64-n32.S 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-n32.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/scall64-n32.S linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-n32.S
+--- linux-4.1.12/arch/mips/kernel/scall64-n32.S 2015-10-29 09:20:02.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-n32.S 2015-10-29 09:25:25.000000000 +0000
@@ -348,7 +348,7 @@ EXPORT(sysn32_call_table)
PTR compat_sys_mq_timedreceive
PTR compat_sys_mq_notify
@@ -401,10 +401,10 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-n32.S linux-3.18.5-v
PTR compat_sys_waitid
PTR sys_ni_syscall /* available, was setaltroot */
PTR sys_add_key
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-o32.S linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-o32.S
---- linux-3.18.5/arch/mips/kernel/scall64-o32.S 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/scall64-o32.S 2015-01-19 10:57:45.000000000 +0000
-@@ -486,7 +486,7 @@ EXPORT(sys32_call_table)
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/scall64-o32.S linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-o32.S
+--- linux-4.1.12/arch/mips/kernel/scall64-o32.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/scall64-o32.S 2015-07-06 20:43:43.000000000 +0000
+@@ -487,7 +487,7 @@ EXPORT(sys32_call_table)
PTR compat_sys_mq_timedreceive
PTR compat_sys_mq_notify /* 4275 */
PTR compat_sys_mq_getsetattr
@@ -413,10 +413,10 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/scall64-o32.S linux-3.18.5-v
PTR compat_sys_waitid
PTR sys_ni_syscall /* available, was setaltroot */
PTR sys_add_key /* 4280 */
-diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/mips/kernel/traps.c
---- linux-3.18.5/arch/mips/kernel/traps.c 2015-01-16 22:18:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/mips/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
-@@ -341,9 +341,10 @@ void show_registers(struct pt_regs *regs
+diff -NurpP --minimal linux-4.1.12/arch/mips/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/mips/kernel/traps.c
+--- linux-4.1.12/arch/mips/kernel/traps.c 2015-10-29 09:20:02.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/mips/kernel/traps.c 2015-10-29 09:25:25.000000000 +0000
+@@ -349,9 +349,10 @@ void show_registers(struct pt_regs *regs
__show_regs(regs);
print_modules();
@@ -430,10 +430,10 @@ diff -NurpP --minimal linux-3.18.5/arch/mips/kernel/traps.c linux-3.18.5-vs2.3.7
if (cpu_has_userlocal) {
unsigned long tls;
-diff -NurpP --minimal linux-3.18.5/arch/parisc/Kconfig linux-3.18.5-vs2.3.7.3/arch/parisc/Kconfig
---- linux-3.18.5/arch/parisc/Kconfig 2015-01-16 22:18:21.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/parisc/Kconfig 2015-01-19 10:57:45.000000000 +0000
-@@ -337,6 +337,8 @@ config SECCOMP
+diff -NurpP --minimal linux-4.1.12/arch/parisc/Kconfig linux-4.1.12-vs2.3.8.3/arch/parisc/Kconfig
+--- linux-4.1.12/arch/parisc/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/parisc/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -338,6 +338,8 @@ config SECCOMP
If unsure, say Y. Only embedded should say N here.
@@ -442,9 +442,9 @@ diff -NurpP --minimal linux-3.18.5/arch/parisc/Kconfig linux-3.18.5-vs2.3.7.3/ar
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/parisc/kernel/syscall_table.S linux-3.18.5-vs2.3.7.3/arch/parisc/kernel/syscall_table.S
---- linux-3.18.5/arch/parisc/kernel/syscall_table.S 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/parisc/kernel/syscall_table.S 2015-01-19 10:57:45.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/parisc/kernel/syscall_table.S linux-4.1.12-vs2.3.8.3/arch/parisc/kernel/syscall_table.S
+--- linux-4.1.12/arch/parisc/kernel/syscall_table.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/parisc/kernel/syscall_table.S 2015-07-06 20:43:43.000000000 +0000
@@ -358,7 +358,7 @@
ENTRY_COMP(mbind) /* 260 */
ENTRY_COMP(get_mempolicy)
@@ -454,10 +454,10 @@ diff -NurpP --minimal linux-3.18.5/arch/parisc/kernel/syscall_table.S linux-3.18
ENTRY_SAME(add_key)
ENTRY_SAME(request_key) /* 265 */
ENTRY_SAME(keyctl)
-diff -NurpP --minimal linux-3.18.5/arch/parisc/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/parisc/kernel/traps.c
---- linux-3.18.5/arch/parisc/kernel/traps.c 2014-06-12 13:01:26.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/parisc/kernel/traps.c 2015-01-19 10:57:45.000000000 +0000
-@@ -239,8 +239,9 @@ void die_if_kernel(char *str, struct pt_
+diff -NurpP --minimal linux-4.1.12/arch/parisc/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/parisc/kernel/traps.c
+--- linux-4.1.12/arch/parisc/kernel/traps.c 2015-10-29 09:20:03.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/parisc/kernel/traps.c 2015-10-29 09:25:25.000000000 +0000
+@@ -235,8 +235,9 @@ void die_if_kernel(char *str, struct pt_
return; /* STFU */
parisc_printk_ratelimited(1, regs,
@@ -469,7 +469,7 @@ diff -NurpP --minimal linux-3.18.5/arch/parisc/kernel/traps.c linux-3.18.5-vs2.3
return;
}
-@@ -270,8 +271,8 @@ void die_if_kernel(char *str, struct pt_
+@@ -266,8 +267,8 @@ void die_if_kernel(char *str, struct pt_
pdc_console_restart();
if (err)
@@ -480,10 +480,10 @@ diff -NurpP --minimal linux-3.18.5/arch/parisc/kernel/traps.c linux-3.18.5-vs2.3
/* Wot's wrong wif bein' racy? */
if (current->thread.flags & PARISC_KERNEL_DEATH) {
-diff -NurpP --minimal linux-3.18.5/arch/powerpc/Kconfig linux-3.18.5-vs2.3.7.3/arch/powerpc/Kconfig
---- linux-3.18.5/arch/powerpc/Kconfig 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/powerpc/Kconfig 2015-01-19 10:57:46.000000000 +0000
-@@ -1068,6 +1068,8 @@ source "lib/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/powerpc/Kconfig linux-4.1.12-vs2.3.8.3/arch/powerpc/Kconfig
+--- linux-4.1.12/arch/powerpc/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/powerpc/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -1077,6 +1077,8 @@ source "lib/Kconfig"
source "arch/powerpc/Kconfig.debug"
@@ -492,9 +492,9 @@ diff -NurpP --minimal linux-3.18.5/arch/powerpc/Kconfig linux-3.18.5-vs2.3.7.3/a
source "security/Kconfig"
config KEYS_COMPAT
-diff -NurpP --minimal linux-3.18.5/arch/powerpc/include/uapi/asm/unistd.h linux-3.18.5-vs2.3.7.3/arch/powerpc/include/uapi/asm/unistd.h
---- linux-3.18.5/arch/powerpc/include/uapi/asm/unistd.h 2015-01-17 02:39:36.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/powerpc/include/uapi/asm/unistd.h 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/powerpc/include/uapi/asm/unistd.h linux-4.1.12-vs2.3.8.3/arch/powerpc/include/uapi/asm/unistd.h
+--- linux-4.1.12/arch/powerpc/include/uapi/asm/unistd.h 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/powerpc/include/uapi/asm/unistd.h 2015-07-06 20:43:43.000000000 +0000
@@ -275,7 +275,7 @@
#endif
#define __NR_rtas 255
@@ -504,9 +504,9 @@ diff -NurpP --minimal linux-3.18.5/arch/powerpc/include/uapi/asm/unistd.h linux-
#define __NR_migrate_pages 258
#define __NR_mbind 259
#define __NR_get_mempolicy 260
-diff -NurpP --minimal linux-3.18.5/arch/powerpc/kernel/traps.c linux-3.18.5-vs2.3.7.3/arch/powerpc/kernel/traps.c
---- linux-3.18.5/arch/powerpc/kernel/traps.c 2015-01-16 22:18:21.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/powerpc/kernel/traps.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/powerpc/kernel/traps.c linux-4.1.12-vs2.3.8.3/arch/powerpc/kernel/traps.c
+--- linux-4.1.12/arch/powerpc/kernel/traps.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/powerpc/kernel/traps.c 2015-07-06 20:43:43.000000000 +0000
@@ -1313,8 +1313,9 @@ void nonrecoverable_exception(struct pt_
void trace_syscall(struct pt_regs *regs)
@@ -519,10 +519,10 @@ diff -NurpP --minimal linux-3.18.5/arch/powerpc/kernel/traps.c linux-3.18.5-vs2.
regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
}
-diff -NurpP --minimal linux-3.18.5/arch/s390/Kconfig linux-3.18.5-vs2.3.7.3/arch/s390/Kconfig
---- linux-3.18.5/arch/s390/Kconfig 2015-01-17 02:39:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/s390/Kconfig 2015-01-19 10:57:46.000000000 +0000
-@@ -652,6 +652,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/s390/Kconfig linux-4.1.12-vs2.3.8.3/arch/s390/Kconfig
+--- linux-4.1.12/arch/s390/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/s390/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -653,6 +653,8 @@ source "fs/Kconfig"
source "arch/s390/Kconfig.debug"
@@ -531,9 +531,9 @@ diff -NurpP --minimal linux-3.18.5/arch/s390/Kconfig linux-3.18.5-vs2.3.7.3/arch
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/s390/include/asm/tlb.h linux-3.18.5-vs2.3.7.3/arch/s390/include/asm/tlb.h
---- linux-3.18.5/arch/s390/include/asm/tlb.h 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/s390/include/asm/tlb.h 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/s390/include/asm/tlb.h linux-4.1.12-vs2.3.8.3/arch/s390/include/asm/tlb.h
+--- linux-4.1.12/arch/s390/include/asm/tlb.h 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/s390/include/asm/tlb.h 2015-07-06 20:43:43.000000000 +0000
@@ -24,6 +24,7 @@
#include <linux/mm.h>
#include <linux/pagemap.h>
@@ -542,9 +542,9 @@ diff -NurpP --minimal linux-3.18.5/arch/s390/include/asm/tlb.h linux-3.18.5-vs2.
#include <asm/processor.h>
#include <asm/pgalloc.h>
#include <asm/tlbflush.h>
-diff -NurpP --minimal linux-3.18.5/arch/s390/include/uapi/asm/unistd.h linux-3.18.5-vs2.3.7.3/arch/s390/include/uapi/asm/unistd.h
---- linux-3.18.5/arch/s390/include/uapi/asm/unistd.h 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/s390/include/uapi/asm/unistd.h 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/s390/include/uapi/asm/unistd.h linux-4.1.12-vs2.3.8.3/arch/s390/include/uapi/asm/unistd.h
+--- linux-4.1.12/arch/s390/include/uapi/asm/unistd.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/s390/include/uapi/asm/unistd.h 2015-07-06 20:43:43.000000000 +0000
@@ -200,7 +200,7 @@
#define __NR_clock_gettime (__NR_timer_create+6)
#define __NR_clock_getres (__NR_timer_create+7)
@@ -554,9 +554,9 @@ diff -NurpP --minimal linux-3.18.5/arch/s390/include/uapi/asm/unistd.h linux-3.1
#define __NR_statfs64 265
#define __NR_fstatfs64 266
#define __NR_remap_file_pages 267
-diff -NurpP --minimal linux-3.18.5/arch/s390/kernel/ptrace.c linux-3.18.5-vs2.3.7.3/arch/s390/kernel/ptrace.c
---- linux-3.18.5/arch/s390/kernel/ptrace.c 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/s390/kernel/ptrace.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/s390/kernel/ptrace.c linux-4.1.12-vs2.3.8.3/arch/s390/kernel/ptrace.c
+--- linux-4.1.12/arch/s390/kernel/ptrace.c 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/s390/kernel/ptrace.c 2015-07-06 20:43:43.000000000 +0000
@@ -21,6 +21,7 @@
#include <linux/tracehook.h>
#include <linux/seccomp.h>
@@ -565,22 +565,22 @@ diff -NurpP --minimal linux-3.18.5/arch/s390/kernel/ptrace.c linux-3.18.5-vs2.3.
#include <trace/syscall.h>
#include <asm/segment.h>
#include <asm/page.h>
-diff -NurpP --minimal linux-3.18.5/arch/s390/kernel/syscalls.S linux-3.18.5-vs2.3.7.3/arch/s390/kernel/syscalls.S
---- linux-3.18.5/arch/s390/kernel/syscalls.S 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/s390/kernel/syscalls.S 2015-01-19 11:00:51.000000000 +0000
-@@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
- SYSCALL(sys_clock_gettime,sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
- SYSCALL(sys_clock_getres,sys_clock_getres,compat_sys_clock_getres)
- SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,compat_sys_clock_nanosleep)
--NI_SYSCALL /* reserved for vserver */
+diff -NurpP --minimal linux-4.1.12/arch/s390/kernel/syscalls.S linux-4.1.12-vs2.3.8.3/arch/s390/kernel/syscalls.S
+--- linux-4.1.12/arch/s390/kernel/syscalls.S 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/s390/kernel/syscalls.S 2015-07-06 20:46:54.000000000 +0000
+@@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,compat_sys_clo
+ SYSCALL(sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
+ SYSCALL(sys_clock_getres,compat_sys_clock_getres)
+ SYSCALL(sys_clock_nanosleep,compat_sys_clock_nanosleep)
+-NI_SYSCALL /* reserved for vserver */
+SYSCALL(sys_vserver,sys_vserver,sys32_vserver)
- SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,compat_sys_s390_fadvise64_64)
- SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64)
- SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64)
-diff -NurpP --minimal linux-3.18.5/arch/sh/Kconfig linux-3.18.5-vs2.3.7.3/arch/sh/Kconfig
---- linux-3.18.5/arch/sh/Kconfig 2015-01-16 22:18:23.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sh/Kconfig 2015-01-19 10:57:46.000000000 +0000
-@@ -878,6 +878,8 @@ source "fs/Kconfig"
+ SYSCALL(sys_ni_syscall,compat_sys_s390_fadvise64_64)
+ SYSCALL(sys_statfs64,compat_sys_statfs64)
+ SYSCALL(sys_fstatfs64,compat_sys_fstatfs64)
+diff -NurpP --minimal linux-4.1.12/arch/sh/Kconfig linux-4.1.12-vs2.3.8.3/arch/sh/Kconfig
+--- linux-4.1.12/arch/sh/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sh/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -882,6 +882,8 @@ source "fs/Kconfig"
source "arch/sh/Kconfig.debug"
@@ -589,9 +589,9 @@ diff -NurpP --minimal linux-3.18.5/arch/sh/Kconfig linux-3.18.5-vs2.3.7.3/arch/s
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/sh/kernel/irq.c linux-3.18.5-vs2.3.7.3/arch/sh/kernel/irq.c
---- linux-3.18.5/arch/sh/kernel/irq.c 2014-06-12 13:01:29.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sh/kernel/irq.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/sh/kernel/irq.c linux-4.1.12-vs2.3.8.3/arch/sh/kernel/irq.c
+--- linux-4.1.12/arch/sh/kernel/irq.c 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sh/kernel/irq.c 2015-07-06 20:43:43.000000000 +0000
@@ -14,6 +14,7 @@
#include <linux/ftrace.h>
#include <linux/delay.h>
@@ -600,10 +600,10 @@ diff -NurpP --minimal linux-3.18.5/arch/sh/kernel/irq.c linux-3.18.5-vs2.3.7.3/a
#include <asm/processor.h>
#include <asm/machvec.h>
#include <asm/uaccess.h>
-diff -NurpP --minimal linux-3.18.5/arch/sparc/Kconfig linux-3.18.5-vs2.3.7.3/arch/sparc/Kconfig
---- linux-3.18.5/arch/sparc/Kconfig 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sparc/Kconfig 2015-01-19 10:57:46.000000000 +0000
-@@ -557,6 +557,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/sparc/Kconfig linux-4.1.12-vs2.3.8.3/arch/sparc/Kconfig
+--- linux-4.1.12/arch/sparc/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sparc/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -564,6 +564,8 @@ source "fs/Kconfig"
source "arch/sparc/Kconfig.debug"
@@ -612,9 +612,9 @@ diff -NurpP --minimal linux-3.18.5/arch/sparc/Kconfig linux-3.18.5-vs2.3.7.3/arc
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/sparc/include/uapi/asm/unistd.h linux-3.18.5-vs2.3.7.3/arch/sparc/include/uapi/asm/unistd.h
---- linux-3.18.5/arch/sparc/include/uapi/asm/unistd.h 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sparc/include/uapi/asm/unistd.h 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/sparc/include/uapi/asm/unistd.h linux-4.1.12-vs2.3.8.3/arch/sparc/include/uapi/asm/unistd.h
+--- linux-4.1.12/arch/sparc/include/uapi/asm/unistd.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sparc/include/uapi/asm/unistd.h 2015-07-06 20:43:43.000000000 +0000
@@ -332,7 +332,7 @@
#define __NR_timer_getoverrun 264
#define __NR_timer_delete 265
@@ -624,9 +624,9 @@ diff -NurpP --minimal linux-3.18.5/arch/sparc/include/uapi/asm/unistd.h linux-3.
#define __NR_io_setup 268
#define __NR_io_destroy 269
#define __NR_io_submit 270
-diff -NurpP --minimal linux-3.18.5/arch/sparc/kernel/systbls_32.S linux-3.18.5-vs2.3.7.3/arch/sparc/kernel/systbls_32.S
---- linux-3.18.5/arch/sparc/kernel/systbls_32.S 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sparc/kernel/systbls_32.S 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/sparc/kernel/systbls_32.S linux-4.1.12-vs2.3.8.3/arch/sparc/kernel/systbls_32.S
+--- linux-4.1.12/arch/sparc/kernel/systbls_32.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sparc/kernel/systbls_32.S 2015-07-06 20:43:43.000000000 +0000
@@ -70,7 +70,7 @@ sys_call_table:
/*250*/ .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_ni_syscall
/*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
@@ -636,9 +636,9 @@ diff -NurpP --minimal linux-3.18.5/arch/sparc/kernel/systbls_32.S linux-3.18.5-v
/*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
/*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
/*280*/ .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-3.18.5/arch/sparc/kernel/systbls_64.S linux-3.18.5-vs2.3.7.3/arch/sparc/kernel/systbls_64.S
---- linux-3.18.5/arch/sparc/kernel/systbls_64.S 2015-01-17 02:39:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/sparc/kernel/systbls_64.S 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/sparc/kernel/systbls_64.S linux-4.1.12-vs2.3.8.3/arch/sparc/kernel/systbls_64.S
+--- linux-4.1.12/arch/sparc/kernel/systbls_64.S 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/sparc/kernel/systbls_64.S 2015-07-06 20:43:43.000000000 +0000
@@ -71,7 +71,7 @@ sys_call_table32:
/*250*/ .word sys_mremap, compat_sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall
.word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
@@ -648,7 +648,7 @@ diff -NurpP --minimal linux-3.18.5/arch/sparc/kernel/systbls_64.S linux-3.18.5-v
/*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
.word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
/*280*/ .word sys_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat
-@@ -150,7 +150,7 @@ sys_call_table:
+@@ -151,7 +151,7 @@ sys_call_table:
/*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall
.word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
@@ -657,9 +657,9 @@ diff -NurpP --minimal linux-3.18.5/arch/sparc/kernel/systbls_64.S linux-3.18.5-v
/*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
.word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
/*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-3.18.5/arch/um/Kconfig.rest linux-3.18.5-vs2.3.7.3/arch/um/Kconfig.rest
---- linux-3.18.5/arch/um/Kconfig.rest 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/um/Kconfig.rest 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/um/Kconfig.rest linux-4.1.12-vs2.3.8.3/arch/um/Kconfig.rest
+--- linux-4.1.12/arch/um/Kconfig.rest 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/um/Kconfig.rest 2015-07-06 20:43:43.000000000 +0000
@@ -12,6 +12,8 @@ source "arch/um/Kconfig.net"
source "fs/Kconfig"
@@ -669,10 +669,10 @@ diff -NurpP --minimal linux-3.18.5/arch/um/Kconfig.rest linux-3.18.5-vs2.3.7.3/a
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/x86/Kconfig linux-3.18.5-vs2.3.7.3/arch/x86/Kconfig
---- linux-3.18.5/arch/x86/Kconfig 2015-02-05 18:02:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/x86/Kconfig 2015-02-05 18:08:00.000000000 +0000
-@@ -2506,6 +2506,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-4.1.12/arch/x86/Kconfig linux-4.1.12-vs2.3.8.3/arch/x86/Kconfig
+--- linux-4.1.12/arch/x86/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/x86/Kconfig 2015-07-06 20:43:43.000000000 +0000
+@@ -2587,6 +2587,8 @@ source "fs/Kconfig"
source "arch/x86/Kconfig.debug"
@@ -681,9 +681,9 @@ diff -NurpP --minimal linux-3.18.5/arch/x86/Kconfig linux-3.18.5-vs2.3.7.3/arch/
source "security/Kconfig"
source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.18.5/arch/x86/syscalls/syscall_32.tbl linux-3.18.5-vs2.3.7.3/arch/x86/syscalls/syscall_32.tbl
---- linux-3.18.5/arch/x86/syscalls/syscall_32.tbl 2015-01-17 02:39:43.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/x86/syscalls/syscall_32.tbl 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/x86/syscalls/syscall_32.tbl linux-4.1.12-vs2.3.8.3/arch/x86/syscalls/syscall_32.tbl
+--- linux-4.1.12/arch/x86/syscalls/syscall_32.tbl 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/x86/syscalls/syscall_32.tbl 2015-07-06 20:43:43.000000000 +0000
@@ -279,7 +279,7 @@
270 i386 tgkill sys_tgkill
271 i386 utimes sys_utimes compat_sys_utimes
@@ -693,9 +693,9 @@ diff -NurpP --minimal linux-3.18.5/arch/x86/syscalls/syscall_32.tbl linux-3.18.5
274 i386 mbind sys_mbind
275 i386 get_mempolicy sys_get_mempolicy compat_sys_get_mempolicy
276 i386 set_mempolicy sys_set_mempolicy
-diff -NurpP --minimal linux-3.18.5/arch/x86/syscalls/syscall_64.tbl linux-3.18.5-vs2.3.7.3/arch/x86/syscalls/syscall_64.tbl
---- linux-3.18.5/arch/x86/syscalls/syscall_64.tbl 2015-01-17 02:39:43.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/arch/x86/syscalls/syscall_64.tbl 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/arch/x86/syscalls/syscall_64.tbl linux-4.1.12-vs2.3.8.3/arch/x86/syscalls/syscall_64.tbl
+--- linux-4.1.12/arch/x86/syscalls/syscall_64.tbl 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/arch/x86/syscalls/syscall_64.tbl 2015-07-06 20:43:43.000000000 +0000
@@ -242,7 +242,7 @@
233 common epoll_ctl sys_epoll_ctl
234 common tgkill sys_tgkill
@@ -705,9 +705,9 @@ diff -NurpP --minimal linux-3.18.5/arch/x86/syscalls/syscall_64.tbl linux-3.18.5
237 common mbind sys_mbind
238 common set_mempolicy sys_set_mempolicy
239 common get_mempolicy sys_get_mempolicy
-diff -NurpP --minimal linux-3.18.5/block/ioprio.c linux-3.18.5-vs2.3.7.3/block/ioprio.c
---- linux-3.18.5/block/ioprio.c 2015-01-17 02:39:43.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/block/ioprio.c 2015-01-19 13:00:07.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/block/ioprio.c linux-4.1.12-vs2.3.8.3/block/ioprio.c
+--- linux-4.1.12/block/ioprio.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/block/ioprio.c 2015-07-06 20:43:43.000000000 +0000
@@ -28,6 +28,7 @@
#include <linux/syscalls.h>
#include <linux/security.h>
@@ -734,9 +734,9 @@ diff -NurpP --minimal linux-3.18.5/block/ioprio.c linux-3.18.5-vs2.3.7.3/block/i
tmpio = get_task_ioprio(p);
if (tmpio < 0)
continue;
-diff -NurpP --minimal linux-3.18.5/drivers/block/Kconfig linux-3.18.5-vs2.3.7.3/drivers/block/Kconfig
---- linux-3.18.5/drivers/block/Kconfig 2014-06-12 11:33:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/block/Kconfig 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/block/Kconfig linux-4.1.12-vs2.3.8.3/drivers/block/Kconfig
+--- linux-4.1.12/drivers/block/Kconfig 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/block/Kconfig 2015-07-06 20:43:43.000000000 +0000
@@ -283,6 +283,13 @@ config BLK_DEV_CRYPTOLOOP
source "drivers/block/drbd/Kconfig"
@@ -751,10 +751,10 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/Kconfig linux-3.18.5-vs2.3.7.3/
config BLK_DEV_NBD
tristate "Network block device support"
depends on NET
-diff -NurpP --minimal linux-3.18.5/drivers/block/Makefile linux-3.18.5-vs2.3.7.3/drivers/block/Makefile
---- linux-3.18.5/drivers/block/Makefile 2014-06-12 11:33:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/block/Makefile 2015-01-19 10:57:46.000000000 +0000
-@@ -33,6 +33,7 @@ obj-$(CONFIG_VIRTIO_BLK) += virtio_blk.o
+diff -NurpP --minimal linux-4.1.12/drivers/block/Makefile linux-4.1.12-vs2.3.8.3/drivers/block/Makefile
+--- linux-4.1.12/drivers/block/Makefile 2015-07-06 20:41:37.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/block/Makefile 2015-07-06 20:43:43.000000000 +0000
+@@ -34,6 +34,7 @@ obj-$(CONFIG_VIRTIO_BLK) += virtio_blk.o
obj-$(CONFIG_BLK_DEV_SX8) += sx8.o
obj-$(CONFIG_BLK_DEV_HD) += hd.o
@@ -762,34 +762,34 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/Makefile linux-3.18.5-vs2.3.7.3
obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o
obj-$(CONFIG_XEN_BLKDEV_BACKEND) += xen-blkback/
-diff -NurpP --minimal linux-3.18.5/drivers/block/loop.c linux-3.18.5-vs2.3.7.3/drivers/block/loop.c
---- linux-3.18.5/drivers/block/loop.c 2014-09-03 13:18:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/block/loop.c 2015-01-19 10:57:46.000000000 +0000
-@@ -75,6 +75,7 @@
- #include <linux/sysfs.h>
+diff -NurpP --minimal linux-4.1.12/drivers/block/loop.c linux-4.1.12-vs2.3.8.3/drivers/block/loop.c
+--- linux-4.1.12/drivers/block/loop.c 2015-10-29 09:20:05.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/block/loop.c 2015-10-29 09:25:25.000000000 +0000
+@@ -76,6 +76,7 @@
#include <linux/miscdevice.h>
#include <linux/falloc.h>
+ #include <linux/uio.h>
+#include <linux/vs_context.h>
#include "loop.h"
#include <asm/uaccess.h>
-@@ -885,6 +886,7 @@ static int loop_set_fd(struct loop_devic
+@@ -737,6 +738,7 @@ static int loop_set_fd(struct loop_devic
lo->lo_blocksize = lo_blocksize;
lo->lo_device = bdev;
lo->lo_flags = lo_flags;
+ lo->lo_xid = vx_current_xid();
lo->lo_backing_file = file;
- lo->transfer = transfer_none;
+ lo->transfer = NULL;
lo->ioctl = NULL;
-@@ -1029,6 +1031,7 @@ static int loop_clr_fd(struct loop_devic
+@@ -853,6 +855,7 @@ static int loop_clr_fd(struct loop_devic
+ lo->lo_offset = 0;
lo->lo_sizelimit = 0;
lo->lo_encrypt_key_size = 0;
- lo->lo_thread = NULL;
+ lo->lo_xid = 0;
memset(lo->lo_encrypt_key, 0, LO_KEY_SIZE);
memset(lo->lo_crypt_name, 0, LO_NAME_SIZE);
memset(lo->lo_file_name, 0, LO_NAME_SIZE);
-@@ -1072,7 +1075,7 @@ loop_set_status(struct loop_device *lo,
+@@ -898,7 +901,7 @@ loop_set_status(struct loop_device *lo,
if (lo->lo_encrypt_key_size &&
!uid_eq(lo->lo_key_owner, uid) &&
@@ -798,7 +798,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/loop.c linux-3.18.5-vs2.3.7.3/d
return -EPERM;
if (lo->lo_state != Lo_bound)
return -ENXIO;
-@@ -1162,7 +1165,8 @@ loop_get_status(struct loop_device *lo,
+@@ -988,7 +991,8 @@ loop_get_status(struct loop_device *lo,
memcpy(info->lo_crypt_name, lo->lo_crypt_name, LO_NAME_SIZE);
info->lo_encrypt_type =
lo->lo_encryption ? lo->lo_encryption->number : 0;
@@ -808,7 +808,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/loop.c linux-3.18.5-vs2.3.7.3/d
info->lo_encrypt_key_size = lo->lo_encrypt_key_size;
memcpy(info->lo_encrypt_key, lo->lo_encrypt_key,
lo->lo_encrypt_key_size);
-@@ -1504,6 +1508,11 @@ static int lo_open(struct block_device *
+@@ -1330,6 +1334,11 @@ static int lo_open(struct block_device *
goto out;
}
@@ -820,10 +820,10 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/loop.c linux-3.18.5-vs2.3.7.3/d
mutex_lock(&lo->lo_ctl_mutex);
lo->lo_refcnt++;
mutex_unlock(&lo->lo_ctl_mutex);
-diff -NurpP --minimal linux-3.18.5/drivers/block/loop.h linux-3.18.5-vs2.3.7.3/drivers/block/loop.h
---- linux-3.18.5/drivers/block/loop.h 2013-11-25 15:44:28.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/block/loop.h 2015-01-19 10:57:46.000000000 +0000
-@@ -41,6 +41,7 @@ struct loop_device {
+diff -NurpP --minimal linux-4.1.12/drivers/block/loop.h linux-4.1.12-vs2.3.8.3/drivers/block/loop.h
+--- linux-4.1.12/drivers/block/loop.h 2015-10-29 09:20:05.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/block/loop.h 2015-10-29 09:25:25.000000000 +0000
+@@ -43,6 +43,7 @@ struct loop_device {
struct loop_func_table *lo_encryption;
__u32 lo_init[2];
kuid_t lo_key_owner; /* Who set the key */
@@ -831,9 +831,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/loop.h linux-3.18.5-vs2.3.7.3/d
int (*ioctl)(struct loop_device *, int cmd,
unsigned long arg);
-diff -NurpP --minimal linux-3.18.5/drivers/block/vroot.c linux-3.18.5-vs2.3.7.3/drivers/block/vroot.c
---- linux-3.18.5/drivers/block/vroot.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/block/vroot.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/block/vroot.c linux-4.1.12-vs2.3.8.3/drivers/block/vroot.c
+--- linux-4.1.12/drivers/block/vroot.c 1970-01-01 00:00:00.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/block/vroot.c 2015-07-06 20:43:43.000000000 +0000
@@ -0,0 +1,290 @@
+/*
+ * linux/drivers/block/vroot.c
@@ -886,7 +886,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/vroot.c linux-3.18.5-vs2.3.7.3/
+ goto out;
+
+ error = -EINVAL;
-+ inode = file->f_dentry->d_inode;
++ inode = file->f_path.dentry->d_inode;
+
+
+ if (S_ISBLK(inode->i_mode)) {
@@ -1125,9 +1125,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/block/vroot.c linux-3.18.5-vs2.3.7.3/
+
+#endif
+
-diff -NurpP --minimal linux-3.18.5/drivers/infiniband/core/addr.c linux-3.18.5-vs2.3.7.3/drivers/infiniband/core/addr.c
---- linux-3.18.5/drivers/infiniband/core/addr.c 2014-06-12 11:33:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/infiniband/core/addr.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/infiniband/core/addr.c linux-4.1.12-vs2.3.8.3/drivers/infiniband/core/addr.c
+--- linux-4.1.12/drivers/infiniband/core/addr.c 2015-07-06 20:41:38.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/infiniband/core/addr.c 2015-07-06 20:43:43.000000000 +0000
@@ -284,7 +284,7 @@ static int addr6_resolve(struct sockaddr
if (ipv6_addr_any(&fl6.saddr)) {
@@ -1137,9 +1137,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/infiniband/core/addr.c linux-3.18.5-v
if (ret)
goto put;
-diff -NurpP --minimal linux-3.18.5/drivers/md/dm-ioctl.c linux-3.18.5-vs2.3.7.3/drivers/md/dm-ioctl.c
---- linux-3.18.5/drivers/md/dm-ioctl.c 2015-01-17 02:39:51.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/md/dm-ioctl.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/md/dm-ioctl.c linux-4.1.12-vs2.3.8.3/drivers/md/dm-ioctl.c
+--- linux-4.1.12/drivers/md/dm-ioctl.c 2015-07-06 20:41:38.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/md/dm-ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -16,6 +16,7 @@
#include <linux/dm-ioctl.h>
#include <linux/hdreg.h>
@@ -1214,7 +1214,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm-ioctl.c linux-3.18.5-vs2.3.7.3/
if (old_nl)
old_nl->next = (uint32_t) ((void *) nl -
(void *) old_nl);
-@@ -1797,8 +1809,8 @@ static int ctl_ioctl(uint command, struc
+@@ -1801,8 +1813,8 @@ static int ctl_ioctl(uint command, struc
size_t input_param_size;
struct dm_ioctl param_kernel;
@@ -1225,18 +1225,18 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm-ioctl.c linux-3.18.5-vs2.3.7.3/
return -EACCES;
if (_IOC_TYPE(command) != DM_IOCTL)
-diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/drivers/md/dm.c
---- linux-3.18.5/drivers/md/dm.c 2015-02-05 18:02:42.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/md/dm.c 2015-01-28 11:48:02.000000000 +0000
-@@ -19,6 +19,7 @@
- #include <linux/idr.h>
- #include <linux/hdreg.h>
- #include <linux/delay.h>
+diff -NurpP --minimal linux-4.1.12/drivers/md/dm.c linux-4.1.12-vs2.3.8.3/drivers/md/dm.c
+--- linux-4.1.12/drivers/md/dm.c 2015-10-29 09:20:07.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/md/dm.c 2015-10-29 09:25:26.000000000 +0000
+@@ -24,6 +24,7 @@
+ #include <linux/ktime.h>
+ #include <linux/elevator.h> /* for rq_end_sector() */
+ #include <linux/blk-mq.h>
+#include <linux/vs_base.h>
#include <trace/events/block.h>
-@@ -134,6 +135,7 @@ struct mapped_device {
+@@ -141,6 +142,7 @@ struct mapped_device {
struct mutex suspend_lock;
atomic_t holders;
atomic_t open_count;
@@ -1244,7 +1244,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
/*
* The current mapping.
-@@ -397,6 +399,7 @@ int dm_deleting_md(struct mapped_device
+@@ -442,6 +444,7 @@ int dm_deleting_md(struct mapped_device
static int dm_blk_open(struct block_device *bdev, fmode_t mode)
{
struct mapped_device *md;
@@ -1252,7 +1252,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
spin_lock(&_minor_lock);
-@@ -405,18 +408,19 @@ static int dm_blk_open(struct block_devi
+@@ -450,17 +453,19 @@ static int dm_blk_open(struct block_devi
goto out;
if (test_bit(DMF_FREEING, &md->flags) ||
@@ -1268,7 +1268,6 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
dm_get(md);
atomic_inc(&md->open_count);
--
+ ret = 0;
out:
spin_unlock(&_minor_lock);
@@ -1278,7 +1277,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
}
static void dm_blk_close(struct gendisk *disk, fmode_t mode)
-@@ -819,6 +823,14 @@ int dm_set_geometry(struct mapped_device
+@@ -876,6 +881,14 @@ int dm_set_geometry(struct mapped_device
return 0;
}
@@ -1293,7 +1292,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
/*-----------------------------------------------------------------
* CRUD START:
* A more elegant soln is in the works that uses the queue
-@@ -2077,6 +2089,7 @@ static struct mapped_device *alloc_dev(i
+@@ -2293,6 +2306,7 @@ static struct mapped_device *alloc_dev(i
INIT_LIST_HEAD(&md->table_devices);
spin_lock_init(&md->uevent_lock);
@@ -1301,10 +1300,10 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.c linux-3.18.5-vs2.3.7.3/driver
md->queue = blk_alloc_queue(GFP_KERNEL);
if (!md->queue)
goto bad_queue;
-diff -NurpP --minimal linux-3.18.5/drivers/md/dm.h linux-3.18.5-vs2.3.7.3/drivers/md/dm.h
---- linux-3.18.5/drivers/md/dm.h 2015-01-17 02:39:51.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/md/dm.h 2015-01-19 10:57:46.000000000 +0000
-@@ -50,6 +50,8 @@ struct dm_dev_internal {
+diff -NurpP --minimal linux-4.1.12/drivers/md/dm.h linux-4.1.12-vs2.3.8.3/drivers/md/dm.h
+--- linux-4.1.12/drivers/md/dm.h 2015-07-06 20:41:38.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/md/dm.h 2015-07-06 20:43:43.000000000 +0000
+@@ -51,6 +51,8 @@ struct dm_dev_internal {
struct dm_table;
struct dm_md_mempools;
@@ -1313,18 +1312,18 @@ diff -NurpP --minimal linux-3.18.5/drivers/md/dm.h linux-3.18.5-vs2.3.7.3/driver
/*-----------------------------------------------------------------
* Internal table functions.
*---------------------------------------------------------------*/
-diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/drivers/net/tun.c
---- linux-3.18.5/drivers/net/tun.c 2015-01-17 02:40:00.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/net/tun.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/net/tun.c linux-4.1.12-vs2.3.8.3/drivers/net/tun.c
+--- linux-4.1.12/drivers/net/tun.c 2015-07-06 20:41:39.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/net/tun.c 2015-07-06 20:43:43.000000000 +0000
@@ -65,6 +65,7 @@
#include <linux/nsproxy.h>
#include <linux/virtio_net.h>
#include <linux/rcupdate.h>
+#include <linux/vs_network.h>
- #include <net/ipv6.h>
#include <net/net_namespace.h>
#include <net/netns/generic.h>
-@@ -171,6 +172,7 @@ struct tun_struct {
+ #include <net/rtnetlink.h>
+@@ -181,6 +182,7 @@ struct tun_struct {
unsigned int flags;
kuid_t owner;
kgid_t group;
@@ -1332,7 +1331,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/driv
struct net_device *dev;
netdev_features_t set_features;
-@@ -404,6 +406,7 @@ static inline bool tun_not_capable(struc
+@@ -421,6 +423,7 @@ static inline bool tun_not_capable(struc
return ((uid_valid(tun->owner) && !uid_eq(cred->euid, tun->owner)) ||
(gid_valid(tun->group) && !in_egroup_p(tun->group))) &&
!ns_capable(net->user_ns, CAP_NET_ADMIN);
@@ -1340,7 +1339,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/driv
}
static void tun_set_real_num_queues(struct tun_struct *tun)
-@@ -1413,6 +1416,7 @@ static void tun_setup(struct net_device
+@@ -1408,6 +1411,7 @@ static void tun_setup(struct net_device
tun->owner = INVALID_UID;
tun->group = INVALID_GID;
@@ -1348,7 +1347,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/driv
dev->ethtool_ops = &tun_ethtool_ops;
dev->destructor = tun_free_netdev;
-@@ -1629,7 +1633,7 @@ static int tun_set_iff(struct net *net,
+@@ -1608,7 +1612,7 @@ static int tun_set_iff(struct net *net,
int queues = ifr->ifr_flags & IFF_MULTI_QUEUE ?
MAX_TAP_QUEUES : 1;
@@ -1357,7 +1356,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/driv
return -EPERM;
err = security_tun_dev_create();
if (err < 0)
-@@ -1996,6 +2000,16 @@ static long __tun_chr_ioctl(struct file
+@@ -1957,6 +1961,16 @@ static long __tun_chr_ioctl(struct file
from_kgid(&init_user_ns, tun->group));
break;
@@ -1374,9 +1373,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/net/tun.c linux-3.18.5-vs2.3.7.3/driv
case TUNSETLINK:
/* Only allow setting the type when the interface is down */
if (tun->dev->flags & IFF_UP) {
-diff -NurpP --minimal linux-3.18.5/drivers/scsi/cxgbi/libcxgbi.c linux-3.18.5-vs2.3.7.3/drivers/scsi/cxgbi/libcxgbi.c
---- linux-3.18.5/drivers/scsi/cxgbi/libcxgbi.c 2015-01-17 02:40:05.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/scsi/cxgbi/libcxgbi.c 2015-02-06 01:59:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/scsi/cxgbi/libcxgbi.c linux-4.1.12-vs2.3.8.3/drivers/scsi/cxgbi/libcxgbi.c
+--- linux-4.1.12/drivers/scsi/cxgbi/libcxgbi.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/scsi/cxgbi/libcxgbi.c 2015-07-06 20:43:43.000000000 +0000
@@ -764,7 +764,8 @@ static struct cxgbi_sock *cxgbi_check_ro
struct inet6_dev *idev = ip6_dst_idev((struct dst_entry *)rt);
@@ -1387,9 +1386,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/scsi/cxgbi/libcxgbi.c linux-3.18.5-vs
if (err) {
pr_info("failed to get source address to reach %pI6\n",
&daddr6->sin6_addr);
-diff -NurpP --minimal linux-3.18.5/drivers/tty/sysrq.c linux-3.18.5-vs2.3.7.3/drivers/tty/sysrq.c
---- linux-3.18.5/drivers/tty/sysrq.c 2015-01-16 22:19:12.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/tty/sysrq.c 2015-01-19 11:01:25.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/tty/sysrq.c linux-4.1.12-vs2.3.8.3/drivers/tty/sysrq.c
+--- linux-4.1.12/drivers/tty/sysrq.c 2015-10-29 09:20:31.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/tty/sysrq.c 2015-10-29 09:25:27.000000000 +0000
@@ -47,6 +47,7 @@
#include <linux/syscalls.h>
#include <linux/of.h>
@@ -1398,7 +1397,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/sysrq.c linux-3.18.5-vs2.3.7.3/dr
#include <asm/ptrace.h>
#include <asm/irq_regs.h>
-@@ -408,6 +409,21 @@ static struct sysrq_key_op sysrq_unrt_op
+@@ -407,6 +408,21 @@ static struct sysrq_key_op sysrq_unrt_op
.enable_mask = SYSRQ_ENABLE_RTNICE,
};
@@ -1420,7 +1419,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/sysrq.c linux-3.18.5-vs2.3.7.3/dr
/* Key Operations table and lock */
static DEFINE_SPINLOCK(sysrq_key_table_lock);
-@@ -463,7 +479,11 @@ static struct sysrq_key_op *sysrq_key_ta
+@@ -462,7 +478,11 @@ static struct sysrq_key_op *sysrq_key_ta
&sysrq_showstate_blocked_op, /* w */
/* x: May be registered on ppc/powerpc for xmon */
/* x: May be registered on sparc64 for global PMU dump */
@@ -1432,7 +1431,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/sysrq.c linux-3.18.5-vs2.3.7.3/dr
/* y: May be registered on sparc64 for global register dump */
NULL, /* y */
&sysrq_ftrace_dump_op, /* z */
-@@ -478,6 +498,8 @@ static int sysrq_key_table_key2index(int
+@@ -477,6 +497,8 @@ static int sysrq_key_table_key2index(int
retval = key - '0';
else if ((key >= 'a') && (key <= 'z'))
retval = key + 10 - 'a';
@@ -1441,9 +1440,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/sysrq.c linux-3.18.5-vs2.3.7.3/dr
else
retval = -1;
return retval;
-diff -NurpP --minimal linux-3.18.5/drivers/tty/tty_io.c linux-3.18.5-vs2.3.7.3/drivers/tty/tty_io.c
---- linux-3.18.5/drivers/tty/tty_io.c 2015-01-17 02:40:14.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/drivers/tty/tty_io.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/drivers/tty/tty_io.c linux-4.1.12-vs2.3.8.3/drivers/tty/tty_io.c
+--- linux-4.1.12/drivers/tty/tty_io.c 2015-10-29 09:20:31.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/drivers/tty/tty_io.c 2015-10-29 09:25:27.000000000 +0000
@@ -104,6 +104,7 @@
#include <linux/kmod.h>
@@ -1452,7 +1451,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/tty_io.c linux-3.18.5-vs2.3.7.3/d
#undef TTY_DEBUG_HANGUP
-@@ -2237,7 +2238,8 @@ static int tiocsti(struct tty_struct *tt
+@@ -2283,7 +2284,8 @@ static int tiocsti(struct tty_struct *tt
char ch, mbz = 0;
struct tty_ldisc *ld;
@@ -1462,7 +1461,7 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/tty_io.c linux-3.18.5-vs2.3.7.3/d
return -EPERM;
if (get_user(ch, p))
return -EFAULT;
-@@ -2525,6 +2527,7 @@ static int tiocspgrp(struct tty_struct *
+@@ -2597,6 +2599,7 @@ static int tiocspgrp(struct tty_struct *
return -ENOTTY;
if (get_user(pgrp_nr, p))
return -EFAULT;
@@ -1470,9 +1469,9 @@ diff -NurpP --minimal linux-3.18.5/drivers/tty/tty_io.c linux-3.18.5-vs2.3.7.3/d
if (pgrp_nr < 0)
return -EINVAL;
rcu_read_lock();
-diff -NurpP --minimal linux-3.18.5/fs/attr.c linux-3.18.5-vs2.3.7.3/fs/attr.c
---- linux-3.18.5/fs/attr.c 2014-09-03 13:19:35.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/attr.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/attr.c linux-4.1.12-vs2.3.8.3/fs/attr.c
+--- linux-4.1.12/fs/attr.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/attr.c 2015-07-06 20:43:43.000000000 +0000
@@ -15,6 +15,9 @@
#include <linux/security.h>
#include <linux/evm.h>
@@ -1513,18 +1512,18 @@ diff -NurpP --minimal linux-3.18.5/fs/attr.c linux-3.18.5-vs2.3.7.3/fs/attr.c
if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
return -EPERM;
}
-diff -NurpP --minimal linux-3.18.5/fs/block_dev.c linux-3.18.5-vs2.3.7.3/fs/block_dev.c
---- linux-3.18.5/fs/block_dev.c 2015-01-17 02:40:16.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/block_dev.c 2015-01-19 10:57:46.000000000 +0000
-@@ -28,6 +28,7 @@
+diff -NurpP --minimal linux-4.1.12/fs/block_dev.c linux-4.1.12-vs2.3.8.3/fs/block_dev.c
+--- linux-4.1.12/fs/block_dev.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/block_dev.c 2015-10-29 09:25:27.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include <linux/namei.h>
#include <linux/log2.h>
#include <linux/cleancache.h>
- #include <linux/aio.h>
+#include <linux/vs_device.h>
#include <asm/uaccess.h>
#include "internal.h"
-@@ -575,6 +576,7 @@ struct block_device *bdget(dev_t dev)
+@@ -611,6 +612,7 @@ struct block_device *bdget(dev_t dev)
bdev->bd_invalidated = 0;
inode->i_mode = S_IFBLK;
inode->i_rdev = dev;
@@ -1532,7 +1531,7 @@ diff -NurpP --minimal linux-3.18.5/fs/block_dev.c linux-3.18.5-vs2.3.7.3/fs/bloc
inode->i_bdev = bdev;
inode->i_data.a_ops = &def_blk_aops;
mapping_set_gfp_mask(&inode->i_data, GFP_USER);
-@@ -622,6 +624,11 @@ EXPORT_SYMBOL(bdput);
+@@ -657,6 +659,11 @@ EXPORT_SYMBOL(bdput);
static struct block_device *bd_acquire(struct inode *inode)
{
struct block_device *bdev;
@@ -1544,7 +1543,7 @@ diff -NurpP --minimal linux-3.18.5/fs/block_dev.c linux-3.18.5-vs2.3.7.3/fs/bloc
spin_lock(&bdev_lock);
bdev = inode->i_bdev;
-@@ -632,7 +639,7 @@ static struct block_device *bd_acquire(s
+@@ -667,7 +674,7 @@ static struct block_device *bd_acquire(s
}
spin_unlock(&bdev_lock);
@@ -1553,10 +1552,10 @@ diff -NurpP --minimal linux-3.18.5/fs/block_dev.c linux-3.18.5-vs2.3.7.3/fs/bloc
if (bdev) {
spin_lock(&bdev_lock);
if (!inode->i_bdev) {
-diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/btrfs/ctree.h
---- linux-3.18.5/fs/btrfs/ctree.h 2015-01-17 02:40:16.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/btrfs/ctree.h 2015-01-19 10:57:46.000000000 +0000
-@@ -728,11 +728,14 @@ struct btrfs_inode_item {
+diff -NurpP --minimal linux-4.1.12/fs/btrfs/ctree.h linux-4.1.12-vs2.3.8.3/fs/btrfs/ctree.h
+--- linux-4.1.12/fs/btrfs/ctree.h 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/btrfs/ctree.h 2015-07-06 20:43:43.000000000 +0000
+@@ -731,11 +731,14 @@ struct btrfs_inode_item {
/* modification sequence number for NFS */
__le64 sequence;
@@ -1572,7 +1571,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/bt
struct btrfs_timespec atime;
struct btrfs_timespec ctime;
struct btrfs_timespec mtime;
-@@ -2098,6 +2101,8 @@ struct btrfs_ioctl_defrag_range_args {
+@@ -2156,6 +2159,8 @@ struct btrfs_ioctl_defrag_range_args {
#define BTRFS_DEFAULT_COMMIT_INTERVAL (30)
#define BTRFS_DEFAULT_MAX_INLINE (8192)
@@ -1581,7 +1580,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/bt
#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
#define btrfs_raw_test_opt(o, opt) ((o) & BTRFS_MOUNT_##opt)
-@@ -2381,6 +2386,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
+@@ -2483,6 +2488,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
BTRFS_SETGET_FUNCS(inode_nlink, struct btrfs_inode_item, nlink, 32);
BTRFS_SETGET_FUNCS(inode_uid, struct btrfs_inode_item, uid, 32);
BTRFS_SETGET_FUNCS(inode_gid, struct btrfs_inode_item, gid, 32);
@@ -1589,7 +1588,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/bt
BTRFS_SETGET_FUNCS(inode_mode, struct btrfs_inode_item, mode, 32);
BTRFS_SETGET_FUNCS(inode_rdev, struct btrfs_inode_item, rdev, 64);
BTRFS_SETGET_FUNCS(inode_flags, struct btrfs_inode_item, flags, 64);
-@@ -2453,6 +2459,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct
+@@ -2530,6 +2536,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct
BTRFS_SETGET_FUNCS(extent_refs_v0, struct btrfs_extent_item_v0, refs, 32);
@@ -1600,7 +1599,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/bt
BTRFS_SETGET_FUNCS(tree_block_level, struct btrfs_tree_block_info, level, 8);
-@@ -3864,6 +3874,7 @@ long btrfs_ioctl(struct file *file, unsi
+@@ -3959,6 +3969,7 @@ long btrfs_ioctl(struct file *file, unsi
void btrfs_update_iflags(struct inode *inode);
void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
int btrfs_is_empty_uuid(u8 *uuid);
@@ -1608,10 +1607,10 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ctree.h linux-3.18.5-vs2.3.7.3/fs/bt
int btrfs_defrag_file(struct inode *inode, struct file *file,
struct btrfs_ioctl_defrag_range_args *range,
u64 newer_than, unsigned long max_pages);
-diff -NurpP --minimal linux-3.18.5/fs/btrfs/disk-io.c linux-3.18.5-vs2.3.7.3/fs/btrfs/disk-io.c
---- linux-3.18.5/fs/btrfs/disk-io.c 2015-02-05 18:02:44.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/btrfs/disk-io.c 2015-01-19 10:57:46.000000000 +0000
-@@ -2460,6 +2460,9 @@ int open_ctree(struct super_block *sb,
+diff -NurpP --minimal linux-4.1.12/fs/btrfs/disk-io.c linux-4.1.12-vs2.3.8.3/fs/btrfs/disk-io.c
+--- linux-4.1.12/fs/btrfs/disk-io.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/btrfs/disk-io.c 2015-07-06 20:43:43.000000000 +0000
+@@ -2668,6 +2668,9 @@ int open_ctree(struct super_block *sb,
goto fail_alloc;
}
@@ -1621,18 +1620,18 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/disk-io.c linux-3.18.5-vs2.3.7.3/fs/
features = btrfs_super_incompat_flags(disk_super) &
~BTRFS_FEATURE_INCOMPAT_SUPP;
if (features) {
-diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/btrfs/inode.c
---- linux-3.18.5/fs/btrfs/inode.c 2015-01-17 02:40:16.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/btrfs/inode.c 2015-01-19 12:26:30.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/btrfs/inode.c linux-4.1.12-vs2.3.8.3/fs/btrfs/inode.c
+--- linux-4.1.12/fs/btrfs/inode.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/btrfs/inode.c 2015-10-29 09:25:27.000000000 +0000
@@ -43,6 +43,7 @@
- #include <linux/btrfs.h>
#include <linux/blkdev.h>
#include <linux/posix_acl_xattr.h>
+ #include <linux/uio.h>
+#include <linux/vs_tag.h>
#include "ctree.h"
#include "disk-io.h"
#include "transaction.h"
-@@ -3477,6 +3478,9 @@ static void btrfs_read_locked_inode(stru
+@@ -3583,6 +3584,9 @@ static void btrfs_read_locked_inode(stru
unsigned long ptr;
int maybe_acls;
u32 rdev;
@@ -1642,7 +1641,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
int ret;
bool filled = false;
int first_xattr_slot;
-@@ -3504,8 +3508,14 @@ static void btrfs_read_locked_inode(stru
+@@ -3610,8 +3614,14 @@ static void btrfs_read_locked_inode(stru
struct btrfs_inode_item);
inode->i_mode = btrfs_inode_mode(leaf, inode_item);
set_nlink(inode, btrfs_inode_nlink(leaf, inode_item));
@@ -1658,8 +1657,8 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
+ inode->i_tag = INOTAG_KTAG(DX_TAG(inode), kuid, kgid, ktag);
btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item));
- tspec = btrfs_inode_atime(inode_item);
-@@ -3629,11 +3639,18 @@ static void fill_inode_item(struct btrfs
+ inode->i_atime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->atime);
+@@ -3738,11 +3748,18 @@ static void fill_inode_item(struct btrfs
struct inode *inode)
{
struct btrfs_map_token token;
@@ -1680,7 +1679,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
btrfs_set_token_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size,
&token);
btrfs_set_token_inode_mode(leaf, item, inode->i_mode, &token);
-@@ -9459,6 +9476,7 @@ static const struct inode_operations btr
+@@ -9794,6 +9811,7 @@ static const struct inode_operations btr
.listxattr = btrfs_listxattr,
.removexattr = btrfs_removexattr,
.permission = btrfs_permission,
@@ -1688,7 +1687,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
.get_acl = btrfs_get_acl,
.set_acl = btrfs_set_acl,
.update_time = btrfs_update_time,
-@@ -9467,6 +9485,7 @@ static const struct inode_operations btr
+@@ -9802,6 +9820,7 @@ static const struct inode_operations btr
static const struct inode_operations btrfs_dir_ro_inode_operations = {
.lookup = btrfs_lookup,
.permission = btrfs_permission,
@@ -1696,7 +1695,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
.get_acl = btrfs_get_acl,
.set_acl = btrfs_set_acl,
.update_time = btrfs_update_time,
-@@ -9537,6 +9556,7 @@ static const struct inode_operations btr
+@@ -9872,6 +9891,7 @@ static const struct inode_operations btr
.removexattr = btrfs_removexattr,
.permission = btrfs_permission,
.fiemap = btrfs_fiemap,
@@ -1704,9 +1703,9 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/inode.c linux-3.18.5-vs2.3.7.3/fs/bt
.get_acl = btrfs_get_acl,
.set_acl = btrfs_set_acl,
.update_time = btrfs_update_time,
-diff -NurpP --minimal linux-3.18.5/fs/btrfs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/btrfs/ioctl.c
---- linux-3.18.5/fs/btrfs/ioctl.c 2015-01-17 02:40:16.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/btrfs/ioctl.c 2015-01-21 09:54:51.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/btrfs/ioctl.c linux-4.1.12-vs2.3.8.3/fs/btrfs/ioctl.c
+--- linux-4.1.12/fs/btrfs/ioctl.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/btrfs/ioctl.c 2015-10-29 09:25:27.000000000 +0000
@@ -107,10 +107,13 @@ static unsigned int btrfs_flags_to_ioctl
{
unsigned int iflags = 0;
@@ -1885,9 +1884,9 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/bt
if (flags & FS_APPEND_FL)
ip->flags |= BTRFS_INODE_APPEND;
else
-diff -NurpP --minimal linux-3.18.5/fs/btrfs/super.c linux-3.18.5-vs2.3.7.3/fs/btrfs/super.c
---- linux-3.18.5/fs/btrfs/super.c 2015-02-05 18:02:44.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/btrfs/super.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/btrfs/super.c linux-4.1.12-vs2.3.8.3/fs/btrfs/super.c
+--- linux-4.1.12/fs/btrfs/super.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/btrfs/super.c 2015-07-06 20:43:43.000000000 +0000
@@ -325,7 +325,7 @@ enum {
Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
@@ -1930,7 +1929,7 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/super.c linux-3.18.5-vs2.3.7.3/fs/bt
case Opt_err:
btrfs_info(root->fs_info, "unrecognized mount option '%s'", p);
ret = -EINVAL;
-@@ -1495,6 +1514,12 @@ static int btrfs_remount(struct super_bl
+@@ -1522,6 +1541,12 @@ static int btrfs_remount(struct super_bl
btrfs_resize_thread_pool(fs_info,
fs_info->thread_pool_size, old_thread_pool_size);
@@ -1943,9 +1942,9 @@ diff -NurpP --minimal linux-3.18.5/fs/btrfs/super.c linux-3.18.5-vs2.3.7.3/fs/bt
if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
goto out;
-diff -NurpP --minimal linux-3.18.5/fs/char_dev.c linux-3.18.5-vs2.3.7.3/fs/char_dev.c
---- linux-3.18.5/fs/char_dev.c 2014-01-22 20:39:05.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/char_dev.c 2015-01-19 10:57:46.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/char_dev.c linux-4.1.12-vs2.3.8.3/fs/char_dev.c
+--- linux-4.1.12/fs/char_dev.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/char_dev.c 2015-07-06 20:43:43.000000000 +0000
@@ -21,6 +21,8 @@
#include <linux/mutex.h>
#include <linux/backing-dev.h>
@@ -1955,7 +1954,7 @@ diff -NurpP --minimal linux-3.18.5/fs/char_dev.c linux-3.18.5-vs2.3.7.3/fs/char_
#include "internal.h"
-@@ -372,14 +374,21 @@ static int chrdev_open(struct inode *ino
+@@ -350,14 +352,21 @@ static int chrdev_open(struct inode *ino
struct cdev *p;
struct cdev *new = NULL;
int ret = 0;
@@ -1978,18 +1977,18 @@ diff -NurpP --minimal linux-3.18.5/fs/char_dev.c linux-3.18.5-vs2.3.7.3/fs/char_
if (!kobj)
return -ENXIO;
new = container_of(kobj, struct cdev, kobj);
-diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.c
---- linux-3.18.5/fs/dcache.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/dcache.c 2015-01-19 12:06:59.000000000 +0000
-@@ -38,6 +38,7 @@
- #include <linux/prefetch.h>
+diff -NurpP --minimal linux-4.1.12/fs/dcache.c linux-4.1.12-vs2.3.8.3/fs/dcache.c
+--- linux-4.1.12/fs/dcache.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/dcache.c 2015-10-29 09:25:27.000000000 +0000
+@@ -39,6 +39,7 @@
#include <linux/ratelimit.h>
#include <linux/list_lru.h>
+ #include <linux/kasan.h>
+#include <linux/vs_limit.h>
+
#include "internal.h"
#include "mount.h"
-
-@@ -654,6 +655,7 @@ EXPORT_SYMBOL(dput);
+@@ -804,6 +805,7 @@ EXPORT_SYMBOL(dput);
static inline void __dget_dlock(struct dentry *dentry)
{
dentry->d_lockref.count++;
@@ -1997,7 +1996,7 @@ diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.
}
static inline void __dget(struct dentry *dentry)
-@@ -666,6 +668,8 @@ struct dentry *dget_parent(struct dentry
+@@ -816,6 +818,8 @@ struct dentry *dget_parent(struct dentry
int gotref;
struct dentry *ret;
@@ -2006,7 +2005,7 @@ diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.
/*
* Do optimistic parent lookup without any
* locking.
-@@ -1410,6 +1414,9 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1558,6 +1562,9 @@ struct dentry *__d_alloc(struct super_bl
struct dentry *dentry;
char *dname;
@@ -2016,7 +2015,7 @@ diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.
dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL);
if (!dentry)
return NULL;
-@@ -1445,6 +1452,7 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1596,6 +1603,7 @@ struct dentry *__d_alloc(struct super_bl
dentry->d_lockref.count = 1;
dentry->d_flags = 0;
@@ -2024,7 +2023,7 @@ diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.
spin_lock_init(&dentry->d_lock);
seqcount_init(&dentry->d_seq);
dentry->d_inode = NULL;
-@@ -2184,6 +2192,7 @@ struct dentry *__d_lookup(const struct d
+@@ -2328,6 +2336,7 @@ struct dentry *__d_lookup(const struct d
}
dentry->d_lockref.count++;
@@ -2032,9 +2031,9 @@ diff -NurpP --minimal linux-3.18.5/fs/dcache.c linux-3.18.5-vs2.3.7.3/fs/dcache.
found = dentry;
spin_unlock(&dentry->d_lock);
break;
-diff -NurpP --minimal linux-3.18.5/fs/devpts/inode.c linux-3.18.5-vs2.3.7.3/fs/devpts/inode.c
---- linux-3.18.5/fs/devpts/inode.c 2014-09-03 13:19:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/devpts/inode.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/devpts/inode.c linux-4.1.12-vs2.3.8.3/fs/devpts/inode.c
+--- linux-4.1.12/fs/devpts/inode.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/devpts/inode.c 2015-07-06 20:43:43.000000000 +0000
@@ -27,6 +27,7 @@
#include <linux/parser.h>
#include <linux/fsnotify.h>
@@ -2122,9 +2121,9 @@ diff -NurpP --minimal linux-3.18.5/fs/devpts/inode.c linux-3.18.5-vs2.3.7.3/fs/d
inode->i_private = priv;
sprintf(s, "%d", index);
-diff -NurpP --minimal linux-3.18.5/fs/ext2/balloc.c linux-3.18.5-vs2.3.7.3/fs/ext2/balloc.c
---- linux-3.18.5/fs/ext2/balloc.c 2013-05-31 13:45:23.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/balloc.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/balloc.c linux-4.1.12-vs2.3.8.3/fs/ext2/balloc.c
+--- linux-4.1.12/fs/ext2/balloc.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/balloc.c 2015-07-06 20:43:43.000000000 +0000
@@ -693,7 +693,6 @@ ext2_try_to_allocate(struct super_block
start = 0;
end = EXT2_BLOCKS_PER_GROUP(sb);
@@ -2133,9 +2132,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/balloc.c linux-3.18.5-vs2.3.7.3/fs/ex
BUG_ON(start > EXT2_BLOCKS_PER_GROUP(sb));
repeat:
-diff -NurpP --minimal linux-3.18.5/fs/ext2/ext2.h linux-3.18.5-vs2.3.7.3/fs/ext2/ext2.h
---- linux-3.18.5/fs/ext2/ext2.h 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/ext2.h 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/ext2.h linux-4.1.12-vs2.3.8.3/fs/ext2/ext2.h
+--- linux-4.1.12/fs/ext2/ext2.h 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/ext2.h 2015-07-06 20:43:43.000000000 +0000
@@ -244,8 +244,12 @@ struct ext2_group_desc
#define EXT2_NOTAIL_FL FS_NOTAIL_FL /* file tail should not be merged */
#define EXT2_DIRSYNC_FL FS_DIRSYNC_FL /* dirsync behaviour (directories only) */
@@ -2167,15 +2166,15 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/ext2.h linux-3.18.5-vs2.3.7.3/fs/ext2
#define i_reserved2 osd2.linux2.l_i_reserved2
/*
-@@ -384,6 +390,7 @@ struct ext2_inode {
- #define EXT2_MOUNT_USRQUOTA 0x020000 /* user quota */
- #define EXT2_MOUNT_GRPQUOTA 0x040000 /* group quota */
- #define EXT2_MOUNT_RESERVATION 0x080000 /* Preallocation */
-+#define EXT2_MOUNT_TAGGED (1<<24) /* Enable Context Tags */
+@@ -389,6 +395,7 @@ struct ext2_inode {
+ #else
+ #define EXT2_MOUNT_DAX 0
+ #endif
++#define EXT2_MOUNT_TAGGED 0x200000 /* Enable Context Tags */
#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt
-@@ -757,6 +764,7 @@ extern void ext2_set_inode_flags(struct
+@@ -765,6 +772,7 @@ extern void ext2_set_inode_flags(struct
extern void ext2_get_inode_flags(struct ext2_inode_info *);
extern int ext2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
u64 start, u64 len);
@@ -2183,18 +2182,18 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/ext2.h linux-3.18.5-vs2.3.7.3/fs/ext2
/* ioctl.c */
extern long ext2_ioctl(struct file *, unsigned int, unsigned long);
-diff -NurpP --minimal linux-3.18.5/fs/ext2/file.c linux-3.18.5-vs2.3.7.3/fs/ext2/file.c
---- linux-3.18.5/fs/ext2/file.c 2014-09-03 13:19:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/file.c 2015-01-19 10:57:47.000000000 +0000
-@@ -105,4 +105,5 @@ const struct inode_operations ext2_file_
+diff -NurpP --minimal linux-4.1.12/fs/ext2/file.c linux-4.1.12-vs2.3.8.3/fs/ext2/file.c
+--- linux-4.1.12/fs/ext2/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/file.c 2015-07-06 20:43:43.000000000 +0000
+@@ -118,4 +118,5 @@ const struct inode_operations ext2_file_
.get_acl = ext2_get_acl,
.set_acl = ext2_set_acl,
.fiemap = ext2_fiemap,
+ .sync_flags = ext2_sync_flags,
};
-diff -NurpP --minimal linux-3.18.5/fs/ext2/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ext2/ialloc.c
---- linux-3.18.5/fs/ext2/ialloc.c 2014-06-12 13:02:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/ialloc.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/ialloc.c linux-4.1.12-vs2.3.8.3/fs/ext2/ialloc.c
+--- linux-4.1.12/fs/ext2/ialloc.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/ialloc.c 2015-07-06 20:43:43.000000000 +0000
@@ -17,6 +17,7 @@
#include <linux/backing-dev.h>
#include <linux/buffer_head.h>
@@ -2211,17 +2210,17 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ex
} else
inode_init_owner(inode, dir, mode);
-diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext2/inode.c
---- linux-3.18.5/fs/ext2/inode.c 2014-09-03 13:19:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/inode.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/inode.c linux-4.1.12-vs2.3.8.3/fs/ext2/inode.c
+--- linux-4.1.12/fs/ext2/inode.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/inode.c 2015-07-06 21:27:56.000000000 +0000
@@ -32,6 +32,7 @@
#include <linux/fiemap.h>
#include <linux/namei.h>
- #include <linux/aio.h>
+ #include <linux/uio.h>
+#include <linux/vs_tag.h>
#include "ext2.h"
#include "acl.h"
- #include "xip.h"
+ #include "xattr.h"
@@ -1182,7 +1183,7 @@ static void ext2_truncate_blocks(struct
return;
if (ext2_inode_is_fast_symlink(inode))
@@ -2231,15 +2230,15 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
return;
__ext2_truncate_blocks(inode, offset);
}
-@@ -1273,36 +1274,61 @@ void ext2_set_inode_flags(struct inode *
+@@ -1273,39 +1274,62 @@ void ext2_set_inode_flags(struct inode *
{
unsigned int flags = EXT2_I(inode)->i_flags;
-- inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
-+ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
+- inode->i_flags &= ~(S_SYNC | S_APPEND | S_IMMUTABLE | S_NOATIME |
+- S_DIRSYNC | S_DAX);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK | S_DAX |
+ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
-+
+ if (flags & EXT2_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
+ if (flags & EXT2_IXUNLINK_FL)
@@ -2255,6 +2254,8 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
inode->i_flags |= S_NOATIME;
if (flags & EXT2_DIRSYNC_FL)
inode->i_flags |= S_DIRSYNC;
+ if (test_opt(inode->i_sb, DAX))
+ inode->i_flags |= S_DAX;
+
+ inode->i_vflags &= ~(V_BARRIER | V_COW);
+
@@ -2300,7 +2301,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
}
struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
-@@ -1338,8 +1364,10 @@ struct inode *ext2_iget (struct super_bl
+@@ -1341,8 +1365,10 @@ struct inode *ext2_iget (struct super_bl
i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
}
@@ -2313,7 +2314,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
inode->i_size = le32_to_cpu(raw_inode->i_size);
inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
-@@ -1437,8 +1465,10 @@ static int __ext2_write_inode(struct ino
+@@ -1437,8 +1463,10 @@ static int __ext2_write_inode(struct ino
struct ext2_inode_info *ei = EXT2_I(inode);
struct super_block *sb = inode->i_sb;
ino_t ino = inode->i_ino;
@@ -2326,7 +2327,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
struct buffer_head * bh;
struct ext2_inode * raw_inode = ext2_get_inode(sb, ino, &bh);
int n;
-@@ -1474,6 +1504,9 @@ static int __ext2_write_inode(struct ino
+@@ -1474,6 +1502,9 @@ static int __ext2_write_inode(struct ino
raw_inode->i_uid_high = 0;
raw_inode->i_gid_high = 0;
}
@@ -2336,7 +2337,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
raw_inode->i_size = cpu_to_le32(inode->i_size);
raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
-@@ -1554,7 +1587,8 @@ int ext2_setattr(struct dentry *dentry,
+@@ -1554,7 +1585,8 @@ int ext2_setattr(struct dentry *dentry,
if (is_quota_modification(inode, iattr))
dquot_initialize(inode);
if ((iattr->ia_valid & ATTR_UID && !uid_eq(iattr->ia_uid, inode->i_uid)) ||
@@ -2346,9 +2347,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
error = dquot_transfer(inode, iattr);
if (error)
return error;
-diff -NurpP --minimal linux-3.18.5/fs/ext2/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext2/ioctl.c
---- linux-3.18.5/fs/ext2/ioctl.c 2013-05-31 13:45:23.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/ioctl.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/ioctl.c linux-4.1.12-vs2.3.8.3/fs/ext2/ioctl.c
+--- linux-4.1.12/fs/ext2/ioctl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -17,6 +17,16 @@
#include <asm/uaccess.h>
@@ -2398,9 +2399,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext
flags |= oldflags & ~EXT2_FL_USER_MODIFIABLE;
ei->i_flags = flags;
-diff -NurpP --minimal linux-3.18.5/fs/ext2/namei.c linux-3.18.5-vs2.3.7.3/fs/ext2/namei.c
---- linux-3.18.5/fs/ext2/namei.c 2014-06-12 11:34:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/namei.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext2/namei.c linux-4.1.12-vs2.3.8.3/fs/ext2/namei.c
+--- linux-4.1.12/fs/ext2/namei.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/namei.c 2015-07-06 20:43:43.000000000 +0000
@@ -32,6 +32,7 @@
#include <linux/pagemap.h>
@@ -2409,7 +2410,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
#include "ext2.h"
#include "xattr.h"
#include "acl.h"
-@@ -73,6 +74,7 @@ static struct dentry *ext2_lookup(struct
+@@ -72,6 +73,7 @@ static struct dentry *ext2_lookup(struct
(unsigned long) ino);
return ERR_PTR(-EIO);
}
@@ -2417,7 +2418,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
}
return d_splice_alias(inode, dentry);
}
-@@ -433,6 +435,7 @@ const struct inode_operations ext2_speci
+@@ -426,6 +428,7 @@ const struct inode_operations ext2_speci
.removexattr = generic_removexattr,
#endif
.setattr = ext2_setattr,
@@ -2425,30 +2426,30 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
.get_acl = ext2_get_acl,
.set_acl = ext2_set_acl,
};
-diff -NurpP --minimal linux-3.18.5/fs/ext2/super.c linux-3.18.5-vs2.3.7.3/fs/ext2/super.c
---- linux-3.18.5/fs/ext2/super.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext2/super.c 2015-01-19 10:57:47.000000000 +0000
-@@ -395,7 +395,8 @@ enum {
+diff -NurpP --minimal linux-4.1.12/fs/ext2/super.c linux-4.1.12-vs2.3.8.3/fs/ext2/super.c
+--- linux-4.1.12/fs/ext2/super.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext2/super.c 2015-07-06 20:43:43.000000000 +0000
+@@ -405,7 +405,8 @@ enum {
Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
- Opt_acl, Opt_noacl, Opt_xip, Opt_ignore, Opt_err, Opt_quota,
+ Opt_acl, Opt_noacl, Opt_xip, Opt_dax, Opt_ignore, Opt_err, Opt_quota,
- Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation
+ Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation,
+ Opt_tag, Opt_notag, Opt_tagid
};
static const match_table_t tokens = {
-@@ -423,6 +424,9 @@ static const match_table_t tokens = {
+@@ -433,6 +434,9 @@ static const match_table_t tokens = {
{Opt_acl, "acl"},
{Opt_noacl, "noacl"},
{Opt_xip, "xip"},
+ {Opt_tag, "tag"},
+ {Opt_notag, "notag"},
+ {Opt_tagid, "tagid=%u"},
+ {Opt_dax, "dax"},
{Opt_grpquota, "grpquota"},
{Opt_ignore, "noquota"},
- {Opt_quota, "quota"},
-@@ -506,6 +510,20 @@ static int parse_options(char *options,
+@@ -517,6 +521,20 @@ static int parse_options(char *options,
case Opt_nouid32:
set_opt (sbi->s_mount_opt, NO_UID32);
break;
@@ -2469,7 +2470,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/super.c linux-3.18.5-vs2.3.7.3/fs/ext
case Opt_nocheck:
clear_opt (sbi->s_mount_opt, CHECK);
break;
-@@ -864,6 +882,8 @@ static int ext2_fill_super(struct super_
+@@ -879,6 +897,8 @@ static int ext2_fill_super(struct super_
if (!parse_options((char *) data, sb))
goto failed_mount;
@@ -2478,7 +2479,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
((EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ?
MS_POSIXACL : 0);
-@@ -1270,6 +1290,14 @@ static int ext2_remount (struct super_bl
+@@ -1288,6 +1308,14 @@ static int ext2_remount (struct super_bl
err = -EINVAL;
goto restore_opts;
}
@@ -2493,9 +2494,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext2/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
-diff -NurpP --minimal linux-3.18.5/fs/ext3/ext3.h linux-3.18.5-vs2.3.7.3/fs/ext3/ext3.h
---- linux-3.18.5/fs/ext3/ext3.h 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/ext3.h 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext3/ext3.h linux-4.1.12-vs2.3.8.3/fs/ext3/ext3.h
+--- linux-4.1.12/fs/ext3/ext3.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/ext3.h 2015-07-06 20:43:43.000000000 +0000
@@ -151,10 +151,14 @@ struct ext3_group_desc
#define EXT3_NOTAIL_FL 0x00008000 /* file tail should not be merged */
#define EXT3_DIRSYNC_FL 0x00010000 /* dirsync behaviour (directories only) */
@@ -2539,7 +2540,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/ext3.h linux-3.18.5-vs2.3.7.3/fs/ext3
/* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */
#ifndef _LINUX_EXT2_FS_H
-@@ -1063,6 +1070,7 @@ extern void ext3_get_inode_flags(struct
+@@ -1067,6 +1074,7 @@ extern void ext3_get_inode_flags(struct
extern void ext3_set_aops(struct inode *inode);
extern int ext3_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
u64 start, u64 len);
@@ -2547,19 +2548,19 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/ext3.h linux-3.18.5-vs2.3.7.3/fs/ext3
/* ioctl.c */
extern long ext3_ioctl(struct file *, unsigned int, unsigned long);
-diff -NurpP --minimal linux-3.18.5/fs/ext3/file.c linux-3.18.5-vs2.3.7.3/fs/ext3/file.c
---- linux-3.18.5/fs/ext3/file.c 2014-09-03 13:19:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/file.c 2015-01-19 10:57:47.000000000 +0000
-@@ -77,5 +77,6 @@ const struct inode_operations ext3_file_
+diff -NurpP --minimal linux-4.1.12/fs/ext3/file.c linux-4.1.12-vs2.3.8.3/fs/ext3/file.c
+--- linux-4.1.12/fs/ext3/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/file.c 2015-07-06 20:43:43.000000000 +0000
+@@ -75,5 +75,6 @@ const struct inode_operations ext3_file_
.get_acl = ext3_get_acl,
.set_acl = ext3_set_acl,
.fiemap = ext3_fiemap,
+ .sync_flags = ext3_sync_flags,
};
-diff -NurpP --minimal linux-3.18.5/fs/ext3/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ext3/ialloc.c
---- linux-3.18.5/fs/ext3/ialloc.c 2014-06-12 13:02:41.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/ialloc.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext3/ialloc.c linux-4.1.12-vs2.3.8.3/fs/ext3/ialloc.c
+--- linux-4.1.12/fs/ext3/ialloc.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/ialloc.c 2015-07-06 20:43:43.000000000 +0000
@@ -14,6 +14,7 @@
#include <linux/quotaops.h>
@@ -2576,19 +2577,18 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ex
} else
inode_init_owner(inode, dir, mode);
-diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext3/inode.c
---- linux-3.18.5/fs/ext3/inode.c 2014-09-03 13:19:39.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/inode.c 2015-01-19 10:57:47.000000000 +0000
-@@ -28,6 +28,8 @@
+diff -NurpP --minimal linux-4.1.12/fs/ext3/inode.c linux-4.1.12-vs2.3.8.3/fs/ext3/inode.c
+--- linux-4.1.12/fs/ext3/inode.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/inode.c 2015-07-06 21:27:33.000000000 +0000
+@@ -28,6 +28,7 @@
#include <linux/mpage.h>
#include <linux/namei.h>
- #include <linux/aio.h>
+ #include <linux/uio.h>
+#include <linux/vs_tag.h>
-+
#include "ext3.h"
#include "xattr.h"
#include "acl.h"
-@@ -2813,36 +2815,60 @@ void ext3_set_inode_flags(struct inode *
+@@ -2813,36 +2814,60 @@ void ext3_set_inode_flags(struct inode *
{
unsigned int flags = EXT3_I(inode)->i_flags;
@@ -2656,7 +2656,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
}
struct inode *ext3_iget(struct super_block *sb, unsigned long ino)
-@@ -2880,8 +2906,10 @@ struct inode *ext3_iget(struct super_blo
+@@ -2880,8 +2905,10 @@ struct inode *ext3_iget(struct super_blo
i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
}
@@ -2669,7 +2669,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
inode->i_size = le32_to_cpu(raw_inode->i_size);
inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
-@@ -3053,8 +3081,10 @@ again:
+@@ -3053,8 +3080,10 @@ again:
ext3_get_inode_flags(ei);
raw_inode->i_mode = cpu_to_le16(inode->i_mode);
@@ -2682,7 +2682,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
if(!(test_opt(inode->i_sb, NO_UID32))) {
raw_inode->i_uid_low = cpu_to_le16(low_16_bits(i_uid));
raw_inode->i_gid_low = cpu_to_le16(low_16_bits(i_gid));
-@@ -3079,6 +3109,9 @@ again:
+@@ -3079,6 +3108,9 @@ again:
raw_inode->i_uid_high = 0;
raw_inode->i_gid_high = 0;
}
@@ -2692,7 +2692,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
disksize = cpu_to_le32(ei->i_disksize);
if (disksize != raw_inode->i_size) {
-@@ -3251,7 +3284,8 @@ int ext3_setattr(struct dentry *dentry,
+@@ -3251,7 +3283,8 @@ int ext3_setattr(struct dentry *dentry,
if (is_quota_modification(inode, attr))
dquot_initialize(inode);
if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
@@ -2702,7 +2702,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
handle_t *handle;
/* (user+group)*(old+new) structure, inode write (sb,
-@@ -3273,6 +3307,8 @@ int ext3_setattr(struct dentry *dentry,
+@@ -3273,6 +3306,8 @@ int ext3_setattr(struct dentry *dentry,
inode->i_uid = attr->ia_uid;
if (attr->ia_valid & ATTR_GID)
inode->i_gid = attr->ia_gid;
@@ -2711,9 +2711,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
error = ext3_mark_inode_dirty(handle, inode);
ext3_journal_stop(handle);
}
-diff -NurpP --minimal linux-3.18.5/fs/ext3/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext3/ioctl.c
---- linux-3.18.5/fs/ext3/ioctl.c 2013-05-31 13:45:23.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/ioctl.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext3/ioctl.c linux-4.1.12-vs2.3.8.3/fs/ext3/ioctl.c
+--- linux-4.1.12/fs/ext3/ioctl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -12,6 +12,34 @@
#include <asm/uaccess.h>
#include "ext3.h"
@@ -2781,9 +2781,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext
flags |= oldflags & ~EXT3_FL_USER_MODIFIABLE;
ei->i_flags = flags;
-diff -NurpP --minimal linux-3.18.5/fs/ext3/namei.c linux-3.18.5-vs2.3.7.3/fs/ext3/namei.c
---- linux-3.18.5/fs/ext3/namei.c 2014-06-12 11:34:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/namei.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext3/namei.c linux-4.1.12-vs2.3.8.3/fs/ext3/namei.c
+--- linux-4.1.12/fs/ext3/namei.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/namei.c 2015-07-06 20:43:43.000000000 +0000
@@ -25,6 +25,8 @@
*/
@@ -2809,10 +2809,10 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
.get_acl = ext3_get_acl,
.set_acl = ext3_set_acl,
};
-diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext3/super.c
---- linux-3.18.5/fs/ext3/super.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext3/super.c 2015-01-19 10:57:47.000000000 +0000
-@@ -826,7 +826,8 @@ enum {
+diff -NurpP --minimal linux-4.1.12/fs/ext3/super.c linux-4.1.12-vs2.3.8.3/fs/ext3/super.c
+--- linux-4.1.12/fs/ext3/super.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext3/super.c 2015-07-06 20:43:43.000000000 +0000
+@@ -837,7 +837,8 @@ enum {
Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota,
Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err,
@@ -2822,7 +2822,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext
};
static const match_table_t tokens = {
-@@ -884,6 +885,9 @@ static const match_table_t tokens = {
+@@ -895,6 +896,9 @@ static const match_table_t tokens = {
{Opt_barrier, "barrier"},
{Opt_nobarrier, "nobarrier"},
{Opt_resize, "resize"},
@@ -2832,7 +2832,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext
{Opt_err, NULL},
};
-@@ -1056,6 +1060,20 @@ static int parse_options (char *options,
+@@ -1067,6 +1071,20 @@ static int parse_options (char *options,
case Opt_nouid32:
set_opt (sbi->s_mount_opt, NO_UID32);
break;
@@ -2853,7 +2853,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext
case Opt_nocheck:
clear_opt (sbi->s_mount_opt, CHECK);
break;
-@@ -1781,6 +1799,9 @@ static int ext3_fill_super (struct super
+@@ -1792,6 +1810,9 @@ static int ext3_fill_super (struct super
NULL, 0))
goto failed_mount;
@@ -2863,7 +2863,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
(test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
-@@ -2678,6 +2699,14 @@ static int ext3_remount (struct super_bl
+@@ -2690,6 +2711,14 @@ static int ext3_remount (struct super_bl
if (test_opt(sb, ABORT))
ext3_abort(sb, __func__, "Abort forced by user");
@@ -2878,10 +2878,10 @@ diff -NurpP --minimal linux-3.18.5/fs/ext3/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
(test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
-diff -NurpP --minimal linux-3.18.5/fs/ext4/ext4.h linux-3.18.5-vs2.3.7.3/fs/ext4/ext4.h
---- linux-3.18.5/fs/ext4/ext4.h 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/ext4.h 2015-01-19 10:57:47.000000000 +0000
-@@ -385,7 +385,10 @@ struct flex_groups {
+diff -NurpP --minimal linux-4.1.12/fs/ext4/ext4.h linux-4.1.12-vs2.3.8.3/fs/ext4/ext4.h
+--- linux-4.1.12/fs/ext4/ext4.h 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/ext4.h 2015-07-06 20:43:43.000000000 +0000
+@@ -377,7 +377,10 @@ struct flex_groups {
#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */
#define EXT4_EA_INODE_FL 0x00200000 /* Inode used for large EA */
#define EXT4_EOFBLOCKS_FL 0x00400000 /* Blocks allocated beyond EOF */
@@ -2892,7 +2892,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ext4.h linux-3.18.5-vs2.3.7.3/fs/ext4
#define EXT4_RESERVED_FL 0x80000000 /* reserved for ext4 lib */
#define EXT4_FL_USER_VISIBLE 0x004BDFFF /* User visible flags */
-@@ -671,7 +674,7 @@ struct ext4_inode {
+@@ -673,7 +676,7 @@ struct ext4_inode {
__le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */
__le16 l_i_checksum_lo;/* crc32c(uuid+inum+inode) LE */
@@ -2901,7 +2901,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ext4.h linux-3.18.5-vs2.3.7.3/fs/ext4
} linux2;
struct {
__le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
-@@ -791,6 +794,7 @@ do { \
+@@ -793,6 +796,7 @@ do { \
#define i_gid_low i_gid
#define i_uid_high osd2.linux2.l_i_uid_high
#define i_gid_high osd2.linux2.l_i_gid_high
@@ -2909,7 +2909,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ext4.h linux-3.18.5-vs2.3.7.3/fs/ext4
#define i_checksum_lo osd2.linux2.l_i_checksum_lo
#elif defined(__GNU__)
-@@ -980,6 +984,7 @@ struct ext4_inode_info {
+@@ -999,6 +1003,7 @@ struct ext4_inode_info {
#define EXT4_MOUNT_POSIX_ACL 0x08000 /* POSIX Access Control Lists */
#define EXT4_MOUNT_NO_AUTO_DA_ALLOC 0x10000 /* No auto delalloc mapping */
#define EXT4_MOUNT_BARRIER 0x20000 /* Use block barriers */
@@ -2917,28 +2917,28 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ext4.h linux-3.18.5-vs2.3.7.3/fs/ext4
#define EXT4_MOUNT_QUOTA 0x80000 /* Some quota option set */
#define EXT4_MOUNT_USRQUOTA 0x100000 /* "old" user quota */
#define EXT4_MOUNT_GRPQUOTA 0x200000 /* "old" group quota */
-@@ -2644,6 +2649,7 @@ extern struct buffer_head *ext4_get_firs
- extern int ext4_inline_data_fiemap(struct inode *inode,
- struct fiemap_extent_info *fieinfo,
- int *has_inline);
+@@ -2280,6 +2285,7 @@ extern int ext4_punch_hole(struct inode
+ extern int ext4_truncate_restart_trans(handle_t *, struct inode *, int nblocks);
+ extern void ext4_set_inode_flags(struct inode *);
+ extern void ext4_get_inode_flags(struct ext4_inode_info *);
+extern int ext4_sync_flags(struct inode *, int, int);
- extern int ext4_try_to_evict_inline_data(handle_t *handle,
- struct inode *inode,
- int needed);
-diff -NurpP --minimal linux-3.18.5/fs/ext4/file.c linux-3.18.5-vs2.3.7.3/fs/ext4/file.c
---- linux-3.18.5/fs/ext4/file.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/file.c 2015-01-19 10:57:47.000000000 +0000
-@@ -610,5 +610,6 @@ const struct inode_operations ext4_file_
+ extern int ext4_alloc_da_blocks(struct inode *inode);
+ extern void ext4_set_aops(struct inode *inode);
+ extern int ext4_writepage_trans_blocks(struct inode *);
+diff -NurpP --minimal linux-4.1.12/fs/ext4/file.c linux-4.1.12-vs2.3.8.3/fs/ext4/file.c
+--- linux-4.1.12/fs/ext4/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/file.c 2015-07-06 20:43:43.000000000 +0000
+@@ -647,5 +647,6 @@ const struct inode_operations ext4_file_
.get_acl = ext4_get_acl,
.set_acl = ext4_set_acl,
.fiemap = ext4_fiemap,
+ .sync_flags = ext4_sync_flags,
};
-diff -NurpP --minimal linux-3.18.5/fs/ext4/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ext4/ialloc.c
---- linux-3.18.5/fs/ext4/ialloc.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/ialloc.c 2015-01-19 10:57:47.000000000 +0000
-@@ -22,6 +22,7 @@
+diff -NurpP --minimal linux-4.1.12/fs/ext4/ialloc.c linux-4.1.12-vs2.3.8.3/fs/ext4/ialloc.c
+--- linux-4.1.12/fs/ext4/ialloc.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/ialloc.c 2015-07-06 20:43:43.000000000 +0000
+@@ -21,6 +21,7 @@
#include <linux/random.h>
#include <linux/bitops.h>
#include <linux/blkdev.h>
@@ -2946,7 +2946,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ex
#include <asm/byteorder.h>
#include "ext4.h"
-@@ -754,6 +755,7 @@ struct inode *__ext4_new_inode(handle_t
+@@ -753,6 +754,7 @@ struct inode *__ext4_new_inode(handle_t
inode->i_mode = mode;
inode->i_uid = current_fsuid();
inode->i_gid = dir->i_gid;
@@ -2954,18 +2954,18 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ialloc.c linux-3.18.5-vs2.3.7.3/fs/ex
} else
inode_init_owner(inode, dir, mode);
dquot_initialize(inode);
-diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext4/inode.c
---- linux-3.18.5/fs/ext4/inode.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/inode.c 2015-01-19 12:50:18.000000000 +0000
-@@ -39,6 +39,7 @@
- #include <linux/ratelimit.h>
- #include <linux/aio.h>
+diff -NurpP --minimal linux-4.1.12/fs/ext4/inode.c linux-4.1.12-vs2.3.8.3/fs/ext4/inode.c
+--- linux-4.1.12/fs/ext4/inode.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/inode.c 2015-10-29 09:25:27.000000000 +0000
+@@ -36,6 +36,7 @@
+ #include <linux/printk.h>
+ #include <linux/slab.h>
#include <linux/bitops.h>
+#include <linux/vs_tag.h>
#include "ext4_jbd2.h"
#include "xattr.h"
-@@ -3811,42 +3812,66 @@ void ext4_set_inode_flags(struct inode *
+@@ -3965,12 +3966,15 @@ void ext4_set_inode_flags(struct inode *
unsigned int flags = EXT4_I(inode)->i_flags;
unsigned int new_fl = 0;
@@ -2983,10 +2983,12 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
if (flags & EXT4_NOATIME_FL)
new_fl |= S_NOATIME;
if (flags & EXT4_DIRSYNC_FL)
- new_fl |= S_DIRSYNC;
+@@ -3978,31 +3982,52 @@ void ext4_set_inode_flags(struct inode *
+ if (test_opt(inode->i_sb, DAX))
+ new_fl |= S_DAX;
inode_set_flags(inode, new_fl,
-- S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
-+ S_IXUNLINK | S_IMMUTABLE |
+- S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC|S_DAX);
++ S_IXUNLINK | S_IMMUTABLE | S_DAX |
+ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+ new_fl = 0;
@@ -3039,7 +3041,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
} while (cmpxchg(&ei->i_flags, old_fl, new_fl) != old_fl);
}
-@@ -3950,8 +3975,10 @@ struct inode *ext4_iget(struct super_blo
+@@ -4106,8 +4131,10 @@ struct inode *ext4_iget(struct super_blo
i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
}
@@ -3052,7 +3054,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
ext4_clear_state_flags(ei); /* Only relevant on 32-bit archs */
-@@ -4191,8 +4218,10 @@ static int ext4_do_update_inode(handle_t
+@@ -4412,8 +4439,10 @@ static int ext4_do_update_inode(handle_t
ext4_get_inode_flags(ei);
raw_inode->i_mode = cpu_to_le16(inode->i_mode);
@@ -3065,7 +3067,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
if (!(test_opt(inode->i_sb, NO_UID32))) {
raw_inode->i_uid_low = cpu_to_le16(low_16_bits(i_uid));
raw_inode->i_gid_low = cpu_to_le16(low_16_bits(i_gid));
-@@ -4215,6 +4244,9 @@ static int ext4_do_update_inode(handle_t
+@@ -4436,6 +4465,9 @@ static int ext4_do_update_inode(handle_t
raw_inode->i_uid_high = 0;
raw_inode->i_gid_high = 0;
}
@@ -3075,7 +3077,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode);
-@@ -4458,7 +4490,8 @@ int ext4_setattr(struct dentry *dentry,
+@@ -4680,7 +4712,8 @@ int ext4_setattr(struct dentry *dentry,
if (is_quota_modification(inode, attr))
dquot_initialize(inode);
if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
@@ -3085,7 +3087,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
handle_t *handle;
/* (user+group)*(old+new) structure, inode write (sb,
-@@ -4481,6 +4514,8 @@ int ext4_setattr(struct dentry *dentry,
+@@ -4703,6 +4736,8 @@ int ext4_setattr(struct dentry *dentry,
inode->i_uid = attr->ia_uid;
if (attr->ia_valid & ATTR_GID)
inode->i_gid = attr->ia_gid;
@@ -3094,19 +3096,19 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/inode.c linux-3.18.5-vs2.3.7.3/fs/ext
error = ext4_mark_inode_dirty(handle, inode);
ext4_journal_stop(handle);
}
-diff -NurpP --minimal linux-3.18.5/fs/ext4/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext4/ioctl.c
---- linux-3.18.5/fs/ext4/ioctl.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/ioctl.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ext4/ioctl.c linux-4.1.12-vs2.3.8.3/fs/ext4/ioctl.c
+--- linux-4.1.12/fs/ext4/ioctl.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/ioctl.c 2015-07-06 21:28:42.000000000 +0000
@@ -14,6 +14,7 @@
- #include <linux/compat.h>
#include <linux/mount.h>
#include <linux/file.h>
+ #include <linux/random.h>
+#include <linux/vs_tag.h>
#include <asm/uaccess.h>
#include "ext4_jbd2.h"
#include "ext4.h"
-@@ -198,6 +199,33 @@ journal_err_out:
- return err;
+@@ -206,6 +207,33 @@ static int uuid_is_zero(__u8 u[16])
+ return 1;
}
+int ext4_sync_flags(struct inode *inode, int flags, int vflags)
@@ -3139,7 +3141,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext
long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct inode *inode = file_inode(filp);
-@@ -231,6 +259,11 @@ long ext4_ioctl(struct file *filp, unsig
+@@ -239,6 +267,11 @@ long ext4_ioctl(struct file *filp, unsig
flags = ext4_mask_flags(inode->i_mode, flags);
@@ -3151,7 +3153,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext
err = -EPERM;
mutex_lock(&inode->i_mutex);
/* Is it quota file? Do not allow user to mess with it */
-@@ -248,7 +281,9 @@ long ext4_ioctl(struct file *filp, unsig
+@@ -256,7 +289,9 @@ long ext4_ioctl(struct file *filp, unsig
*
* This test looks nicer. Thanks to Pauline Middelink
*/
@@ -3162,10 +3164,10 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ext
if (!capable(CAP_LINUX_IMMUTABLE))
goto flags_out;
}
-diff -NurpP --minimal linux-3.18.5/fs/ext4/namei.c linux-3.18.5-vs2.3.7.3/fs/ext4/namei.c
---- linux-3.18.5/fs/ext4/namei.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/namei.c 2015-01-19 10:57:47.000000000 +0000
-@@ -34,6 +34,7 @@
+diff -NurpP --minimal linux-4.1.12/fs/ext4/namei.c linux-4.1.12-vs2.3.8.3/fs/ext4/namei.c
+--- linux-4.1.12/fs/ext4/namei.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/namei.c 2015-07-06 20:43:43.000000000 +0000
+@@ -33,6 +33,7 @@
#include <linux/quotaops.h>
#include <linux/buffer_head.h>
#include <linux/bio.h>
@@ -3173,7 +3175,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
#include "ext4.h"
#include "ext4_jbd2.h"
-@@ -1279,6 +1280,7 @@ restart:
+@@ -1447,6 +1448,7 @@ restart:
ll_rw_block(READ | REQ_META | REQ_PRIO,
1, &bh);
}
@@ -3181,7 +3183,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
}
if ((bh = bh_use[ra_ptr++]) == NULL)
goto next;
-@@ -3539,6 +3541,7 @@ const struct inode_operations ext4_dir_i
+@@ -3905,6 +3907,7 @@ const struct inode_operations ext4_dir_i
.get_acl = ext4_get_acl,
.set_acl = ext4_set_acl,
.fiemap = ext4_fiemap,
@@ -3189,19 +3191,18 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/namei.c linux-3.18.5-vs2.3.7.3/fs/ext
};
const struct inode_operations ext4_special_inode_operations = {
-diff -NurpP --minimal linux-3.18.5/fs/ext4/super.c linux-3.18.5-vs2.3.7.3/fs/ext4/super.c
---- linux-3.18.5/fs/ext4/super.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ext4/super.c 2015-01-19 10:57:47.000000000 +0000
-@@ -1146,7 +1146,7 @@ enum {
- Opt_inode_readahead_blks, Opt_journal_ioprio,
+diff -NurpP --minimal linux-4.1.12/fs/ext4/super.c linux-4.1.12-vs2.3.8.3/fs/ext4/super.c
+--- linux-4.1.12/fs/ext4/super.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ext4/super.c 2015-10-29 09:25:27.000000000 +0000
+@@ -1137,6 +1137,7 @@ enum {
Opt_dioread_nolock, Opt_dioread_lock,
Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
-- Opt_max_dir_size_kb,
-+ Opt_max_dir_size_kb, Opt_tag, Opt_notag, Opt_tagid
+ Opt_max_dir_size_kb, Opt_nojournal_checksum,
++ Opt_tag, Opt_notag, Opt_tagid
};
static const match_table_t tokens = {
-@@ -1227,6 +1227,9 @@ static const match_table_t tokens = {
+@@ -1222,6 +1223,9 @@ static const match_table_t tokens = {
{Opt_removed, "reservation"}, /* mount option from ext2/3 */
{Opt_removed, "noreservation"}, /* mount option from ext2/3 */
{Opt_removed, "journal=%u"}, /* mount option from ext2/3 */
@@ -3211,9 +3212,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/super.c linux-3.18.5-vs2.3.7.3/fs/ext
{Opt_err, NULL},
};
-@@ -1459,6 +1462,20 @@ static int handle_mount_opt(struct super
- case Opt_i_version:
- sb->s_flags |= MS_I_VERSION;
+@@ -1464,6 +1468,20 @@ static int handle_mount_opt(struct super
+ case Opt_nolazytime:
+ sb->s_flags &= ~MS_LAZYTIME;
return 1;
+#ifndef CONFIG_TAGGING_NONE
+ case Opt_tag:
@@ -3232,7 +3233,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/super.c linux-3.18.5-vs2.3.7.3/fs/ext
}
for (m = ext4_mount_opts; m->token != Opt_err; m++)
-@@ -3600,6 +3617,9 @@ static int ext4_fill_super(struct super_
+@@ -3643,6 +3661,9 @@ static int ext4_fill_super(struct super_
clear_opt(sb, DELALLOC);
}
@@ -3242,7 +3243,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
(test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
-@@ -4872,6 +4892,14 @@ static int ext4_remount(struct super_blo
+@@ -4954,6 +4975,14 @@ static int ext4_remount(struct super_blo
if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
ext4_abort(sb, "Abort forced by user");
@@ -3257,9 +3258,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ext4/super.c linux-3.18.5-vs2.3.7.3/fs/ext
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
(test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
-diff -NurpP --minimal linux-3.18.5/fs/fcntl.c linux-3.18.5-vs2.3.7.3/fs/fcntl.c
---- linux-3.18.5/fs/fcntl.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/fcntl.c 2015-01-19 11:48:08.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/fcntl.c linux-4.1.12-vs2.3.8.3/fs/fcntl.c
+--- linux-4.1.12/fs/fcntl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/fcntl.c 2015-07-06 20:43:43.000000000 +0000
@@ -22,6 +22,7 @@
#include <linux/pid_namespace.h>
#include <linux/user_namespace.h>
@@ -3277,9 +3278,9 @@ diff -NurpP --minimal linux-3.18.5/fs/fcntl.c linux-3.18.5-vs2.3.7.3/fs/fcntl.c
if (unlikely(f.file->f_mode & FMODE_PATH)) {
if (!check_fcntl_cmd(cmd))
-diff -NurpP --minimal linux-3.18.5/fs/file.c linux-3.18.5-vs2.3.7.3/fs/file.c
---- linux-3.18.5/fs/file.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/file.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/file.c linux-4.1.12-vs2.3.8.3/fs/file.c
+--- linux-4.1.12/fs/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/file.c 2015-07-06 20:43:43.000000000 +0000
@@ -22,6 +22,7 @@
#include <linux/spinlock.h>
#include <linux/rcupdate.h>
@@ -3325,7 +3326,7 @@ diff -NurpP --minimal linux-3.18.5/fs/file.c linux-3.18.5-vs2.3.7.3/fs/file.c
}
void put_unused_fd(unsigned int fd)
-@@ -784,6 +791,8 @@ __releases(&files->file_lock)
+@@ -783,6 +790,8 @@ __releases(&files->file_lock)
if (tofree)
filp_close(tofree, files);
@@ -3334,9 +3335,9 @@ diff -NurpP --minimal linux-3.18.5/fs/file.c linux-3.18.5-vs2.3.7.3/fs/file.c
return fd;
-diff -NurpP --minimal linux-3.18.5/fs/file_table.c linux-3.18.5-vs2.3.7.3/fs/file_table.c
---- linux-3.18.5/fs/file_table.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/file_table.c 2015-01-19 12:36:42.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/file_table.c linux-4.1.12-vs2.3.8.3/fs/file_table.c
+--- linux-4.1.12/fs/file_table.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/file_table.c 2015-07-06 20:43:43.000000000 +0000
@@ -26,6 +26,8 @@
#include <linux/hardirq.h>
#include <linux/task_work.h>
@@ -3373,9 +3374,9 @@ diff -NurpP --minimal linux-3.18.5/fs/file_table.c linux-3.18.5-vs2.3.7.3/fs/fil
file_free(file);
}
}
-diff -NurpP --minimal linux-3.18.5/fs/fs_struct.c linux-3.18.5-vs2.3.7.3/fs/fs_struct.c
---- linux-3.18.5/fs/fs_struct.c 2014-01-22 20:39:06.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/fs_struct.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/fs_struct.c linux-4.1.12-vs2.3.8.3/fs/fs_struct.c
+--- linux-4.1.12/fs/fs_struct.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/fs_struct.c 2015-07-06 20:43:43.000000000 +0000
@@ -4,6 +4,7 @@
#include <linux/path.h>
#include <linux/slab.h>
@@ -3400,10 +3401,10 @@ diff -NurpP --minimal linux-3.18.5/fs/fs_struct.c linux-3.18.5-vs2.3.7.3/fs/fs_s
}
return fs;
}
-diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2/file.c
---- linux-3.18.5/fs/gfs2/file.c 2015-01-17 02:40:17.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/gfs2/file.c 2015-01-19 10:57:47.000000000 +0000
-@@ -138,6 +138,9 @@ static const u32 fsflags_to_gfs2[32] = {
+diff -NurpP --minimal linux-4.1.12/fs/gfs2/file.c linux-4.1.12-vs2.3.8.3/fs/gfs2/file.c
+--- linux-4.1.12/fs/gfs2/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/gfs2/file.c 2015-07-06 20:43:43.000000000 +0000
+@@ -137,6 +137,9 @@ static const u32 fsflags_to_gfs2[32] = {
[12] = GFS2_DIF_EXHASH,
[14] = GFS2_DIF_INHERIT_JDATA,
[17] = GFS2_DIF_TOPDIR,
@@ -3413,7 +3414,7 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2
};
static const u32 gfs2_to_fsflags[32] = {
-@@ -148,6 +151,9 @@ static const u32 gfs2_to_fsflags[32] = {
+@@ -147,6 +150,9 @@ static const u32 gfs2_to_fsflags[32] = {
[gfs2fl_ExHash] = FS_INDEX_FL,
[gfs2fl_TopLevel] = FS_TOPDIR_FL,
[gfs2fl_InheritJdata] = FS_JOURNAL_DATA_FL,
@@ -3423,7 +3424,7 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2
};
static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
-@@ -178,12 +184,18 @@ void gfs2_set_inode_flags(struct inode *
+@@ -177,12 +183,18 @@ void gfs2_set_inode_flags(struct inode *
{
struct gfs2_inode *ip = GFS2_I(inode);
unsigned int flags = inode->i_flags;
@@ -3443,7 +3444,7 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2
if (ip->i_diskflags & GFS2_DIF_APPENDONLY)
flags |= S_APPEND;
if (ip->i_diskflags & GFS2_DIF_NOATIME)
-@@ -191,6 +203,43 @@ void gfs2_set_inode_flags(struct inode *
+@@ -190,6 +202,43 @@ void gfs2_set_inode_flags(struct inode *
if (ip->i_diskflags & GFS2_DIF_SYNC)
flags |= S_SYNC;
inode->i_flags = flags;
@@ -3487,7 +3488,7 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2
}
/* Flags that can be set by user space */
-@@ -304,6 +353,37 @@ static int gfs2_set_flags(struct file *f
+@@ -303,6 +352,37 @@ static int gfs2_set_flags(struct file *f
return do_gfs2_set_flags(filp, gfsflags, ~GFS2_DIF_JDATA);
}
@@ -3525,9 +3526,9 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/file.c linux-3.18.5-vs2.3.7.3/fs/gfs2
static long gfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
switch(cmd) {
-diff -NurpP --minimal linux-3.18.5/fs/gfs2/inode.h linux-3.18.5-vs2.3.7.3/fs/gfs2/inode.h
---- linux-3.18.5/fs/gfs2/inode.h 2013-11-25 15:45:01.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/gfs2/inode.h 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/gfs2/inode.h linux-4.1.12-vs2.3.8.3/fs/gfs2/inode.h
+--- linux-4.1.12/fs/gfs2/inode.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/gfs2/inode.h 2015-07-06 20:43:43.000000000 +0000
@@ -118,6 +118,7 @@ extern const struct file_operations gfs2
extern const struct file_operations gfs2_dir_fops_nolock;
@@ -3536,9 +3537,9 @@ diff -NurpP --minimal linux-3.18.5/fs/gfs2/inode.h linux-3.18.5-vs2.3.7.3/fs/gfs
#ifdef CONFIG_GFS2_FS_LOCKING_DLM
extern const struct file_operations gfs2_file_fops;
-diff -NurpP --minimal linux-3.18.5/fs/hostfs/hostfs.h linux-3.18.5-vs2.3.7.3/fs/hostfs/hostfs.h
---- linux-3.18.5/fs/hostfs/hostfs.h 2015-01-16 22:19:18.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/hostfs/hostfs.h 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/hostfs/hostfs.h linux-4.1.12-vs2.3.8.3/fs/hostfs/hostfs.h
+--- linux-4.1.12/fs/hostfs/hostfs.h 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/hostfs/hostfs.h 2015-07-06 20:43:43.000000000 +0000
@@ -42,6 +42,7 @@ struct hostfs_iattr {
unsigned short ia_mode;
uid_t ia_uid;
@@ -3547,18 +3548,18 @@ diff -NurpP --minimal linux-3.18.5/fs/hostfs/hostfs.h linux-3.18.5-vs2.3.7.3/fs/
loff_t ia_size;
struct timespec ia_atime;
struct timespec ia_mtime;
-diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
---- linux-3.18.5/fs/inode.c 2015-01-16 22:19:18.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/inode.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/inode.c linux-4.1.12-vs2.3.8.3/fs/inode.c
+--- linux-4.1.12/fs/inode.c 2015-10-29 09:20:32.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/inode.c 2015-07-24 14:11:50.000000000 +0000
@@ -18,6 +18,7 @@
#include <linux/buffer_head.h> /* for inode_has_buffers */
#include <linux/ratelimit.h>
#include <linux/list_lru.h>
+#include <linux/vs_tag.h>
+ #include <trace/events/writeback.h>
#include "internal.h"
- /*
-@@ -129,6 +130,8 @@ int inode_init_always(struct super_block
+@@ -135,6 +136,8 @@ int inode_init_always(struct super_block
struct address_space *const mapping = &inode->i_data;
inode->i_sb = sb;
@@ -3567,7 +3568,7 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
inode->i_blkbits = sb->s_blocksize_bits;
inode->i_flags = 0;
atomic_set(&inode->i_count, 1);
-@@ -138,6 +141,7 @@ int inode_init_always(struct super_block
+@@ -144,6 +147,7 @@ int inode_init_always(struct super_block
inode->i_opflags = 0;
i_uid_write(inode, 0);
i_gid_write(inode, 0);
@@ -3575,7 +3576,7 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
atomic_set(&inode->i_writecount, 0);
inode->i_size = 0;
inode->i_blocks = 0;
-@@ -150,6 +154,7 @@ int inode_init_always(struct super_block
+@@ -153,6 +157,7 @@ int inode_init_always(struct super_block
inode->i_bdev = NULL;
inode->i_cdev = NULL;
inode->i_rdev = 0;
@@ -3583,7 +3584,7 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
inode->dirtied_when = 0;
if (security_inode_alloc(inode))
-@@ -478,6 +483,8 @@ void __insert_inode_hash(struct inode *i
+@@ -469,6 +474,8 @@ void __insert_inode_hash(struct inode *i
}
EXPORT_SYMBOL(__insert_inode_hash);
@@ -3592,7 +3593,7 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
/**
* __remove_inode_hash - remove an inode from the hash
* @inode: inode to unhash
-@@ -1795,9 +1802,11 @@ void init_special_inode(struct inode *in
+@@ -1857,9 +1864,11 @@ void init_special_inode(struct inode *in
if (S_ISCHR(mode)) {
inode->i_fop = &def_chr_fops;
inode->i_rdev = rdev;
@@ -3604,7 +3605,7 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
} else if (S_ISFIFO(mode))
inode->i_fop = &pipefifo_fops;
else if (S_ISSOCK(mode))
-@@ -1826,6 +1835,7 @@ void inode_init_owner(struct inode *inod
+@@ -1888,6 +1897,7 @@ void inode_init_owner(struct inode *inod
} else
inode->i_gid = current_fsgid();
inode->i_mode = mode;
@@ -3612,9 +3613,9 @@ diff -NurpP --minimal linux-3.18.5/fs/inode.c linux-3.18.5-vs2.3.7.3/fs/inode.c
}
EXPORT_SYMBOL(inode_init_owner);
-diff -NurpP --minimal linux-3.18.5/fs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ioctl.c
---- linux-3.18.5/fs/ioctl.c 2014-01-22 20:39:06.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ioctl.c 2015-01-19 10:57:47.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ioctl.c linux-4.1.12-vs2.3.8.3/fs/ioctl.c
+--- linux-4.1.12/fs/ioctl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -15,6 +15,9 @@
#include <linux/writeback.h>
#include <linux/buffer_head.h>
@@ -3625,9 +3626,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ioctl.c
#include <asm/ioctls.h>
-diff -NurpP --minimal linux-3.18.5/fs/jfs/file.c linux-3.18.5-vs2.3.7.3/fs/jfs/file.c
---- linux-3.18.5/fs/jfs/file.c 2014-09-03 13:19:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/file.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/file.c linux-4.1.12-vs2.3.8.3/fs/jfs/file.c
+--- linux-4.1.12/fs/jfs/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/file.c 2015-07-06 20:43:43.000000000 +0000
@@ -110,7 +110,8 @@ int jfs_setattr(struct dentry *dentry, s
if (is_quota_modification(inode, iattr))
dquot_initialize(inode);
@@ -3646,9 +3647,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/file.c linux-3.18.5-vs2.3.7.3/fs/jfs/f
};
const struct file_operations jfs_file_operations = {
-diff -NurpP --minimal linux-3.18.5/fs/jfs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/jfs/ioctl.c
---- linux-3.18.5/fs/jfs/ioctl.c 2013-05-31 13:45:24.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/ioctl.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/ioctl.c linux-4.1.12-vs2.3.8.3/fs/jfs/ioctl.c
+--- linux-4.1.12/fs/jfs/ioctl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -12,6 +12,7 @@
#include <linux/time.h>
#include <linux/sched.h>
@@ -3706,9 +3707,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/ioctl.c linux-3.18.5-vs2.3.7.3/fs/jfs/
flags |= oldflags & ~JFS_FL_USER_MODIFIABLE;
jfs_inode->mode2 = flags;
-diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_dinode.h linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_dinode.h
---- linux-3.18.5/fs/jfs/jfs_dinode.h 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_dinode.h 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/jfs_dinode.h linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_dinode.h
+--- linux-4.1.12/fs/jfs/jfs_dinode.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_dinode.h 2015-07-06 20:43:43.000000000 +0000
@@ -161,9 +161,13 @@ struct dinode {
#define JFS_APPEND_FL 0x01000000 /* writes to file may only append */
@@ -3725,9 +3726,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_dinode.h linux-3.18.5-vs2.3.7.3/fs
#define JFS_FL_INHERIT 0x03C80000
/* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
-diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_filsys.h linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_filsys.h
---- linux-3.18.5/fs/jfs/jfs_filsys.h 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_filsys.h 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/jfs_filsys.h linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_filsys.h
+--- linux-4.1.12/fs/jfs/jfs_filsys.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_filsys.h 2015-07-06 20:43:43.000000000 +0000
@@ -266,6 +266,7 @@
#define JFS_NAME_MAX 255
#define JFS_PATH_MAX BPSIZE
@@ -3736,9 +3737,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_filsys.h linux-3.18.5-vs2.3.7.3/fs
/*
* file system state (superblock state)
-diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_imap.c linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_imap.c
---- linux-3.18.5/fs/jfs/jfs_imap.c 2013-11-25 15:45:01.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_imap.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/jfs_imap.c linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_imap.c
+--- linux-4.1.12/fs/jfs/jfs_imap.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_imap.c 2015-07-06 20:43:43.000000000 +0000
@@ -46,6 +46,7 @@
#include <linux/pagemap.h>
#include <linux/quotaops.h>
@@ -3802,9 +3803,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_imap.c linux-3.18.5-vs2.3.7.3/fs/j
jfs_get_inode_flags(jfs_ip);
/*
* mode2 is only needed for storing the higher order bits.
-diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_inode.c linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_inode.c
---- linux-3.18.5/fs/jfs/jfs_inode.c 2014-09-03 13:19:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_inode.c 2015-01-21 09:53:08.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/jfs_inode.c linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_inode.c
+--- linux-4.1.12/fs/jfs/jfs_inode.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_inode.c 2015-07-06 20:43:43.000000000 +0000
@@ -18,6 +18,7 @@
#include <linux/fs.h>
@@ -3876,9 +3877,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_inode.c linux-3.18.5-vs2.3.7.3/fs/
}
/*
-diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_inode.h linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_inode.h
---- linux-3.18.5/fs/jfs/jfs_inode.h 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/jfs_inode.h 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/jfs_inode.h linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_inode.h
+--- linux-4.1.12/fs/jfs/jfs_inode.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/jfs_inode.h 2015-07-06 20:43:43.000000000 +0000
@@ -39,6 +39,7 @@ extern struct dentry *jfs_fh_to_dentry(s
extern struct dentry *jfs_fh_to_parent(struct super_block *sb, struct fid *fid,
int fh_len, int fh_type);
@@ -3887,9 +3888,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/jfs_inode.h linux-3.18.5-vs2.3.7.3/fs/
extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int);
extern int jfs_setattr(struct dentry *, struct iattr *);
-diff -NurpP --minimal linux-3.18.5/fs/jfs/namei.c linux-3.18.5-vs2.3.7.3/fs/jfs/namei.c
---- linux-3.18.5/fs/jfs/namei.c 2014-06-12 11:34:58.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/namei.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/jfs/namei.c linux-4.1.12-vs2.3.8.3/fs/jfs/namei.c
+--- linux-4.1.12/fs/jfs/namei.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/namei.c 2015-07-06 20:43:43.000000000 +0000
@@ -22,6 +22,7 @@
#include <linux/ctype.h>
#include <linux/quotaops.h>
@@ -3898,7 +3899,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/namei.c linux-3.18.5-vs2.3.7.3/fs/jfs/
#include "jfs_incore.h"
#include "jfs_superblock.h"
#include "jfs_inode.h"
-@@ -1461,6 +1462,7 @@ static struct dentry *jfs_lookup(struct
+@@ -1459,6 +1460,7 @@ static struct dentry *jfs_lookup(struct
jfs_err("jfs_lookup: iget failed on inum %d", (uint)inum);
}
@@ -3906,7 +3907,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/namei.c linux-3.18.5-vs2.3.7.3/fs/jfs/
return d_splice_alias(ip, dentry);
}
-@@ -1526,6 +1528,7 @@ const struct inode_operations jfs_dir_in
+@@ -1524,6 +1526,7 @@ const struct inode_operations jfs_dir_in
.get_acl = jfs_get_acl,
.set_acl = jfs_set_acl,
#endif
@@ -3914,10 +3915,10 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/namei.c linux-3.18.5-vs2.3.7.3/fs/jfs/
};
const struct file_operations jfs_dir_operations = {
-diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/super.c
---- linux-3.18.5/fs/jfs/super.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/jfs/super.c 2015-01-19 10:58:03.000000000 +0000
-@@ -203,7 +203,8 @@ enum {
+diff -NurpP --minimal linux-4.1.12/fs/jfs/super.c linux-4.1.12-vs2.3.8.3/fs/jfs/super.c
+--- linux-4.1.12/fs/jfs/super.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/jfs/super.c 2015-07-06 20:43:43.000000000 +0000
+@@ -206,7 +206,8 @@ enum {
Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
Opt_resize_nosize, Opt_errors, Opt_ignore, Opt_err, Opt_quota,
Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask,
@@ -3927,7 +3928,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/
};
static const match_table_t tokens = {
-@@ -213,6 +214,10 @@ static const match_table_t tokens = {
+@@ -216,6 +217,10 @@ static const match_table_t tokens = {
{Opt_resize, "resize=%u"},
{Opt_resize_nosize, "resize"},
{Opt_errors, "errors=%s"},
@@ -3938,7 +3939,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/
{Opt_ignore, "noquota"},
{Opt_ignore, "quota"},
{Opt_usrquota, "usrquota"},
-@@ -402,7 +407,20 @@ static int parse_options(char *options,
+@@ -405,7 +410,20 @@ static int parse_options(char *options,
pr_err("JFS: discard option not supported on device\n");
break;
}
@@ -3960,7 +3961,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/
default:
printk("jfs: Unrecognized mount option \"%s\" or missing value\n",
p);
-@@ -434,6 +452,12 @@ static int jfs_remount(struct super_bloc
+@@ -437,6 +455,12 @@ static int jfs_remount(struct super_bloc
if (!parse_options(data, sb, &newLVSize, &flag))
return -EINVAL;
@@ -3973,7 +3974,7 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/
if (newLVSize) {
if (sb->s_flags & MS_RDONLY) {
pr_err("JFS: resize requires volume to be mounted read-write\n");
-@@ -517,6 +541,9 @@ static int jfs_fill_super(struct super_b
+@@ -520,6 +544,9 @@ static int jfs_fill_super(struct super_b
#ifdef CONFIG_JFS_POSIX_ACL
sb->s_flags |= MS_POSIXACL;
#endif
@@ -3983,9 +3984,9 @@ diff -NurpP --minimal linux-3.18.5/fs/jfs/super.c linux-3.18.5-vs2.3.7.3/fs/jfs/
if (newLVSize) {
pr_err("resize option for remount only\n");
-diff -NurpP --minimal linux-3.18.5/fs/libfs.c linux-3.18.5-vs2.3.7.3/fs/libfs.c
---- linux-3.18.5/fs/libfs.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/libfs.c 2015-01-22 07:27:38.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/libfs.c linux-4.1.12-vs2.3.8.3/fs/libfs.c
+--- linux-4.1.12/fs/libfs.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/libfs.c 2015-10-29 09:25:27.000000000 +0000
@@ -146,13 +146,14 @@ static inline unsigned char dt_type(stru
* both impossible due to the lock on directory.
*/
@@ -4037,9 +4038,9 @@ diff -NurpP --minimal linux-3.18.5/fs/libfs.c linux-3.18.5-vs2.3.7.3/fs/libfs.c
ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
{
return -EISDIR;
-diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
---- linux-3.18.5/fs/locks.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/locks.c 2015-01-28 11:48:02.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/locks.c linux-4.1.12-vs2.3.8.3/fs/locks.c
+--- linux-4.1.12/fs/locks.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/locks.c 2015-10-30 13:33:17.000000000 +0000
@@ -129,6 +129,8 @@
#include <linux/hashtable.h>
#include <linux/percpu.h>
@@ -4049,7 +4050,7 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
#define CREATE_TRACE_POINTS
#include <trace/events/filelock.h>
-@@ -214,11 +216,17 @@ static void locks_init_lock_heads(struct
+@@ -251,11 +253,17 @@ static void locks_init_lock_heads(struct
/* Allocate an empty lock structure. */
struct file_lock *locks_alloc_lock(void)
{
@@ -4070,7 +4071,7 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
return fl;
}
EXPORT_SYMBOL_GPL(locks_alloc_lock);
-@@ -246,6 +254,7 @@ void locks_free_lock(struct file_lock *f
+@@ -286,6 +294,7 @@ void locks_free_lock(struct file_lock *f
BUG_ON(!list_empty(&fl->fl_block));
BUG_ON(!hlist_unhashed(&fl->fl_link));
@@ -4078,7 +4079,7 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
locks_release_private(fl);
kmem_cache_free(filelock_cache, fl);
}
-@@ -267,6 +276,7 @@ void locks_init_lock(struct file_lock *f
+@@ -307,6 +316,7 @@ void locks_init_lock(struct file_lock *f
{
memset(fl, 0, sizeof(struct file_lock));
locks_init_lock_heads(fl);
@@ -4086,7 +4087,7 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
}
EXPORT_SYMBOL(locks_init_lock);
-@@ -284,6 +294,7 @@ void locks_copy_conflock(struct file_loc
+@@ -324,6 +334,7 @@ void locks_copy_conflock(struct file_loc
new->fl_start = fl->fl_start;
new->fl_end = fl->fl_end;
new->fl_lmops = fl->fl_lmops;
@@ -4094,19 +4095,19 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
new->fl_ops = NULL;
if (fl->fl_lmops) {
-@@ -345,6 +356,11 @@ flock_make_lock(struct file *filp, unsig
+@@ -385,7 +396,10 @@ flock_make_lock(struct file *filp, unsig
fl->fl_flags = FL_FLOCK;
fl->fl_type = type;
fl->fl_end = OFFSET_MAX;
+-
+
+ vxd_assert(filp->f_xid == vx_current_xid(),
+ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
+ fl->fl_xid = filp->f_xid;
-+ vx_locks_inc(fl);
-
return fl;
}
-@@ -467,6 +483,7 @@ static int lease_init(struct file *filp,
+
+@@ -507,6 +521,7 @@ static int lease_init(struct file *filp,
fl->fl_owner = filp;
fl->fl_pid = current->tgid;
@@ -4114,7 +4115,7 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
fl->fl_file = filp;
fl->fl_flags = FL_LEASE;
-@@ -486,6 +503,11 @@ static struct file_lock *lease_alloc(str
+@@ -526,6 +541,10 @@ static struct file_lock *lease_alloc(str
if (fl == NULL)
return ERR_PTR(error);
@@ -4122,27 +4123,34 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
+ if (filp)
+ vxd_assert(filp->f_xid == fl->fl_xid,
+ "f_xid(%d) == fl_xid(%d)", filp->f_xid, fl->fl_xid);
-+ vx_locks_inc(fl);
error = lease_init(filp, type, fl);
if (error) {
locks_free_lock(fl);
-@@ -892,6 +914,7 @@ static int flock_lock_file(struct file *
- spin_lock(&inode->i_lock);
+@@ -685,6 +704,7 @@ locks_insert_lock_ctx(struct file_lock *
+ fl->fl_nspid = get_pid(task_tgid(current));
+ list_add_tail(&fl->fl_list, before);
+ locks_insert_global_locks(fl);
++ vx_locks_inc(fl);
+ }
+
+ static void
+@@ -697,6 +717,7 @@ locks_unlink_lock_ctx(struct file_lock *
+ fl->fl_nspid = NULL;
}
+ locks_wake_up_blocks(fl);
++ vx_locks_dec(fl);
+ }
-+ new_fl->fl_xid = -1;
- find_conflict:
- for_each_lock(inode, before) {
- struct file_lock *fl = *before;
-@@ -912,6 +935,7 @@ find_conflict:
+ static void
+@@ -904,6 +925,7 @@ static int flock_lock_inode(struct inode
goto out;
- locks_copy_lock(new_fl, request);
- locks_insert_lock(before, new_fl);
-+ vx_locks_inc(new_fl);
- new_fl = NULL;
- error = 0;
+ }
-@@ -923,7 +947,8 @@ out:
++ new_fl->fl_xid = -1;
+ find_conflict:
+ list_for_each_entry(fl, &ctx->flc_flock, fl_list) {
+ if (!flock_locks_conflict(request, fl))
+@@ -930,7 +952,8 @@ out:
return error;
}
@@ -4150,30 +4158,31 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
+static int __posix_lock_file(struct inode *inode, struct file_lock *request,
+ struct file_lock *conflock, vxid_t xid)
{
- struct file_lock *fl;
+ struct file_lock *fl, *tmp;
struct file_lock *new_fl = NULL;
-@@ -935,6 +960,8 @@ static int __posix_lock_file(struct inod
- bool added = false;
- LIST_HEAD(dispose);
+@@ -946,6 +969,9 @@ static int __posix_lock_file(struct inod
+ if (!ctx)
+ return (request->fl_type == F_UNLCK) ? 0 : -ENOMEM;
-+ vxd_assert(xid == vx_current_xid(),
-+ "xid(%d) == current(%d)", xid, vx_current_xid());
++ if (xid)
++ vxd_assert(xid == vx_current_xid(),
++ "xid(%d) == current(%d)", xid, vx_current_xid());
/*
* We may need two file_lock structures for this operation,
* so we get them in advance to avoid races.
-@@ -945,7 +972,11 @@ static int __posix_lock_file(struct inod
+@@ -956,7 +982,11 @@ static int __posix_lock_file(struct inod
(request->fl_type != F_UNLCK ||
request->fl_start != 0 || request->fl_end != OFFSET_MAX)) {
new_fl = locks_alloc_lock();
+ new_fl->fl_xid = xid;
-+ vx_locks_inc(new_fl);
++ // vx_locks_inc(new_fl);
new_fl2 = locks_alloc_lock();
+ new_fl2->fl_xid = xid;
-+ vx_locks_inc(new_fl2);
++ // vx_locks_inc(new_fl2);
}
- spin_lock(&inode->i_lock);
-@@ -1158,7 +1189,8 @@ static int __posix_lock_file(struct inod
+ spin_lock(&ctx->flc_lock);
+@@ -1158,7 +1188,8 @@ static int __posix_lock_file(struct inod
int posix_lock_file(struct file *filp, struct file_lock *fl,
struct file_lock *conflock)
{
@@ -4183,57 +4192,64 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
}
EXPORT_SYMBOL(posix_lock_file);
-@@ -1252,7 +1284,7 @@ int locks_mandatory_area(int read_write,
+@@ -1175,7 +1206,7 @@ int posix_lock_inode_wait(struct inode *
+ int error;
+ might_sleep ();
+ for (;;) {
+- error = __posix_lock_file(inode, fl, NULL);
++ error = __posix_lock_file(inode, fl, NULL, 0);
+ if (error != FILE_LOCK_DEFERRED)
+ break;
+ error = wait_event_interruptible(fl->fl_wait, !fl->fl_next);
+@@ -1255,10 +1286,13 @@ int locks_mandatory_area(int read_write,
+ fl.fl_end = offset + count - 1;
+
+ for (;;) {
++ vxid_t f_xid = 0;
++
if (filp) {
fl.fl_owner = filp;
fl.fl_flags &= ~FL_SLEEP;
- error = __posix_lock_file(inode, &fl, NULL);
-+ error = __posix_lock_file(inode, &fl, NULL, filp->f_xid);
++ f_xid = filp->f_xid;
++ error = __posix_lock_file(inode, &fl, NULL, f_xid);
if (!error)
break;
}
-@@ -1260,7 +1292,7 @@ int locks_mandatory_area(int read_write,
+@@ -1266,7 +1300,7 @@ int locks_mandatory_area(int read_write,
if (sleep)
fl.fl_flags |= FL_SLEEP;
fl.fl_owner = current->files;
- error = __posix_lock_file(inode, &fl, NULL);
-+ error = __posix_lock_file(inode, &fl, NULL, filp->f_xid);
++ error = __posix_lock_file(inode, &fl, NULL, f_xid);
if (error != FILE_LOCK_DEFERRED)
break;
error = wait_event_interruptible(fl.fl_wait, !fl.fl_next);
-@@ -1655,6 +1687,7 @@ generic_add_lease(struct file *filp, lon
- goto out;
-
- locks_insert_lock(before, lease);
-+ vx_locks_inc(lease);
- /*
- * The check in break_lease() is lockless. It's possible for another
- * open to race in after we did the earlier check for a conflicting
-@@ -2110,6 +2143,11 @@ int fcntl_setlk(unsigned int fd, struct
+@@ -2137,6 +2171,11 @@ int fcntl_setlk(unsigned int fd, struct
if (file_lock == NULL)
return -ENOLCK;
+ vxd_assert(filp->f_xid == vx_current_xid(),
+ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
+ file_lock->fl_xid = filp->f_xid;
-+ vx_locks_inc(file_lock);
++ // vx_locks_inc(file_lock);
+
/*
* This might block, so we do it before checking the inode.
*/
-@@ -2250,6 +2288,11 @@ int fcntl_setlk64(unsigned int fd, struc
+@@ -2277,6 +2316,11 @@ int fcntl_setlk64(unsigned int fd, struc
if (file_lock == NULL)
return -ENOLCK;
+ vxd_assert(filp->f_xid == vx_current_xid(),
+ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
+ file_lock->fl_xid = filp->f_xid;
-+ vx_locks_inc(file_lock);
++ // vx_locks_inc(file_lock);
+
/*
* This might block, so we do it before checking the inode.
*/
-@@ -2557,8 +2600,11 @@ static int locks_show(struct seq_file *f
+@@ -2582,8 +2626,11 @@ static int locks_show(struct seq_file *f
lock_get_status(f, fl, iter->li_pos, "");
@@ -4246,20 +4262,20 @@ diff -NurpP --minimal linux-3.18.5/fs/locks.c linux-3.18.5-vs2.3.7.3/fs/locks.c
return 0;
}
-diff -NurpP --minimal linux-3.18.5/fs/mount.h linux-3.18.5-vs2.3.7.3/fs/mount.h
---- linux-3.18.5/fs/mount.h 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/mount.h 2015-01-19 10:58:03.000000000 +0000
-@@ -62,6 +62,7 @@ struct mount {
- int mnt_expiry_mark; /* true if marked for expiry */
+diff -NurpP --minimal linux-4.1.12/fs/mount.h linux-4.1.12-vs2.3.8.3/fs/mount.h
+--- linux-4.1.12/fs/mount.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/mount.h 2015-07-06 20:43:43.000000000 +0000
+@@ -65,6 +65,7 @@ struct mount {
struct hlist_head mnt_pins;
- struct path mnt_ex_mountpoint;
+ struct fs_pin mnt_umount;
+ struct dentry *mnt_ex_mountpoint;
+ vtag_t mnt_tag; /* tagging used for vfsmount */
};
#define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
-diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
---- linux-3.18.5/fs/namei.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/namei.c 2015-01-22 08:31:30.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/namei.c linux-4.1.12-vs2.3.8.3/fs/namei.c
+--- linux-4.1.12/fs/namei.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/namei.c 2015-10-30 14:46:15.000000000 +0000
@@ -34,10 +34,20 @@
#include <linux/device_cgroup.h>
#include <linux/fs_struct.h>
@@ -4281,7 +4297,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
#include "mount.h"
/* [Feb-1997 T. Schoebel-Theuer]
-@@ -278,6 +288,93 @@ static int check_acl(struct inode *inode
+@@ -283,6 +293,93 @@ static int check_acl(struct inode *inode
return -EAGAIN;
}
@@ -4375,7 +4391,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
/*
* This does the basic permission checking
*/
-@@ -402,10 +499,14 @@ int __inode_permission(struct inode *ino
+@@ -407,10 +504,14 @@ int __inode_permission(struct inode *ino
/*
* Nobody gets write access to an immutable file.
*/
@@ -4391,26 +4407,26 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
retval = do_inode_permission(inode, mask);
if (retval)
return retval;
-@@ -1416,6 +1517,9 @@ static int lookup_fast(struct nameidata
- goto unlazy;
- }
- }
+@@ -1479,6 +1580,9 @@ static int lookup_fast(struct nameidata
+ */
+ if (negative)
+ return -ENOENT;
+
+ /* FIXME: check dx permission */
+
path->mnt = mnt;
path->dentry = dentry;
if (likely(__follow_mount_rcu(nd, path, inode)))
-@@ -1442,6 +1546,8 @@ unlazy:
- goto need_lookup;
+@@ -1509,6 +1613,8 @@ unlazy:
+ dput(dentry);
+ return -ENOENT;
}
-
-+ /* FIXME: check dx permission */
+
++ /* FIXME: check dx permission */
path->mnt = mnt;
path->dentry = dentry;
err = follow_managed(path, nd->flags);
-@@ -2434,7 +2540,7 @@ static int may_delete(struct inode *dir,
+@@ -2502,7 +2608,7 @@ static int may_delete(struct inode *dir,
return -EPERM;
if (check_sticky(dir, inode) || IS_APPEND(inode) ||
@@ -4419,7 +4435,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
return -EPERM;
if (isdir) {
if (!d_is_dir(victim))
-@@ -2516,19 +2622,25 @@ int vfs_create(struct inode *dir, struct
+@@ -2584,19 +2690,25 @@ int vfs_create(struct inode *dir, struct
bool want_excl)
{
int error = may_create(dir, dentry);
@@ -4447,7 +4463,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
return error;
}
EXPORT_SYMBOL(vfs_create);
-@@ -2564,6 +2676,15 @@ static int may_open(struct path *path, i
+@@ -2632,6 +2744,15 @@ static int may_open(struct path *path, i
break;
}
@@ -4463,7 +4479,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
error = inode_permission(inode, acc_mode);
if (error)
return error;
-@@ -3058,6 +3179,16 @@ finish_open:
+@@ -3126,6 +3247,16 @@ finish_open:
}
finish_open_created:
error = may_open(&nd->path, acc_mode, open_flag);
@@ -4480,32 +4496,31 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
if (error)
goto out;
-@@ -3187,6 +3318,7 @@ static struct file *path_openat(int dfd,
+@@ -3254,6 +3385,9 @@ static struct file *path_openat(int dfd,
int opened = 0;
int error;
++#ifdef CONFIG_VSERVER_COWBL
+restart:
++#endif
file = get_empty_filp();
if (IS_ERR(file))
return file;
-@@ -3228,6 +3360,16 @@ static struct file *path_openat(int dfd,
+@@ -3290,6 +3424,13 @@ static struct file *path_openat(int dfd,
error = do_last(nd, &path, file, op, &opened, pathname);
put_link(nd, &link, cookie);
}
+
+#ifdef CONFIG_VSERVER_COWBL
+ if (error == -EMLINK) {
-+ if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT))
-+ path_put(&nd->root);
-+ if (base)
-+ fput(base);
++ path_cleanup(nd);
+ goto restart;
+ }
+#endif
out:
- if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT))
- path_put(&nd->root);
-@@ -3343,6 +3485,11 @@ struct dentry *kern_path_create(int dfd,
+ path_cleanup(nd);
+ out2:
+@@ -3408,6 +3549,11 @@ static struct dentry *filename_create(in
goto fail;
}
*path = nd.path;
@@ -4517,7 +4532,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
return dentry;
fail:
dput(dentry);
-@@ -3899,7 +4046,7 @@ int vfs_link(struct dentry *old_dentry,
+@@ -3977,7 +4123,7 @@ int vfs_link(struct dentry *old_dentry,
/*
* A link to an append-only or immutable file cannot be created.
*/
@@ -4526,7 +4541,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
return -EPERM;
if (!dir->i_op->link)
return -EPERM;
-@@ -4404,6 +4551,289 @@ int generic_readlink(struct dentry *dent
+@@ -4482,6 +4628,295 @@ int generic_readlink(struct dentry *dent
}
EXPORT_SYMBOL(generic_readlink);
@@ -4552,17 +4567,19 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+ struct file *new_file;
+ char *to, *path, pad='\251';
+ loff_t size;
++ struct filename *filename = getname_kernel(pathname);
++ struct filename *to_filename;
+
+ vxdprintk(VXD_CBIT(misc, 1),
+ "cow_break_link(" VS_Q("%s") ")", pathname);
+
+ path = kmalloc(PATH_MAX, GFP_KERNEL);
+ ret = -ENOMEM;
-+ if (!path)
++ if (!path || IS_ERR(filename))
+ goto out;
+
+ /* old_nd.path will have refs to dentry and mnt */
-+ ret = do_path_lookup(AT_FDCWD, pathname, LOOKUP_FOLLOW, &old_nd);
++ ret = filename_lookup(AT_FDCWD, filename, LOOKUP_FOLLOW, &old_nd);
+ vxdprintk(VXD_CBIT(misc, 2),
+ "do_path_lookup(old): %d", ret);
+ if (ret < 0)
@@ -4593,8 +4610,10 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+ vxdprintk(VXD_CBIT(misc, 1), "temp copy " VS_Q("%s"), to);
+
+ /* dir_nd.path will have refs to dentry and mnt */
-+ ret = do_path_lookup(AT_FDCWD, to,
++ to_filename = getname_kernel(to);
++ ret = filename_lookup(AT_FDCWD, to_filename,
+ LOOKUP_PARENT | LOOKUP_OPEN | LOOKUP_CREATE, &dir_nd);
++ putname(to_filename);
+ vxdprintk(VXD_CBIT(misc, 2), "do_path_lookup(new): %d", ret);
+ if (ret < 0)
+ goto retry;
@@ -4645,7 +4664,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+ else if (ret < 0)
+ goto out_unlock_new;
+
-+ /* drop out early, ret passes ENOENT */
++ /* the old file went away */
+ ret = -ENOENT;
+ if ((redo = d_unhashed(old_dentry)))
+ goto out_unlock_new;
@@ -4676,7 +4695,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+
+ drop = 0;
+
-+ size = i_size_read(old_file->f_dentry->d_inode);
++ size = i_size_read(old_file->f_path.dentry->d_inode);
+ ret = do_cow_splice(old_file, new_file, size);
+ vxdprintk(VXD_CBIT(misc, 2), "do_splice_direct: %d", ret);
+ if (ret < 0) {
@@ -4754,7 +4773,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+
+ /* lookup dentry once again
+ old_nd.path will be freed as old_path in out_rel_old */
-+ ret = do_path_lookup(AT_FDCWD, pathname, LOOKUP_FOLLOW, &old_nd);
++ ret = filename_lookup(AT_FDCWD, filename, LOOKUP_FOLLOW, &old_nd);
+ if (ret)
+ goto out_rel_both;
+
@@ -4780,6 +4799,8 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
+ dput(new_dentry);
+ new_dentry = ERR_PTR(ret);
+ }
++ if (!IS_ERR(filename))
++ putname(filename);
+ vxdprintk(VXD_CBIT(misc, 3),
+ "cow_break_link returning with %p", new_dentry);
+ return new_dentry;
@@ -4816,9 +4837,9 @@ diff -NurpP --minimal linux-3.18.5/fs/namei.c linux-3.18.5-vs2.3.7.3/fs/namei.c
/* get the link contents into pagecache */
static char *page_getlink(struct dentry * dentry, struct page **ppage)
{
-diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/namespace.c
---- linux-3.18.5/fs/namespace.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/namespace.c 2015-01-19 12:08:57.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/namespace.c linux-4.1.12-vs2.3.8.3/fs/namespace.c
+--- linux-4.1.12/fs/namespace.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/namespace.c 2015-10-29 09:25:27.000000000 +0000
@@ -24,6 +24,11 @@
#include <linux/magic.h>
#include <linux/bootmem.h>
@@ -4831,7 +4852,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
#include "pnode.h"
#include "internal.h"
-@@ -897,6 +902,10 @@ vfs_kern_mount(struct file_system_type *
+@@ -927,6 +932,10 @@ vfs_kern_mount(struct file_system_type *
if (!type)
return ERR_PTR(-ENODEV);
@@ -4842,7 +4863,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
mnt = alloc_vfsmnt(name);
if (!mnt)
return ERR_PTR(-ENOMEM);
-@@ -971,6 +980,7 @@ static struct mount *clone_mnt(struct mo
+@@ -1002,6 +1011,7 @@ static struct mount *clone_mnt(struct mo
mnt->mnt.mnt_root = dget(root);
mnt->mnt_mountpoint = mnt->mnt.mnt_root;
mnt->mnt_parent = mnt;
@@ -4850,7 +4871,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
lock_mount_hash();
list_add_tail(&mnt->mnt_instance, &sb->s_mounts);
unlock_mount_hash();
-@@ -1508,7 +1518,8 @@ out_unlock:
+@@ -1570,7 +1580,8 @@ out_unlock:
*/
static inline bool may_mount(void)
{
@@ -4860,7 +4881,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
}
/*
-@@ -1969,6 +1980,7 @@ static int do_change_type(struct path *p
+@@ -2029,6 +2040,7 @@ static int do_change_type(struct path *p
if (err)
goto out_unlock;
}
@@ -4868,7 +4889,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
lock_mount_hash();
for (m = mnt; m; m = (recurse ? next_mnt(m, mnt) : NULL))
-@@ -1997,12 +2009,14 @@ static bool has_locked_children(struct m
+@@ -2057,12 +2069,14 @@ static bool has_locked_children(struct m
* do loopback mount.
*/
static int do_loopback(struct path *path, const char *old_name,
@@ -4884,7 +4905,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
if (!old_name || !*old_name)
return -EINVAL;
err = kern_path(old_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path);
-@@ -2079,7 +2093,7 @@ static int change_mount_flags(struct vfs
+@@ -2142,7 +2156,7 @@ static int change_mount_flags(struct vfs
* on it - tough luck.
*/
static int do_remount(struct path *path, int flags, int mnt_flags,
@@ -4893,7 +4914,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
{
int err;
struct super_block *sb = path->mnt->mnt_sb;
-@@ -2579,6 +2593,7 @@ long do_mount(const char *dev_name, cons
+@@ -2648,6 +2662,7 @@ long do_mount(const char *dev_name, cons
struct path path;
int retval = 0;
int mnt_flags = 0;
@@ -4901,7 +4922,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
/* Discard magic */
if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
-@@ -2604,6 +2619,12 @@ long do_mount(const char *dev_name, cons
+@@ -2673,6 +2688,12 @@ long do_mount(const char *dev_name, cons
if (!(flags & MS_NOATIME))
mnt_flags |= MNT_RELATIME;
@@ -4914,7 +4935,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
/* Separate the per-mountpoint flags */
if (flags & MS_NOSUID)
mnt_flags |= MNT_NOSUID;
-@@ -2628,15 +2649,17 @@ long do_mount(const char *dev_name, cons
+@@ -2697,15 +2718,17 @@ long do_mount(const char *dev_name, cons
mnt_flags |= path.mnt->mnt_flags & MNT_ATIME_MASK;
}
@@ -4934,7 +4955,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
retval = do_change_type(&path, flags);
else if (flags & MS_MOVE)
-@@ -2752,6 +2775,7 @@ struct mnt_namespace *copy_mnt_ns(unsign
+@@ -2822,6 +2845,7 @@ struct mnt_namespace *copy_mnt_ns(unsign
p = next_mnt(p, old);
}
namespace_unlock();
@@ -4942,7 +4963,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
if (rootmnt)
mntput(rootmnt);
-@@ -2926,9 +2950,10 @@ SYSCALL_DEFINE2(pivot_root, const char _
+@@ -2996,9 +3020,10 @@ SYSCALL_DEFINE2(pivot_root, const char _
new_mnt = real_mount(new.mnt);
root_mnt = real_mount(root.mnt);
old_mnt = real_mount(old.mnt);
@@ -4955,7 +4976,7 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
goto out4;
if (!check_mnt(root_mnt) || !check_mnt(new_mnt))
goto out4;
-@@ -3063,6 +3088,7 @@ void put_mnt_ns(struct mnt_namespace *ns
+@@ -3136,6 +3161,7 @@ void put_mnt_ns(struct mnt_namespace *ns
if (!atomic_dec_and_test(&ns->count))
return;
drop_collected_mounts(&ns->root->mnt);
@@ -4963,10 +4984,10 @@ diff -NurpP --minimal linux-3.18.5/fs/namespace.c linux-3.18.5-vs2.3.7.3/fs/name
free_mnt_ns(ns);
}
-diff -NurpP --minimal linux-3.18.5/fs/nfs/client.c linux-3.18.5-vs2.3.7.3/fs/nfs/client.c
---- linux-3.18.5/fs/nfs/client.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfs/client.c 2015-01-19 10:58:03.000000000 +0000
-@@ -693,6 +693,9 @@ int nfs_init_server_rpcclient(struct nfs
+diff -NurpP --minimal linux-4.1.12/fs/nfs/client.c linux-4.1.12-vs2.3.8.3/fs/nfs/client.c
+--- linux-4.1.12/fs/nfs/client.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfs/client.c 2015-07-06 20:43:43.000000000 +0000
+@@ -692,6 +692,9 @@ int nfs_init_server_rpcclient(struct nfs
if (server->flags & NFS_MOUNT_SOFT)
server->client->cl_softrtry = 1;
@@ -4976,7 +4997,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/client.c linux-3.18.5-vs2.3.7.3/fs/nfs
return 0;
}
EXPORT_SYMBOL_GPL(nfs_init_server_rpcclient);
-@@ -871,6 +874,10 @@ static void nfs_server_set_fsinfo(struct
+@@ -870,6 +873,10 @@ static void nfs_server_set_fsinfo(struct
server->acdirmin = server->acdirmax = 0;
}
@@ -4987,9 +5008,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/client.c linux-3.18.5-vs2.3.7.3/fs/nfs
server->maxfilesize = fsinfo->maxfilesize;
server->time_delta = fsinfo->time_delta;
-diff -NurpP --minimal linux-3.18.5/fs/nfs/dir.c linux-3.18.5-vs2.3.7.3/fs/nfs/dir.c
---- linux-3.18.5/fs/nfs/dir.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfs/dir.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfs/dir.c linux-4.1.12-vs2.3.8.3/fs/nfs/dir.c
+--- linux-4.1.12/fs/nfs/dir.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfs/dir.c 2015-07-06 20:43:43.000000000 +0000
@@ -37,6 +37,7 @@
#include <linux/sched.h>
#include <linux/kmemleak.h>
@@ -4998,17 +5019,17 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/dir.c linux-3.18.5-vs2.3.7.3/fs/nfs/di
#include "delegation.h"
#include "iostat.h"
-@@ -1392,6 +1393,7 @@ struct dentry *nfs_lookup(struct inode *
+@@ -1411,6 +1412,7 @@ struct dentry *nfs_lookup(struct inode *
/* Success: notify readdir to use READDIRPLUS */
nfs_advise_use_readdirplus(dir);
+ dx_propagate_tag(nd, inode);
no_entry:
- res = d_materialise_unique(dentry, inode);
+ res = d_splice_alias(inode, dentry);
if (res != NULL) {
-diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/inode.c
---- linux-3.18.5/fs/nfs/inode.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfs/inode.c 2015-01-19 11:44:24.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfs/inode.c linux-4.1.12-vs2.3.8.3/fs/nfs/inode.c
+--- linux-4.1.12/fs/nfs/inode.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfs/inode.c 2015-10-29 09:25:27.000000000 +0000
@@ -38,6 +38,7 @@
#include <linux/slab.h>
#include <linux/compat.h>
@@ -5017,7 +5038,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
#include <asm/uaccess.h>
-@@ -368,6 +369,8 @@ nfs_fhget(struct super_block *sb, struct
+@@ -376,6 +377,8 @@ nfs_fhget(struct super_block *sb, struct
if (inode->i_state & I_NEW) {
struct nfs_inode *nfsi = NFS_I(inode);
unsigned long now = jiffies;
@@ -5026,7 +5047,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/* We set i_ino for the few things that still rely on it,
* such as stat(2) */
-@@ -412,8 +415,8 @@ nfs_fhget(struct super_block *sb, struct
+@@ -419,8 +422,8 @@ nfs_fhget(struct super_block *sb, struct
inode->i_version = 0;
inode->i_size = 0;
clear_nlink(inode);
@@ -5037,7 +5058,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
inode->i_blocks = 0;
memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
nfsi->write_io = 0;
-@@ -447,11 +450,11 @@ nfs_fhget(struct super_block *sb, struct
+@@ -454,11 +457,11 @@ nfs_fhget(struct super_block *sb, struct
else if (nfs_server_capable(inode, NFS_CAP_NLINK))
nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR);
if (fattr->valid & NFS_ATTR_FATTR_OWNER)
@@ -5051,7 +5072,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
else if (nfs_server_capable(inode, NFS_CAP_OWNER_GROUP))
nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR);
if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED)
-@@ -462,6 +465,10 @@ nfs_fhget(struct super_block *sb, struct
+@@ -469,6 +472,10 @@ nfs_fhget(struct super_block *sb, struct
*/
inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used);
}
@@ -5062,7 +5083,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
nfs_setsecurity(inode, fattr, label);
-@@ -592,6 +599,8 @@ void nfs_setattr_update_inode(struct ino
+@@ -608,6 +615,8 @@ void nfs_setattr_update_inode(struct ino
inode->i_uid = attr->ia_uid;
if ((attr->ia_valid & ATTR_GID) != 0)
inode->i_gid = attr->ia_gid;
@@ -5070,8 +5091,8 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
+ inode->i_tag = attr->ia_tag;
nfs_set_cache_invalid(inode, NFS_INO_INVALID_ACCESS
| NFS_INO_INVALID_ACL);
- spin_unlock(&inode->i_lock);
-@@ -1171,7 +1180,9 @@ static int nfs_check_inode_attributes(st
+ }
+@@ -1221,7 +1230,9 @@ static int nfs_check_inode_attributes(st
struct nfs_inode *nfsi = NFS_I(inode);
loff_t cur_size, new_isize;
unsigned long invalid = 0;
@@ -5082,9 +5103,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
if (nfs_have_delegated_attributes(inode))
return 0;
-@@ -1196,13 +1207,18 @@ static int nfs_check_inode_attributes(st
- invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE;
- }
+@@ -1248,13 +1259,18 @@ static int nfs_check_inode_attributes(st
+ if (nfsi->nrequests != 0)
+ invalid &= ~NFS_INO_REVAL_PAGECACHE;
+ kuid = INOTAG_KUID(DX_TAG(inode), fattr->uid, fattr->gid);
+ kgid = INOTAG_KGID(DX_TAG(inode), fattr->uid, fattr->gid);
@@ -5103,7 +5124,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/* Has the link count changed? */
if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink)
-@@ -1533,6 +1549,9 @@ static int nfs_update_inode(struct inode
+@@ -1627,6 +1643,9 @@ static int nfs_update_inode(struct inode
unsigned long invalid = 0;
unsigned long now = jiffies;
unsigned long save_cache_validity;
@@ -5113,7 +5134,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%x)\n",
__func__, inode->i_sb->s_id, inode->i_ino,
-@@ -1637,6 +1656,9 @@ static int nfs_update_inode(struct inode
+@@ -1729,6 +1748,9 @@ static int nfs_update_inode(struct inode
| NFS_INO_REVAL_PAGECACHE
| NFS_INO_REVAL_FORCED);
@@ -5123,7 +5144,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
if (fattr->valid & NFS_ATTR_FATTR_ATIME)
memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
-@@ -1683,6 +1705,10 @@ static int nfs_update_inode(struct inode
+@@ -1775,6 +1797,10 @@ static int nfs_update_inode(struct inode
| NFS_INO_INVALID_ACL
| NFS_INO_REVAL_FORCED);
@@ -5134,9 +5155,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/inode.c linux-3.18.5-vs2.3.7.3/fs/nfs/
if (fattr->valid & NFS_ATTR_FATTR_NLINK) {
if (inode->i_nlink != fattr->nlink) {
invalid |= NFS_INO_INVALID_ATTR;
-diff -NurpP --minimal linux-3.18.5/fs/nfs/nfs3xdr.c linux-3.18.5-vs2.3.7.3/fs/nfs/nfs3xdr.c
---- linux-3.18.5/fs/nfs/nfs3xdr.c 2014-09-03 13:19:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfs/nfs3xdr.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfs/nfs3xdr.c linux-4.1.12-vs2.3.8.3/fs/nfs/nfs3xdr.c
+--- linux-4.1.12/fs/nfs/nfs3xdr.c 2015-10-29 09:20:33.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfs/nfs3xdr.c 2015-10-29 09:25:27.000000000 +0000
@@ -20,6 +20,7 @@
#include <linux/nfs3.h>
#include <linux/nfs_fs.h>
@@ -5282,10 +5303,10 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/nfs3xdr.c linux-3.18.5-vs2.3.7.3/fs/nf
}
/*
-diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/super.c
---- linux-3.18.5/fs/nfs/super.c 2015-01-17 02:40:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfs/super.c 2015-01-19 10:58:03.000000000 +0000
-@@ -55,6 +55,7 @@
+diff -NurpP --minimal linux-4.1.12/fs/nfs/super.c linux-4.1.12-vs2.3.8.3/fs/nfs/super.c
+--- linux-4.1.12/fs/nfs/super.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfs/super.c 2015-07-06 20:43:43.000000000 +0000
+@@ -54,6 +54,7 @@
#include <linux/parser.h>
#include <linux/nsproxy.h>
#include <linux/rcupdate.h>
@@ -5293,7 +5314,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
#include <asm/uaccess.h>
-@@ -103,6 +104,7 @@ enum {
+@@ -102,6 +103,7 @@ enum {
Opt_mountport,
Opt_mountvers,
Opt_minorversion,
@@ -5301,7 +5322,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/* Mount options that take string arguments */
Opt_nfsvers,
-@@ -115,6 +117,9 @@ enum {
+@@ -114,6 +116,9 @@ enum {
/* Special mount options */
Opt_userspace, Opt_deprecated, Opt_sloppy,
@@ -5311,7 +5332,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
Opt_err
};
-@@ -184,6 +189,10 @@ static const match_table_t nfs_mount_opt
+@@ -183,6 +188,10 @@ static const match_table_t nfs_mount_opt
{ Opt_fscache_uniq, "fsc=%s" },
{ Opt_local_lock, "local_lock=%s" },
@@ -5322,7 +5343,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/* The following needs to be listed after all other options */
{ Opt_nfsvers, "v%s" },
-@@ -638,6 +647,7 @@ static void nfs_show_mount_options(struc
+@@ -639,6 +648,7 @@ static void nfs_show_mount_options(struc
{ NFS_MOUNT_NORDIRPLUS, ",nordirplus", "" },
{ NFS_MOUNT_UNSHARED, ",nosharecache", "" },
{ NFS_MOUNT_NORESVPORT, ",noresvport", "" },
@@ -5330,7 +5351,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
{ 0, NULL, NULL }
};
const struct proc_nfs_info *nfs_infop;
-@@ -1320,6 +1330,14 @@ static int nfs_parse_mount_options(char
+@@ -1321,6 +1331,14 @@ static int nfs_parse_mount_options(char
case Opt_nomigration:
mnt->options &= NFS_OPTION_MIGRATION;
break;
@@ -5345,7 +5366,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/*
* options that take numeric values
-@@ -1406,6 +1424,12 @@ static int nfs_parse_mount_options(char
+@@ -1407,6 +1425,12 @@ static int nfs_parse_mount_options(char
goto out_invalid_value;
mnt->minorversion = option;
break;
@@ -5358,9 +5379,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfs/super.c linux-3.18.5-vs2.3.7.3/fs/nfs/
/*
* options that take text values
-diff -NurpP --minimal linux-3.18.5/fs/nfsd/auth.c linux-3.18.5-vs2.3.7.3/fs/nfsd/auth.c
---- linux-3.18.5/fs/nfsd/auth.c 2015-01-16 22:19:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfsd/auth.c 2015-01-19 12:46:19.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfsd/auth.c linux-4.1.12-vs2.3.8.3/fs/nfsd/auth.c
+--- linux-4.1.12/fs/nfsd/auth.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfsd/auth.c 2015-07-06 20:43:43.000000000 +0000
@@ -1,6 +1,7 @@
/* Copyright (C) 1995, 1996 Olaf Kirch <okir at monad.swb.de> */
@@ -5379,9 +5400,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfsd/auth.c linux-3.18.5-vs2.3.7.3/fs/nfsd
rqgi = rqstp->rq_cred.cr_group_info;
-diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfs3xdr.c linux-3.18.5-vs2.3.7.3/fs/nfsd/nfs3xdr.c
---- linux-3.18.5/fs/nfsd/nfs3xdr.c 2015-01-16 22:19:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfsd/nfs3xdr.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfsd/nfs3xdr.c linux-4.1.12-vs2.3.8.3/fs/nfsd/nfs3xdr.c
+--- linux-4.1.12/fs/nfsd/nfs3xdr.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfsd/nfs3xdr.c 2015-07-06 20:43:43.000000000 +0000
@@ -8,6 +8,7 @@
#include <linux/namei.h>
@@ -5435,9 +5456,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfs3xdr.c linux-3.18.5-vs2.3.7.3/fs/n
if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
} else {
-diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfs4xdr.c linux-3.18.5-vs2.3.7.3/fs/nfsd/nfs4xdr.c
---- linux-3.18.5/fs/nfsd/nfs4xdr.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfsd/nfs4xdr.c 2015-01-19 12:45:51.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfsd/nfs4xdr.c linux-4.1.12-vs2.3.8.3/fs/nfsd/nfs4xdr.c
+--- linux-4.1.12/fs/nfsd/nfs4xdr.c 2015-10-29 09:20:35.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfsd/nfs4xdr.c 2015-10-29 09:25:27.000000000 +0000
@@ -39,6 +39,7 @@
#include <linux/utsname.h>
#include <linux/pagemap.h>
@@ -5446,7 +5467,7 @@ diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfs4xdr.c linux-3.18.5-vs2.3.7.3/fs/n
#include "idmap.h"
#include "acl.h"
-@@ -2436,12 +2437,16 @@ out_acl:
+@@ -2626,12 +2627,16 @@ out_acl:
*p++ = cpu_to_be32(stat.nlink);
}
if (bmval1 & FATTR4_WORD1_OWNER) {
@@ -5465,9 +5486,9 @@ diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfs4xdr.c linux-3.18.5-vs2.3.7.3/fs/n
if (status)
goto out;
}
-diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfsxdr.c linux-3.18.5-vs2.3.7.3/fs/nfsd/nfsxdr.c
---- linux-3.18.5/fs/nfsd/nfsxdr.c 2015-01-16 22:19:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/nfsd/nfsxdr.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/nfsd/nfsxdr.c linux-4.1.12-vs2.3.8.3/fs/nfsd/nfsxdr.c
+--- linux-4.1.12/fs/nfsd/nfsxdr.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/nfsd/nfsxdr.c 2015-07-06 20:43:43.000000000 +0000
@@ -7,6 +7,7 @@
#include "vfs.h"
#include "xdr.h"
@@ -5519,10 +5540,10 @@ diff -NurpP --minimal linux-3.18.5/fs/nfsd/nfsxdr.c linux-3.18.5-vs2.3.7.3/fs/nf
if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
*p++ = htonl(NFS_MAXPATHLEN);
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/dlmglue.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/dlmglue.c
---- linux-3.18.5/fs/ocfs2/dlmglue.c 2015-01-17 02:40:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/dlmglue.c 2015-01-19 10:58:03.000000000 +0000
-@@ -2047,6 +2047,7 @@ static void __ocfs2_stuff_meta_lvb(struc
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/dlmglue.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/dlmglue.c
+--- linux-4.1.12/fs/ocfs2/dlmglue.c 2015-10-29 09:20:35.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/dlmglue.c 2015-10-29 09:25:27.000000000 +0000
+@@ -2077,6 +2077,7 @@ static void __ocfs2_stuff_meta_lvb(struc
lvb->lvb_iclusters = cpu_to_be32(oi->ip_clusters);
lvb->lvb_iuid = cpu_to_be32(i_uid_read(inode));
lvb->lvb_igid = cpu_to_be32(i_gid_read(inode));
@@ -5530,7 +5551,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/dlmglue.c linux-3.18.5-vs2.3.7.3/fs/
lvb->lvb_imode = cpu_to_be16(inode->i_mode);
lvb->lvb_inlink = cpu_to_be16(inode->i_nlink);
lvb->lvb_iatime_packed =
-@@ -2097,6 +2098,7 @@ static void ocfs2_refresh_inode_from_lvb
+@@ -2127,6 +2128,7 @@ static void ocfs2_refresh_inode_from_lvb
i_uid_write(inode, be32_to_cpu(lvb->lvb_iuid));
i_gid_write(inode, be32_to_cpu(lvb->lvb_igid));
@@ -5538,9 +5559,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/dlmglue.c linux-3.18.5-vs2.3.7.3/fs/
inode->i_mode = be16_to_cpu(lvb->lvb_imode);
set_nlink(inode, be16_to_cpu(lvb->lvb_inlink));
ocfs2_unpack_timespec(&inode->i_atime,
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/dlmglue.h linux-3.18.5-vs2.3.7.3/fs/ocfs2/dlmglue.h
---- linux-3.18.5/fs/ocfs2/dlmglue.h 2014-06-12 13:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/dlmglue.h 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/dlmglue.h linux-4.1.12-vs2.3.8.3/fs/ocfs2/dlmglue.h
+--- linux-4.1.12/fs/ocfs2/dlmglue.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/dlmglue.h 2015-07-06 20:43:43.000000000 +0000
@@ -46,7 +46,8 @@ struct ocfs2_meta_lvb {
__be16 lvb_inlink;
__be32 lvb_iattr;
@@ -5551,10 +5572,10 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/dlmglue.h linux-3.18.5-vs2.3.7.3/fs/
};
#define OCFS2_QINFO_LVB_VERSION 1
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/file.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/file.c
---- linux-3.18.5/fs/ocfs2/file.c 2015-01-17 02:40:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/file.c 2015-01-19 10:58:03.000000000 +0000
-@@ -1139,7 +1139,7 @@ int ocfs2_setattr(struct dentry *dentry,
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/file.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/file.c
+--- linux-4.1.12/fs/ocfs2/file.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/file.c 2015-07-06 20:43:43.000000000 +0000
+@@ -1146,7 +1146,7 @@ int ocfs2_setattr(struct dentry *dentry,
attr->ia_valid &= ~ATTR_SIZE;
#define OCFS2_VALID_ATTRS (ATTR_ATIME | ATTR_MTIME | ATTR_CTIME | ATTR_SIZE \
@@ -5563,9 +5584,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/file.c linux-3.18.5-vs2.3.7.3/fs/ocf
if (!(attr->ia_valid & OCFS2_VALID_ATTRS))
return 0;
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/inode.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/inode.c
---- linux-3.18.5/fs/ocfs2/inode.c 2014-06-12 13:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/inode.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/inode.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/inode.c
+--- linux-4.1.12/fs/ocfs2/inode.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/inode.c 2015-07-06 20:43:43.000000000 +0000
@@ -28,6 +28,7 @@
#include <linux/highmem.h>
#include <linux/pagemap.h>
@@ -5662,10 +5683,10 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/inode.c linux-3.18.5-vs2.3.7.3/fs/oc
/* Fast symlinks will have i_size but no allocated clusters. */
if (S_ISLNK(inode->i_mode) && !fe->i_clusters) {
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/inode.h linux-3.18.5-vs2.3.7.3/fs/ocfs2/inode.h
---- linux-3.18.5/fs/ocfs2/inode.h 2015-01-17 02:40:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/inode.h 2015-01-19 10:58:03.000000000 +0000
-@@ -157,6 +157,7 @@ struct buffer_head *ocfs2_bread(struct i
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/inode.h linux-4.1.12-vs2.3.8.3/fs/ocfs2/inode.h
+--- linux-4.1.12/fs/ocfs2/inode.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/inode.h 2015-07-06 20:43:43.000000000 +0000
+@@ -161,6 +161,7 @@ struct buffer_head *ocfs2_bread(struct i
void ocfs2_set_inode_flags(struct inode *inode);
void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi);
@@ -5673,9 +5694,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/inode.h linux-3.18.5-vs2.3.7.3/fs/oc
static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode)
{
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/ioctl.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/ioctl.c
---- linux-3.18.5/fs/ocfs2/ioctl.c 2015-01-16 22:19:19.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/ioctl.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/ioctl.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/ioctl.c
+--- linux-4.1.12/fs/ocfs2/ioctl.c 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/ioctl.c 2015-07-06 20:43:43.000000000 +0000
@@ -76,7 +76,41 @@ static int ocfs2_get_inode_attr(struct i
return status;
}
@@ -5739,9 +5760,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/ioctl.c linux-3.18.5-vs2.3.7.3/fs/oc
long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct inode *inode = file_inode(filp);
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/namei.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/namei.c
---- linux-3.18.5/fs/ocfs2/namei.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/namei.c 2015-01-19 12:15:49.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/namei.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/namei.c
+--- linux-4.1.12/fs/ocfs2/namei.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/namei.c 2015-07-06 20:43:43.000000000 +0000
@@ -41,6 +41,7 @@
#include <linux/slab.h>
#include <linux/highmem.h>
@@ -5750,7 +5771,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/namei.c linux-3.18.5-vs2.3.7.3/fs/oc
#include <cluster/masklog.h>
-@@ -524,6 +525,7 @@ static int __ocfs2_mknod_locked(struct i
+@@ -528,6 +529,7 @@ static int __ocfs2_mknod_locked(struct i
struct ocfs2_extent_list *fel;
u16 feat;
struct ocfs2_inode_info *oi = OCFS2_I(inode);
@@ -5758,7 +5779,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/namei.c linux-3.18.5-vs2.3.7.3/fs/oc
*new_fe_bh = NULL;
-@@ -561,8 +563,13 @@ static int __ocfs2_mknod_locked(struct i
+@@ -565,8 +567,13 @@ static int __ocfs2_mknod_locked(struct i
fe->i_suballoc_loc = cpu_to_le64(suballoc_loc);
fe->i_suballoc_bit = cpu_to_le16(suballoc_bit);
fe->i_suballoc_slot = cpu_to_le16(inode_ac->ac_alloc_slot);
@@ -5774,21 +5795,21 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/namei.c linux-3.18.5-vs2.3.7.3/fs/oc
fe->i_mode = cpu_to_le16(inode->i_mode);
if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
fe->id1.dev1.i_rdev = cpu_to_le64(huge_encode_dev(dev));
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/ocfs2.h linux-3.18.5-vs2.3.7.3/fs/ocfs2/ocfs2.h
---- linux-3.18.5/fs/ocfs2/ocfs2.h 2014-09-03 13:19:40.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/ocfs2.h 2015-01-19 10:58:03.000000000 +0000
-@@ -273,6 +273,7 @@ enum ocfs2_mount_options
- writes */
- OCFS2_MOUNT_HB_NONE = 1 << 13, /* No heartbeat */
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/ocfs2.h linux-4.1.12-vs2.3.8.3/fs/ocfs2/ocfs2.h
+--- linux-4.1.12/fs/ocfs2/ocfs2.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/ocfs2.h 2015-07-06 20:43:43.000000000 +0000
+@@ -286,6 +286,7 @@ enum ocfs2_mount_options
OCFS2_MOUNT_HB_GLOBAL = 1 << 14, /* Global heartbeat */
-+ OCFS2_MOUNT_TAGGED = 1 << 15, /* use tagging */
+
+ OCFS2_MOUNT_JOURNAL_ASYNC_COMMIT = 1 << 15, /* Journal Async Commit */
++ OCFS2_MOUNT_TAGGED = 1 << 16, /* use tagging */
};
#define OCFS2_OSB_SOFT_RO 0x0001
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/ocfs2_fs.h linux-3.18.5-vs2.3.7.3/fs/ocfs2/ocfs2_fs.h
---- linux-3.18.5/fs/ocfs2/ocfs2_fs.h 2012-12-11 03:30:57.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/ocfs2_fs.h 2015-01-19 10:58:03.000000000 +0000
-@@ -266,6 +266,11 @@
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/ocfs2_fs.h linux-4.1.12-vs2.3.8.3/fs/ocfs2/ocfs2_fs.h
+--- linux-4.1.12/fs/ocfs2/ocfs2_fs.h 2015-04-12 22:12:50.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/ocfs2_fs.h 2015-07-06 20:43:43.000000000 +0000
+@@ -275,6 +275,11 @@
#define OCFS2_TOPDIR_FL FS_TOPDIR_FL /* Top of directory hierarchies*/
#define OCFS2_RESERVED_FL FS_RESERVED_FL /* reserved for ext2 lib */
@@ -5800,28 +5821,28 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/ocfs2_fs.h linux-3.18.5-vs2.3.7.3/fs
#define OCFS2_FL_VISIBLE FS_FL_USER_VISIBLE /* User visible flags */
#define OCFS2_FL_MODIFIABLE FS_FL_USER_MODIFIABLE /* User modifiable flags */
-diff -NurpP --minimal linux-3.18.5/fs/ocfs2/super.c linux-3.18.5-vs2.3.7.3/fs/ocfs2/super.c
---- linux-3.18.5/fs/ocfs2/super.c 2015-01-17 02:40:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/ocfs2/super.c 2015-01-19 10:58:03.000000000 +0000
-@@ -185,6 +185,7 @@ enum {
- Opt_coherency_full,
+diff -NurpP --minimal linux-4.1.12/fs/ocfs2/super.c linux-4.1.12-vs2.3.8.3/fs/ocfs2/super.c
+--- linux-4.1.12/fs/ocfs2/super.c 2015-10-29 09:20:35.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/ocfs2/super.c 2015-10-29 09:25:27.000000000 +0000
+@@ -192,6 +192,7 @@ enum {
Opt_resv_level,
Opt_dir_resv_level,
+ Opt_journal_async_commit,
+ Opt_tag, Opt_notag, Opt_tagid,
Opt_err,
};
-@@ -216,6 +217,9 @@ static const match_table_t tokens = {
- {Opt_coherency_full, "coherency=full"},
+@@ -224,6 +225,9 @@ static const match_table_t tokens = {
{Opt_resv_level, "resv_level=%u"},
{Opt_dir_resv_level, "dir_resv_level=%u"},
+ {Opt_journal_async_commit, "journal_async_commit"},
+ {Opt_tag, "tag"},
+ {Opt_notag, "notag"},
+ {Opt_tagid, "tagid=%u"},
{Opt_err, NULL}
};
-@@ -666,6 +670,13 @@ static int ocfs2_remount(struct super_bl
+@@ -675,6 +679,13 @@ static int ocfs2_remount(struct super_bl
goto out;
}
@@ -5835,7 +5856,7 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/super.c linux-3.18.5-vs2.3.7.3/fs/oc
/* We're going to/from readonly mode. */
if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
/* Disable quota accounting before remounting RO */
-@@ -1185,6 +1196,9 @@ static int ocfs2_fill_super(struct super
+@@ -1164,6 +1175,9 @@ static int ocfs2_fill_super(struct super
ocfs2_complete_mount_recovery(osb);
@@ -5845,9 +5866,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/super.c linux-3.18.5-vs2.3.7.3/fs/oc
if (ocfs2_mount_local(osb))
snprintf(nodestr, sizeof(nodestr), "local");
else
-@@ -1493,6 +1507,20 @@ static int ocfs2_parse_options(struct su
- option < OCFS2_MAX_RESV_LEVEL)
- mopt->dir_resv_level = option;
+@@ -1475,6 +1489,20 @@ static int ocfs2_parse_options(struct su
+ case Opt_journal_async_commit:
+ mopt->mount_opt |= OCFS2_MOUNT_JOURNAL_ASYNC_COMMIT;
break;
+#ifndef CONFIG_TAGGING_NONE
+ case Opt_tag:
@@ -5866,9 +5887,9 @@ diff -NurpP --minimal linux-3.18.5/fs/ocfs2/super.c linux-3.18.5-vs2.3.7.3/fs/oc
default:
mlog(ML_ERROR,
"Unrecognized mount option \"%s\" "
-diff -NurpP --minimal linux-3.18.5/fs/open.c linux-3.18.5-vs2.3.7.3/fs/open.c
---- linux-3.18.5/fs/open.c 2015-01-17 02:40:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/open.c 2015-01-19 10:58:03.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/open.c linux-4.1.12-vs2.3.8.3/fs/open.c
+--- linux-4.1.12/fs/open.c 2015-10-29 09:20:35.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/open.c 2015-10-29 09:25:27.000000000 +0000
@@ -31,6 +31,11 @@
#include <linux/ima.h>
#include <linux/dnotify.h>
@@ -5893,7 +5914,7 @@ diff -NurpP --minimal linux-3.18.5/fs/open.c linux-3.18.5-vs2.3.7.3/fs/open.c
inode = path->dentry->d_inode;
/* For directories it's -EISDIR, for other non-regulars - -EINVAL */
-@@ -530,6 +540,13 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
+@@ -546,6 +556,13 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
unsigned int lookup_flags = LOOKUP_FOLLOW;
retry:
error = user_path_at(dfd, filename, lookup_flags, &path);
@@ -5907,7 +5928,7 @@ diff -NurpP --minimal linux-3.18.5/fs/open.c linux-3.18.5-vs2.3.7.3/fs/open.c
if (!error) {
error = chmod_common(&path, mode);
path_put(&path);
-@@ -563,13 +580,15 @@ static int chown_common(struct path *pat
+@@ -580,13 +597,15 @@ retry_deleg:
if (!uid_valid(uid))
return -EINVAL;
newattrs.ia_valid |= ATTR_UID;
@@ -5925,7 +5946,7 @@ diff -NurpP --minimal linux-3.18.5/fs/open.c linux-3.18.5-vs2.3.7.3/fs/open.c
}
if (!S_ISDIR(inode->i_mode))
newattrs.ia_valid |=
-@@ -608,6 +627,18 @@ retry:
+@@ -624,6 +643,18 @@ retry:
error = mnt_want_write(path.mnt);
if (error)
goto out_release;
@@ -5944,29 +5965,29 @@ diff -NurpP --minimal linux-3.18.5/fs/open.c linux-3.18.5-vs2.3.7.3/fs/open.c
error = chown_common(&path, user, group);
mnt_drop_write(path.mnt);
out_release:
-diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/proc/array.c
---- linux-3.18.5/fs/proc/array.c 2015-01-16 22:19:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/proc/array.c 2015-01-21 06:37:56.000000000 +0000
-@@ -82,6 +82,8 @@
- #include <linux/ptrace.h>
+diff -NurpP --minimal linux-4.1.12/fs/proc/array.c linux-4.1.12-vs2.3.8.3/fs/proc/array.c
+--- linux-4.1.12/fs/proc/array.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/proc/array.c 2015-07-06 20:43:43.000000000 +0000
+@@ -83,6 +83,8 @@
#include <linux/tracehook.h>
+ #include <linux/string_helpers.h>
#include <linux/user_namespace.h>
+#include <linux/vs_context.h>
+#include <linux/vs_network.h>
#include <asm/pgtable.h>
#include <asm/processor.h>
-@@ -164,6 +166,9 @@ static inline void task_state(struct seq
- rcu_read_lock();
+@@ -146,6 +148,9 @@ static inline void task_state(struct seq
ppid = pid_alive(p) ?
task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;
+
+ if (unlikely(vx_current_initpid(p->pid)))
+ ppid = 0;
+
- tpid = 0;
- if (pid_alive(p)) {
- struct task_struct *tracer = ptrace_parent(p);
-@@ -289,8 +294,8 @@ static inline void task_sig(struct seq_f
+ tracer = ptrace_parent(p);
+ if (tracer)
+ tpid = task_pid_nr_ns(tracer, ns);
+@@ -284,8 +289,8 @@ static inline void task_sig(struct seq_f
render_sigset_t(m, "SigCgt:\t", &caught);
}
@@ -5977,7 +5998,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/pro
{
unsigned __capi;
-@@ -315,10 +320,11 @@ static inline void task_cap(struct seq_f
+@@ -310,10 +315,11 @@ static inline void task_cap(struct seq_f
cap_bset = cred->cap_bset;
rcu_read_unlock();
@@ -5993,8 +6014,8 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/pro
}
static inline void task_seccomp(struct seq_file *m, struct task_struct *p)
-@@ -347,6 +353,43 @@ static void task_cpus_allowed(struct seq
- seq_putc(m, '\n');
+@@ -340,6 +346,43 @@ static void task_cpus_allowed(struct seq
+ cpumask_pr_args(&task->cpus_allowed));
}
+int proc_pid_nsproxy(struct seq_file *m, struct pid_namespace *ns,
@@ -6037,7 +6058,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/pro
int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
struct pid *pid, struct task_struct *task)
{
-@@ -364,6 +407,7 @@ int proc_pid_status(struct seq_file *m,
+@@ -357,6 +400,7 @@ int proc_pid_status(struct seq_file *m,
task_seccomp(m, task);
task_cpus_allowed(m, task);
cpuset_task_status_allowed(m, task);
@@ -6045,7 +6066,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/pro
task_context_switch_counts(m, task);
return 0;
}
-@@ -467,6 +511,17 @@ static int do_task_stat(struct seq_file
+@@ -460,6 +504,17 @@ static int do_task_stat(struct seq_file
/* convert nsec -> ticks */
start_time = nsec_to_clock_t(task->real_start_time);
@@ -6063,9 +6084,9 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/array.c linux-3.18.5-vs2.3.7.3/fs/pro
seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
seq_put_decimal_ll(m, ' ', ppid);
seq_put_decimal_ll(m, ' ', pgid);
-diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc/base.c
---- linux-3.18.5/fs/proc/base.c 2015-02-05 18:02:45.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/proc/base.c 2015-01-22 09:04:57.000000000 +0000
+diff -NurpP --minimal linux-4.1.12/fs/proc/base.c linux-4.1.12-vs2.3.8.3/fs/proc/base.c
+--- linux-4.1.12/fs/proc/base.c 2015-07-06 20:41:42.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/proc/base.c 2015-07-06 20:43:43.000000000 +0000
@@ -87,6 +87,8 @@
#include <linux/slab.h>
#include <linux/flex_array.h>
@@ -6075,7 +6096,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
#ifdef CONFIG_HARDWALL
#include <asm/hardwall.h>
#endif
-@@ -884,11 +886,15 @@ static ssize_t oom_adj_write(struct file
+@@ -893,11 +895,15 @@ static ssize_t oom_adj_write(struct file
oom_adj = (oom_adj * OOM_SCORE_ADJ_MAX) / -OOM_DISABLE;
if (oom_adj < task->signal->oom_score_adj &&
@@ -6092,7 +6113,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
/*
* /proc/pid/oom_adj is provided for legacy purposes, ask users to use
* /proc/pid/oom_score_adj instead.
-@@ -1476,6 +1482,8 @@ struct inode *proc_pid_make_inode(struct
+@@ -1485,6 +1491,8 @@ struct inode *proc_pid_make_inode(struct
inode->i_gid = cred->egid;
rcu_read_unlock();
}
@@ -6101,7 +6122,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
security_task_to_inode(task, inode);
out:
-@@ -1521,6 +1529,8 @@ int pid_getattr(struct vfsmount *mnt, st
+@@ -1530,6 +1538,8 @@ int pid_getattr(struct vfsmount *mnt, st
/* dentry stuff */
@@ -6110,7 +6131,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
/*
* Exceptional case: normally we are not allowed to unhash a busy
* directory. In this case, however, we can do it - no aliasing problems
-@@ -1549,6 +1559,19 @@ int pid_revalidate(struct dentry *dentry
+@@ -1558,6 +1568,19 @@ int pid_revalidate(struct dentry *dentry
task = get_proc_task(inode);
if (task) {
@@ -6130,7 +6151,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
task_dumpable(task)) {
rcu_read_lock();
-@@ -2085,6 +2108,13 @@ static struct dentry *proc_pident_lookup
+@@ -2095,6 +2118,13 @@ static struct dentry *proc_pident_lookup
if (!task)
goto out_no_task;
@@ -6144,7 +6165,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
/*
* Yes, it does not scale. And it should not. Don't add
* new entries into /proc/<tgid>/ without very good reasons.
-@@ -2534,6 +2564,11 @@ static int proc_pid_personality(struct s
+@@ -2546,6 +2576,11 @@ static int proc_pid_personality(struct s
static const struct file_operations proc_task_operations;
static const struct inode_operations proc_task_inode_operations;
@@ -6156,7 +6177,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
static const struct pid_entry tgid_base_stuff[] = {
DIR("task", S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations),
DIR("fd", S_IRUSR|S_IXUSR, proc_fd_inode_operations, proc_fd_operations),
-@@ -2600,6 +2635,8 @@ static const struct pid_entry tgid_base_
+@@ -2612,6 +2647,8 @@ static const struct pid_entry tgid_base_
#ifdef CONFIG_CGROUPS
ONE("cgroup", S_IRUGO, proc_cgroup_show),
#endif
@@ -6165,7 +6186,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
ONE("oom_score", S_IRUGO, proc_oom_score),
REG("oom_adj", S_IRUGO|S_IWUSR, proc_oom_adj_operations),
REG("oom_score_adj", S_IRUGO|S_IWUSR, proc_oom_score_adj_operations),
-@@ -2811,7 +2848,7 @@ retry:
+@@ -2826,7 +2863,7 @@ retry:
iter.task = NULL;
pid = find_ge_pid(iter.tgid, ns);
if (pid) {
@@ -6174,7 +6195,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
iter.task = pid_task(pid, PIDTYPE_PID);
/* What we to know is if the pid we have find is the
* pid of a thread_group_leader. Testing for task
-@@ -2869,8 +2906,10 @@ int proc_pid_readdir(struct file *file,
+@@ -2884,8 +2921,10 @@ int proc_pid_readdir(struct file *file,
if (!has_pid_permissions(ns, iter.task, 2))
continue;
@@ -6186,7 +6207,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
if (!proc_fill_cache(file, ctx, name, len,
proc_pid_instantiate, iter.task, NULL)) {
put_task_struct(iter.task);
-@@ -2967,6 +3006,7 @@ static const struct pid_entry tid_base_s
+@@ -2982,6 +3021,7 @@ static const struct pid_entry tid_base_s
REG("projid_map", S_IRUGO|S_IWUSR, proc_projid_map_operations),
REG("setgroups", S_IRUGO|S_IWUSR, proc_setgroups_operations),
#endif
@@ -6194,7 +6215,7 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
};
static int proc_tid_base_readdir(struct file *file, struct dir_context *ctx)
-@@ -3033,6 +3073,8 @@ static struct dentry *proc_task_lookup(s
+@@ -3048,6 +3088,8 @@ static struct dentry *proc_task_lookup(s
tid = name_to_int(&dentry->d_name);
if (tid == ~0U)
goto out;
@@ -6203,10 +6224,10 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/base.c linux-3.18.5-vs2.3.7.3/fs/proc
ns = dentry->d_sb->s_fs_info;
rcu_read_lock();
-diff -NurpP --minimal linux-3.18.5/fs/proc/generic.c linux-3.18.5-vs2.3.7.3/fs/proc/generic.c
---- linux-3.18.5/fs/proc/generic.c 2015-01-16 22:19:20.000000000 +0000
-+++ linux-3.18.5-vs2.3.7.3/fs/proc/generic.c 2015-01-22 08:31:12.000000000 +0000
-@@ -23,6 +23,7 @@
+diff -NurpP --minimal linux-4.1.12/fs/proc/generic.c linux-4.1.12-vs2.3.8.3/fs/proc/generic.c
+--- linux-4.1.12/fs/proc/generic.c 2015-10-29 09:20:35.000000000 +0000
++++ linux-4.1.12-vs2.3.8.3/fs/proc/generic.c 2015-07-24 14:11:50.000000000 +0000
+@@ -22,6 +22,7 @@
#include <linux/bitops.h>
#include <linux/spinlock.h>
#include <linux/completion.h>
@@ -6214,29 +6235,34 @@ diff -NurpP --minimal linux-3.18.5/fs/proc/generic.c linux-3.18.5-vs2.3.7.3/fs/p
#include <asm/uaccess.h>
#include "internal.h"
-@@ -186,6 +187,12 @@ struct dentry *proc_lookup_de(struct pro
- for (de = de->subdir; de ; de = de->next) {
- if (de->namelen != dentry->d_name.len)
- continue;
-+ if (!vx_hide_check(0, de->vx_flags)) {
-+ vxdprintk(VXD_CBIT(misc, 9),
-+ VS_Q("%*s") " hidden in proc_lookup_de()",
-+ de->namelen, de->name);
-+ continue;
+@@ -66,8 +67,16 @@ static struct proc_dir_entry *pde_subdir
+ node = node->rb_left;
+ else if (result > 0)
+ node = node->rb_right;
+- else
++ else {
++ if (!vx_hide_check(0, de->vx_flags)) {
++ vxdprintk(VXD_CBIT(misc, 9),
++ VS_Q("%*s")
++ " hidden in pde_subdir_find()",
++ de->namelen, de->name);
++ return 0;
<Skipped 5918 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/5eef560768b20094542fb6945eaf0c3d445f3050
More information about the pld-cvs-commit
mailing list