diff --git a/block/genhd.c b/block/genhd.c
index 8645cf3b0816e..4b48cbb6197b8 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -83,7 +83,7 @@ bool set_capacity_and_notify(struct gendisk *disk, sector_t size)
 	    (disk->flags & GENHD_FL_HIDDEN))
 		return false;
 
-	pr_info("%s: detected capacity change from %lld to %lld\n",
+	if (0) pr_info("%s: detected capacity change from %lld to %lld\n",
 		disk->disk_name, capacity, size);
 
 	/*
diff --git a/config-mpi b/config-mpi
new file mode 100644
index 0000000000000..b8cb9e5cdf448
--- /dev/null
+++ b/config-mpi
@@ -0,0 +1,824 @@
+CONFIG_LOCALVERSION=".mx64.428"
+CONFIG_KERNEL_LZ4=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_AUDIT=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BPF_SYSCALL=y
+# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_PSI=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_IKHEADERS=m
+CONFIG_LOG_BUF_SHIFT=19
+CONFIG_NUMA_BALANCING=y
+# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
+CONFIG_CGROUPS=y
+CONFIG_MEMCG=y
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_BPF=y
+CONFIG_CGROUP_DEBUG=y
+CONFIG_USER_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_KEXEC=y
+CONFIG_KEXEC_FILE=y
+CONFIG_SMP=y
+CONFIG_X86_X2APIC=y
+CONFIG_GART_IOMMU=y
+CONFIG_NR_CPUS=512
+CONFIG_X86_MCELOG_LEGACY=y
+CONFIG_MICROCODE_LATE_LOADING=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+CONFIG_NUMA=y
+CONFIG_EFI=y
+CONFIG_HZ_1000=y
+# CONFIG_RANDOMIZE_BASE is not set
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_COMPAT_VDSO=y
+# CONFIG_ACPI_AC is not set
+# CONFIG_ACPI_BATTERY is not set
+CONFIG_ACPI_DOCK=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
+CONFIG_IA32_EMULATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+CONFIG_KPROBES=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLK_CGROUP_IOCOST=y
+CONFIG_PARTITION_ADVANCED=y
+CONFIG_MAC_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+CONFIG_IOSCHED_BFQ=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_ZSWAP=y
+CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_ZONE_DEVICE=y
+CONFIG_NET=y
+CONFIG_PACKET=m
+CONFIG_PACKET_DIAG=m
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
+CONFIG_XFRM_USER=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_FIB_TRIE_STATS=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_NET_IPVTI=m
+CONFIG_NET_FOU_IP_TUNNELS=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_RAW_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_VENO=m
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_MD5SIG=y
+CONFIG_IPV6=m
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
+CONFIG_IPV6_VTI=m
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_GRE=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+CONFIG_NETFILTER=y
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
+CONFIG_NFT_NUMGEN=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_FLOW_OFFLOAD=m
+CONFIG_NFT_CONNLIMIT=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_TUNNEL=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB_INET=m
+CONFIG_NFT_SOCKET=m
+CONFIG_NFT_OSF=m
+CONFIG_NFT_TPROXY=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
+CONFIG_NF_FLOW_TABLE_INET=m
+CONFIG_NF_FLOW_TABLE=m
+CONFIG_NETFILTER_XT_SET=m
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMARK=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_NFCT=y
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_SRH=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_IP_DCCP=m
+CONFIG_RDS=m
+CONFIG_RDS_TCP=m
+CONFIG_TIPC=m
+CONFIG_L2TP=m
+CONFIG_L2TP_V3=y
+CONFIG_L2TP_IP=m
+CONFIG_L2TP_ETH=m
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
+CONFIG_NET_SCH_PIE=m
+CONFIG_NET_SCH_PLUG=m
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_DNS_RESOLVER=y
+CONFIG_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_NETLINK_DIAG=m
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_BT=m
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_ATH3K=m
+# CONFIG_WIRELESS is not set
+CONFIG_PCI=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCI_IOV=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_CONNECTOR=y
+CONFIG_SYSFB_SIMPLEFB=y
+CONFIG_GOOGLE_FIRMWARE=y
+CONFIG_GOOGLE_COREBOOT_TABLE=m
+CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+CONFIG_BLK_DEV_FD=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_DRBD=y
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_BLK_DEV_NVME=y
+CONFIG_ENCLOSURE_SERVICES=y
+# CONFIG_INTEL_MEI is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_CHR_DEV_SG=y
+CONFIG_SCSI_ENCLOSURE=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=y
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_ISCSI_TCP=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_HPSA=y
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=y
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_SCSI_AIC79XX=y
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=y
+CONFIG_MEGARAID_MAILBOX=y
+CONFIG_MEGARAID_LEGACY=y
+CONFIG_MEGARAID_SAS=y
+CONFIG_SCSI_MPT2SAS=y
+CONFIG_SCSI_SMARTPQI=m
+CONFIG_SCSI_BUSLOGIC=y
+CONFIG_SCSI_QLOGIC_1280=y
+CONFIG_SCSI_DH=y
+CONFIG_ATA=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_MOBILE_LPM_POLICY=0
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_NV=y
+CONFIG_SATA_PROMISE=y
+CONFIG_SATA_SIL=y
+CONFIG_SATA_SIS=y
+CONFIG_SATA_SVW=y
+CONFIG_SATA_VIA=y
+CONFIG_PATA_ATIIXP=y
+CONFIG_PATA_JMICRON=y
+CONFIG_PATA_MPIIX=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID456=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_UEVENT=y
+CONFIG_TARGET_CORE=m
+CONFIG_ISCSI_TARGET=m
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+CONFIG_FUSION_FC=y
+CONFIG_FUSION_SAS=y
+CONFIG_FUSION_CTL=y
+CONFIG_NETDEVICES=y
+CONFIG_BONDING=m
+CONFIG_DUMMY=y
+CONFIG_WIREGUARD=m
+CONFIG_MACVLAN=y
+CONFIG_MACVTAP=y
+CONFIG_IPVLAN=m
+CONFIG_IPVTAP=m
+CONFIG_VXLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_TUN=y
+CONFIG_VETH=y
+CONFIG_VIRTIO_NET=m
+CONFIG_NLMON=m
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_ACENIC=m
+CONFIG_ATL1=m
+CONFIG_BNX2=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_BNXT=m
+CONFIG_CAVIUM_PTP=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T3=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DL2K=m
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IGB=m
+CONFIG_IGBVF=m
+CONFIG_IXGBE=m
+CONFIG_I40E=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+CONFIG_S2IO=m
+CONFIG_FORCEDETH=m
+CONFIG_NETXEN_NIC=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_R8169=m
+CONFIG_SIS900=m
+CONFIG_SIS190=m
+CONFIG_VIA_RHINE=y
+CONFIG_VIA_VELOCITY=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_LAN78XX=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_DM9601=m
+# CONFIG_WLAN is not set
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_DEV_BUS=m
+CONFIG_PRINTER=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=y
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HPET=y
+CONFIG_TCG_TPM=m
+CONFIG_TCG_TIS=m
+CONFIG_TCG_TIS_I2C_CR50=m
+CONFIG_TCG_TIS_I2C_ATMEL=m
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
+CONFIG_TCG_NSC=m
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_INFINEON=m
+CONFIG_TCG_CRB=m
+CONFIG_TCG_VTPM_PROXY=m
+CONFIG_TCG_TIS_ST33ZP24_I2C=m
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=y
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_GPIOLIB=y
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_HP_WATCHDOG=m
+CONFIG_NV_TCO=m
+CONFIG_LPC_ICH=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_PWC=m
+CONFIG_USB_S2255=m
+CONFIG_VIDEO_USBTV=m
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_DRM=y
+CONFIG_DRM_AMDGPU=m
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_CIK=y
+CONFIG_HSA_AMD=y
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_VGEM=m
+CONFIG_DRM_UDL=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_BOCHS=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_SIMPLEDRM=y
+CONFIG_FB=y
+CONFIG_FB_EFI=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_SAHARA=m
+CONFIG_BACKLIGHT_ADP8860=m
+CONFIG_BACKLIGHT_ADP8870=m
+CONFIG_BACKLIGHT_LM3639=m
+CONFIG_BACKLIGHT_LV5207LP=m
+CONFIG_BACKLIGHT_BD6107=m
+CONFIG_BACKLIGHT_ARCXCNN=m
+CONFIG_SOUND=m
+CONFIG_SND=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_USB_AUDIO=m
+CONFIG_HIDRAW=y
+CONFIG_HID_GENERIC=m
+CONFIG_HID_A4TECH=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_ITE=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LED=m
+CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_REDRAGON=m
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_ORTEK=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_USB_HID=m
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_SL811_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_CHAOSKEY=m
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_INTF_PROC is not set
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
+CONFIG_VHOST_NET=m
+CONFIG_AMD_IOMMU=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set
+CONFIG_IRQ_REMAP=y
+CONFIG_LIBNVDIMM=m
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_REISERFS_FS=y
+CONFIG_REISERFS_PROC_INFO=y
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_XFS_FS=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_FS_DAX=y
+CONFIG_FANOTIFY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+CONFIG_QFMT_V2=m
+CONFIG_AUTOFS_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_VIRTIO_FS=m
+CONFIG_OVERLAY_FS=m
+CONFIG_FSCACHE_STATS=y
+CONFIG_CACHEFILES=m
+CONFIG_CACHEFILES_DEBUG=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_NTFS3_FS=m
+CONFIG_NTFS3_LZX_XPRESS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_CHILDREN=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_HUGETLBFS=y
+CONFIG_ECRYPT_FS=m
+CONFIG_ECRYPT_FS_MESSAGING=y
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_LZ4=y
+CONFIG_SQUASHFS_LZO=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_PSTORE=m
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=m
+CONFIG_NFS_SWAP=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_SUNRPC_DEBUG=y
+CONFIG_CEPH_FS=m
+CONFIG_CEPH_FSCACHE=y
+CONFIG_CEPH_FS_POSIX_ACL=y
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,bpf"
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_PKCS7_MESSAGE_PARSER=m
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_EARLY_PRINTK_DBGP=y
+CONFIG_MEMTEST=y
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 6005280f5f38f..ecda73eaf619e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1624,7 +1624,6 @@ struct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev,
 	amdgpu_vm_bo_base_init(&bo_va->base, vm, bo);
 
 	bo_va->ref_count = 1;
-	bo_va->last_pt_update = dma_fence_get_stub();
 	INIT_LIST_HEAD(&bo_va->valids);
 	INIT_LIST_HEAD(&bo_va->invalids);
 
@@ -2459,8 +2458,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,
 		vm->update_funcs = &amdgpu_vm_cpu_funcs;
 	else
 		vm->update_funcs = &amdgpu_vm_sdma_funcs;
-
-	vm->last_update = dma_fence_get_stub();
+	vm->last_update = NULL;
 	vm->last_unlocked = dma_fence_get_stub();
 	vm->last_tlb_flush = dma_fence_get_stub();
 	vm->generation = amdgpu_vm_generation(adev, NULL);
@@ -2566,7 +2564,7 @@ int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)
 	}
 
 	dma_fence_put(vm->last_update);
-	vm->last_update = dma_fence_get_stub();
+	vm->last_update = NULL;
 	vm->is_compute_context = true;
 
 unreserve_bo:
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index ed5046593fdab..2ea8525c2a3ff 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -130,6 +130,9 @@ enum mpt3sas_perf_mode {
 	MPT_PERF_MODE_LATENCY	= 2,
 };
 
+
+static DEFINE_RATELIMIT_STATE(dma_map_failed_warning_rlstate, (60 * 60 * HZ), 4);   /* max 4 per hour */
+
 static int
 _base_wait_on_iocstate(struct MPT3SAS_ADAPTER *ioc,
 		u32 ioc_state, int timeout);
@@ -2610,8 +2613,13 @@ _base_check_pcie_native_sgl(struct MPT3SAS_ADAPTER *ioc,
 
 	/* Get the SG list pointer and info. */
 	sges_left = scsi_dma_map(scmd);
-	if (sges_left < 0)
+	if (sges_left < 0) {
+		if (__ratelimit(&dma_map_failed_warning_rlstate))
+			sdev_printk(KERN_ERR, scmd->device,
+				"scsi_dma_map failed in _base_check_pcie_native_sgl: request for %d bytes!\n",
+				scsi_bufflen(scmd));
 		return 1;
+	}
 
 	/* Check if we need to build a native SG list. */
 	if (!base_is_prp_possible(ioc, pcie_device,
@@ -2734,8 +2742,13 @@ _base_build_sg_scmd(struct MPT3SAS_ADAPTER *ioc,
 
 	sg_scmd = scsi_sglist(scmd);
 	sges_left = _base_scsi_dma_map(scmd);
-	if (sges_left < 0)
-		return -ENOMEM;
+	if (sges_left < 0) {
+	    if (__ratelimit(&dma_map_failed_warning_rlstate))
+			sdev_printk(KERN_ERR, scmd->device,
+				"scsi_dma_map failed in _base_build_sg_scmd: request for %d bytes!\n",
+				scsi_bufflen(scmd));
+	    return -ENOMEM;
+	}
 
 	sg_local = &mpi_request->SGL;
 	sges_in_segment = ioc->max_sges_in_main_message;
@@ -2879,7 +2892,13 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc,
 	sg_scmd = scsi_sglist(scmd);
 	sges_left = _base_scsi_dma_map(scmd);
 	if (sges_left < 0)
+	if (sges_left < 0) {
+		if (__ratelimit(&dma_map_failed_warning_rlstate))
+			sdev_printk(KERN_ERR, scmd->device,
+				"scsi_dma_map failed in _base_build_sg_scmd_ieee: request for %d bytes!\n",
+				scsi_bufflen(scmd));
 		return -ENOMEM;
+	}
 
 	sg_local = &mpi_request->SGL;
 	sges_in_segment = (ioc->request_sz -
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 67a5b937f5a92..bf8856a79774f 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2712,9 +2712,10 @@ static int ext4_do_writepages(struct mpage_da_data *mpd)
 				EXT4_HT_WRITE_PAGE, needed_blocks, rsv_blocks);
 		if (IS_ERR(handle)) {
 			ret = PTR_ERR(handle);
-			ext4_msg(inode->i_sb, KERN_CRIT, "%s: jbd2_start: "
-			       "%ld pages, ino %lu; err %d", __func__,
-				wbc->nr_to_write, inode->i_ino, ret);
+			if (!unlikely(ext4_forced_shutdown(inode->i_sb)))
+				ext4_msg(inode->i_sb, KERN_CRIT, "%s: jbd2_start: "
+						"%ld pages, ino %lu; err %d", __func__,
+						wbc->nr_to_write, inode->i_ino, ret);
 			/* Release allocated io_end */
 			ext4_put_io_end(mpd->io_submit.io_end);
 			mpd->io_submit.io_end = NULL;
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index 1c77400bd88e1..95b7bfe253789 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -814,7 +814,7 @@ int ext4_force_shutdown(struct super_block *sb, u32 flags)
 	if (ext4_forced_shutdown(sb))
 		return 0;
 
-	ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags);
+	while (0) ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags);
 	trace_ext4_shutdown(sb, flags);
 
 	switch (flags) {
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 940ac1a49b729..6784e9aa69d3a 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5704,7 +5704,7 @@ static int ext4_fill_super(struct super_block *sb, struct fs_context *fc)
 	} else
 		descr = "out journal";
 
-	if (___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount"))
+	if (0 && ___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount"))
 		ext4_msg(sb, KERN_INFO, "mounted filesystem %pU %s with%s. "
 			 "Quota mode: %s.", &sb->s_uuid,
 			 sb_rdonly(sb) ? "ro" : "r/w", descr,
diff --git a/fs/namespace.c b/fs/namespace.c
index d26f5e6d2ca35..53b292179abe5 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -3002,7 +3002,7 @@ static int do_reconfigure_mnt(struct path *path, unsigned int mnt_flags)
 	unlock_mount_hash();
 	up_read(&sb->s_umount);
 
-	mnt_warn_timestamp_expiry(path, &mnt->mnt);
+	if (0) mnt_warn_timestamp_expiry(path, &mnt->mnt);
 
 	return ret;
 }
@@ -3054,7 +3054,7 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags,
 		up_write(&sb->s_umount);
 	}
 
-	mnt_warn_timestamp_expiry(path, &mnt->mnt);
+	if (0) mnt_warn_timestamp_expiry(path, &mnt->mnt);
 
 	put_fs_context(fc);
 	return err;
@@ -3439,7 +3439,7 @@ static int do_new_mount_fc(struct fs_context *fc, struct path *mountpoint,
 	if (IS_ERR(mnt))
 		return PTR_ERR(mnt);
 
-	mnt_warn_timestamp_expiry(mountpoint, mnt);
+	if (0) mnt_warn_timestamp_expiry(mountpoint, mnt);
 
 	mp = lock_mount(mountpoint);
 	if (IS_ERR(mp)) {
diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c
index 7e000d782e283..495c8346ebe67 100644
--- a/fs/nfs/fs_context.c
+++ b/fs/nfs/fs_context.c
@@ -250,6 +250,7 @@ enum {
 	Opt_sec_lkey,
 	Opt_sec_lkeyi,
 	Opt_sec_lkeyp,
+	Opt_sec_mariux,
 	Opt_sec_none,
 	Opt_sec_spkm,
 	Opt_sec_spkmi,
@@ -265,6 +266,7 @@ static const struct constant_table nfs_secflavor_tokens[] = {
 	{ "lkey",	Opt_sec_lkey },
 	{ "lkeyi",	Opt_sec_lkeyi },
 	{ "lkeyp",	Opt_sec_lkeyp },
+	{ "mariux",	Opt_sec_mariux },
 	{ "none",	Opt_sec_none },
 	{ "null",	Opt_sec_none },
 	{ "spkm3",	Opt_sec_spkm },
@@ -451,6 +453,9 @@ static int nfs_parse_security_flavors(struct fs_context *fc,
 		case Opt_sec_spkmp:
 			pseudoflavor = RPC_AUTH_GSS_SPKMP;
 			break;
+		case Opt_sec_mariux:
+			pseudoflavor = RPC_AUTH_MARIUX;
+			break;
 		default:
 			return nfs_invalf(fc, "NFS: sec=%s option not recognized", p);
 		}
diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
index 83378f69b35ea..baf0d423b6a49 100644
--- a/fs/nfs/nfs4client.c
+++ b/fs/nfs/nfs4client.c
@@ -1094,8 +1094,9 @@ void nfs4_server_set_init_caps(struct nfs_server *server)
 	 * Don't use NFS uid/gid mapping if we're using AUTH_SYS or lower
 	 * authentication.
 	 */
-	if (nfs4_disable_idmapping &&
-			server->client->cl_auth->au_flavor == RPC_AUTH_UNIX)
+	if (nfs4_disable_idmapping && (
+			server->client->cl_auth->au_flavor == RPC_AUTH_UNIX
+			|| server->client->cl_auth->au_flavor == RPC_AUTH_MARIUX ))
 		server->caps |= NFS_CAP_UIDGID_NOMAP;
 }
 
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c
index 9a98595bb1604..0da08d26b4189 100644
--- a/fs/nfs/nfs4namespace.c
+++ b/fs/nfs/nfs4namespace.c
@@ -215,6 +215,7 @@ static struct rpc_clnt *nfs_find_best_sec(struct rpc_clnt *clnt,
 		switch (secinfo->flavor) {
 		case RPC_AUTH_NULL:
 		case RPC_AUTH_UNIX:
+		case RPC_AUTH_MARIUX:
 		case RPC_AUTH_GSS:
 			pflavor = rpcauth_get_pseudoflavor(secinfo->flavor,
 							&secinfo->flavor_info);
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 405f17e6e0b45..2939b73762a20 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -10397,6 +10397,7 @@ nfs41_find_root_sec(struct nfs_server *server, struct nfs_fh *fhandle,
 		switch (secinfo->flavor) {
 		case RPC_AUTH_NULL:
 		case RPC_AUTH_UNIX:
+		case RPC_AUTH_MARIUX:
 		case RPC_AUTH_GSS:
 			flavor = rpcauth_get_pseudoflavor(secinfo->flavor,
 					&secinfo->flavor_info);
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index ae5c5e39afa03..815633ffb02bb 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -323,6 +323,7 @@ static const char *nfs_pseudoflavour_to_name(rpc_authflavor_t flavour)
 		/* update NFS_AUTH_INFO_MAX_FLAVORS when this list changes! */
 		{ RPC_AUTH_NULL, "null" },
 		{ RPC_AUTH_UNIX, "sys" },
+		{ RPC_AUTH_MARIUX, "mariux" },
 		{ RPC_AUTH_GSS_KRB5, "krb5" },
 		{ RPC_AUTH_GSS_KRB5I, "krb5i" },
 		{ RPC_AUTH_GSS_KRB5P, "krb5p" },
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 6d0455973d641..9d6784928b9af 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -1146,7 +1146,8 @@ __be32 check_nfsd_access(struct svc_export *exp, struct svc_rqst *rqstp)
 	/* defaults in absence of sec= options: */
 	if (exp->ex_nflavors == 0) {
 		if (rqstp->rq_cred.cr_flavor == RPC_AUTH_NULL ||
-		    rqstp->rq_cred.cr_flavor == RPC_AUTH_UNIX)
+		    rqstp->rq_cred.cr_flavor == RPC_AUTH_UNIX ||
+		    rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX)
 			return nfs_ok;
 	}
 
diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c
index 8cca1329f3485..3d3a3883974b7 100644
--- a/fs/nfsd/nfs4idmap.c
+++ b/fs/nfsd/nfs4idmap.c
@@ -625,7 +625,7 @@ numeric_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namel
 static __be32
 do_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namelen, u32 *id)
 {
-	if (nfs4_disable_idmapping && rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS)
+	if (nfs4_disable_idmapping && (rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS || rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX))
 		if (numeric_name_to_id(rqstp, type, name, namelen, id))
 			return 0;
 		/*
@@ -638,7 +638,7 @@ do_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namelen, u
 static __be32 encode_name_from_id(struct xdr_stream *xdr,
 				  struct svc_rqst *rqstp, int type, u32 id)
 {
-	if (nfs4_disable_idmapping && rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS)
+	if (nfs4_disable_idmapping && (rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS || rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX))
 		return encode_ascii_id(xdr, id);
 	return idmap_id_to_name(xdr, rqstp, type, id);
 }
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 7a1fdafa42ea1..4ddb96be2b6f1 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -534,6 +534,8 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 	bool reclaim = false;
 
+	trace_nfsd4_open(rqstp);
+
 	dprintk("NFSD: nfsd4_open filename %.*s op_openowner %p\n",
 		(int)open->op_fnamelen, open->op_fname,
 		open->op_openowner);
@@ -668,6 +670,8 @@ static __be32
 nfsd4_getfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	    union nfsd4_op_u *u)
 {
+	trace_nfsd4_getfh(rqstp);
+
 	u->getfh = &cstate->current_fh;
 	return nfs_ok;
 }
@@ -679,6 +683,8 @@ nfsd4_putfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_putfh *putfh = &u->putfh;
 	__be32 ret;
 
+	trace_nfsd4_putfh(rqstp);
+
 	fh_put(&cstate->current_fh);
 	cstate->current_fh.fh_handle.fh_size = putfh->pf_fhlen;
 	memcpy(&cstate->current_fh.fh_handle.fh_raw, putfh->pf_fhval,
@@ -697,6 +703,8 @@ static __be32
 nfsd4_putrootfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 		union nfsd4_op_u *u)
 {
+	trace_nfsd4_putrootfh(rqstp);
+
 	fh_put(&cstate->current_fh);
 
 	return exp_pseudoroot(rqstp, &cstate->current_fh);
@@ -706,6 +714,8 @@ static __be32
 nfsd4_restorefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 		union nfsd4_op_u *u)
 {
+	trace_nfsd4_restorefh(rqstp);
+
 	if (!cstate->save_fh.fh_dentry)
 		return nfserr_restorefh;
 
@@ -721,6 +731,8 @@ static __be32
 nfsd4_savefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	     union nfsd4_op_u *u)
 {
+	trace_nfsd4_savefh(rqstp);
+
 	fh_dup2(&cstate->save_fh, &cstate->current_fh);
 	if (HAS_CSTATE_FLAG(cstate, CURRENT_STATE_ID_FLAG)) {
 		memcpy(&cstate->save_stateid, &cstate->current_stateid, sizeof(stateid_t));
@@ -739,6 +751,8 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_access *access = &u->access;
 	u32 access_full;
 
+	trace_nfsd4_access(rqstp);
+
 	access_full = NFS3_ACCESS_FULL;
 	if (cstate->minorversion >= 2)
 		access_full |= NFS4_ACCESS_XALIST | NFS4_ACCESS_XAREAD |
@@ -760,6 +774,8 @@ nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd_file *nf;
 	__be32 status;
 
+	trace_nfsd4_commit(rqstp);
+
 	status = nfsd_file_acquire(rqstp, &cstate->current_fh, NFSD_MAY_WRITE |
 				   NFSD_MAY_NOT_BREAK_LEASE, &nf);
 	if (status != nfs_ok)
@@ -785,6 +801,8 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 status;
 	dev_t rdev;
 
+	trace_nfsd4_create(rqstp);
+
 	fh_init(&resfh, NFS4_FHSIZE);
 
 	status = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_NOP);
@@ -874,6 +892,8 @@ nfsd4_getattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_getattr *getattr = &u->getattr;
 	__be32 status;
 
+	trace_nfsd4_getattr(rqstp);
+
 	status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP);
 	if (status)
 		return status;
@@ -896,6 +916,8 @@ nfsd4_link(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_link *link = &u->link;
 	__be32 status;
 
+	trace_nfsd4_link(rqstp);
+
 	status = nfsd_link(rqstp, &cstate->current_fh,
 			   link->li_name, link->li_namelen, &cstate->save_fh);
 	if (!status)
@@ -924,6 +946,8 @@ static __be32
 nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	      union nfsd4_op_u *u)
 {
+	trace_nfsd4_lookupp(rqstp);
+
 	return nfsd4_do_lookupp(rqstp, &cstate->current_fh);
 }
 
@@ -931,6 +955,8 @@ static __be32
 nfsd4_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	     union nfsd4_op_u *u)
 {
+	trace_nfsd4_lookup(rqstp);
+
 	return nfsd_lookup(rqstp, &cstate->current_fh,
 			   u->lookup.lo_name, u->lookup.lo_len,
 			   &cstate->current_fh);
@@ -943,6 +969,8 @@ nfsd4_read(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_read *read = &u->read;
 	__be32 status;
 
+	trace_nfsd4_read(rqstp,cstate,read);
+
 	read->rd_nf = NULL;
 
 	trace_nfsd_read_start(rqstp, &cstate->current_fh,
@@ -996,6 +1024,8 @@ nfsd4_readdir(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	u64 cookie = readdir->rd_cookie;
 	static const nfs4_verifier zeroverf;
 
+	trace_nfsd4_readdir(rqstp);
+
 	/* no need to check permission - this will be done in nfsd_readdir() */
 
 	if (readdir->rd_bmval[1] & NFSD_WRITEONLY_ATTRS_WORD1)
@@ -1018,6 +1048,8 @@ static __be32
 nfsd4_readlink(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	       union nfsd4_op_u *u)
 {
+	trace_nfsd4_readlink(rqstp);
+
 	u->readlink.rl_rqstp = rqstp;
 	u->readlink.rl_fhp = &cstate->current_fh;
 	return nfs_ok;
@@ -1030,6 +1062,8 @@ nfsd4_remove(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_remove *remove = &u->remove;
 	__be32 status;
 
+	trace_nfsd4_remove(rqstp);
+
 	if (opens_in_grace(SVC_NET(rqstp)))
 		return nfserr_grace;
 	status = nfsd_unlink(rqstp, &cstate->current_fh, 0,
@@ -1046,6 +1080,8 @@ nfsd4_rename(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_rename *rename = &u->rename;
 	__be32 status;
 
+	trace_nfsd4_rename(rqstp);
+
 	if (opens_in_grace(SVC_NET(rqstp)))
 		return nfserr_grace;
 	status = nfsd_rename(rqstp, &cstate->save_fh, rename->rn_sname,
@@ -1067,6 +1103,8 @@ nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct dentry *dentry;
 	__be32 err;
 
+	trace_nfsd4_secinfo(rqstp);
+
 	err = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_EXEC);
 	if (err)
 		return err;
@@ -1093,6 +1131,8 @@ nfsd4_secinfo_no_name(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstat
 {
 	__be32 err;
 
+	trace_nfsd4_secinfo_no_name(rqstp);
+
 	switch (u->secinfo_no_name.sin_style) {
 	case NFS4_SECINFO_STYLE4_CURRENT_FH:
 		break;
@@ -1138,6 +1178,8 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	bool save_no_wcc;
 	int err;
 
+	trace_nfsd4_setattr(rqstp);
+
 	if (setattr->sa_iattr.ia_valid & ATTR_SIZE) {
 		status = nfs4_preprocess_stateid_op(rqstp, cstate,
 				&cstate->current_fh, &setattr->sa_stateid,
@@ -1186,6 +1228,8 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	unsigned long cnt;
 	int nvecs;
 
+	trace_nfsd4_write(rqstp,cstate,write);
+
 	if (write->wr_offset > (u64)OFFSET_MAX ||
 	    write->wr_offset + write->wr_buflen > (u64)OFFSET_MAX)
 		return nfserr_fbig;
@@ -1261,6 +1305,8 @@ nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd_file *src, *dst;
 	__be32 status;
 
+	trace_nfsd4_clone(rqstp);
+
 	status = nfsd4_verify_copy(rqstp, cstate, &clone->cl_src_stateid, &src,
 				   &clone->cl_dst_stateid, &dst);
 	if (status)
@@ -1806,6 +1852,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd42_write_res *result;
 	__be32 status;
 
+	trace_nfsd4_copy(rqstp);
+
 	/*
 	 * Currently, async COPY is not reliable. Force all COPY
 	 * requests to be synchronous to avoid client application
@@ -1928,6 +1976,8 @@ nfsd4_offload_cancel(struct svc_rqst *rqstp,
 	struct nfsd4_copy *copy;
 	struct nfs4_client *clp = cstate->clp;
 
+	trace_nfsd4_offload_cancel(rqstp);
+
 	copy = find_async_copy(clp, &os->stateid);
 	if (!copy) {
 		struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
@@ -1950,6 +2000,8 @@ nfsd4_copy_notify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfs4_cpntf_state *cps;
 	struct nfs4_client *clp = cstate->clp;
 
+	trace_nfsd4_copy_notify(rqstp);
+
 	status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
 					&cn->cpn_src_stateid, RD_STATE, NULL,
 					&stid);
@@ -2016,6 +2068,8 @@ nfsd4_offload_status(struct svc_rqst *rqstp,
 	struct nfsd4_copy *copy;
 	struct nfs4_client *clp = cstate->clp;
 
+	trace_nfsd4_offload_status(rqstp);
+
 	os->completed = false;
 	spin_lock(&clp->async_lock);
 	copy = find_async_copy_locked(clp, &os->stateid);
@@ -2036,6 +2090,8 @@ static __be32
 nfsd4_allocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	       union nfsd4_op_u *u)
 {
+	trace_nfsd4_allocate(rqstp);
+
 	return nfsd4_fallocate(rqstp, cstate, &u->allocate, 0);
 }
 
@@ -2043,6 +2099,8 @@ static __be32
 nfsd4_deallocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 		 union nfsd4_op_u *u)
 {
+	trace_nfsd4_deallocate(rqstp);
+
 	return nfsd4_fallocate(rqstp, cstate, &u->deallocate,
 			       FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE);
 }
@@ -2056,6 +2114,8 @@ nfsd4_seek(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 status;
 	struct nfsd_file *nf;
 
+	trace_nfsd4_seek(rqstp);
+
 	status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
 					    &seek->seek_stateid,
 					    RD_STATE, &nf, NULL);
@@ -2158,6 +2218,8 @@ nfsd4_nverify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 {
 	__be32 status;
 
+	trace_nfsd4_nverify(rqstp);
+
 	status = _nfsd4_verify(rqstp, cstate, &u->verify);
 	return status == nfserr_not_same ? nfs_ok : status;
 }
@@ -2168,6 +2230,8 @@ nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 {
 	__be32 status;
 
+	trace_nfsd4_verify(rqstp);
+
 	status = _nfsd4_verify(rqstp, cstate, &u->nverify);
 	return status == nfserr_same ? nfs_ok : status;
 }
@@ -2224,6 +2288,8 @@ nfsd4_getdeviceinfo(struct svc_rqst *rqstp,
 	struct svc_export *exp;
 	__be32 nfserr;
 
+	trace_nfsd4_getdeviceinfo(rqstp);
+
 	dprintk("%s: layout_type %u dev_id [0x%llx:0x%x] maxcnt %u\n",
 	       __func__,
 	       gdp->gd_layout_type,
@@ -2279,6 +2345,8 @@ nfsd4_layoutget(struct svc_rqst *rqstp,
 	__be32 nfserr;
 	int accmode = NFSD_MAY_READ_IF_EXEC | NFSD_MAY_OWNER_OVERRIDE;
 
+	trace_nfsd4_layoutget(rqstp);
+
 	switch (lgp->lg_seg.iomode) {
 	case IOMODE_READ:
 		accmode |= NFSD_MAY_READ;
@@ -2367,6 +2435,8 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp,
 	struct nfs4_layout_stateid *ls;
 	__be32 nfserr;
 
+	trace_nfsd4_layoutcommit(rqstp);
+
 	nfserr = fh_verify(rqstp, current_fh, 0,
 			   NFSD_MAY_WRITE | NFSD_MAY_OWNER_OVERRIDE);
 	if (nfserr)
@@ -2427,6 +2497,8 @@ nfsd4_layoutreturn(struct svc_rqst *rqstp,
 	struct svc_fh *current_fh = &cstate->current_fh;
 	__be32 nfserr;
 
+	trace_nfsd4_layoutreturn(rqstp);
+
 	nfserr = fh_verify(rqstp, current_fh, 0, NFSD_MAY_NOP);
 	if (nfserr)
 		goto out;
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 57f8818aa47c5..9d3e78cd1b005 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -3527,6 +3527,8 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	bool	update = exid->flags & EXCHGID4_FLAG_UPD_CONFIRMED_REC_A;
 	struct nfsd_net		*nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_exchange_id(rqstp);
+
 	rpc_ntop(sa, addr_str, sizeof(addr_str));
 	dprintk("%s rqstp=%p exid=%p clname.len=%u clname.data=%p "
 		"ip_addr=%s flags %x, spa_how %u\n",
@@ -3834,6 +3836,8 @@ nfsd4_create_session(struct svc_rqst *rqstp,
 	__be32 status = 0;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_create_session(rqstp);
+
 	if (cr_ses->flags & ~SESSION4_FLAG_MASK_A)
 		return nfserr_inval;
 	status = nfsd4_check_cb_sec(&cr_ses->cb_sec);
@@ -3986,6 +3990,8 @@ __be32 nfsd4_backchannel_ctl(struct svc_rqst *rqstp,
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 	__be32 status;
 
+	trace_nfsd4_backchannel_ctl(rqstp);
+
 	status = nfsd4_check_cb_sec(&bc->bc_cb_sec);
 	if (status)
 		return status;
@@ -4051,6 +4057,8 @@ __be32 nfsd4_bind_conn_to_session(struct svc_rqst *rqstp,
 	struct net *net = SVC_NET(rqstp);
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 
+	trace_nfsd4_bind_conn_to_session(rqstp);
+
 	if (!nfsd4_last_compound_op(rqstp))
 		return nfserr_not_only_op;
 	spin_lock(&nn->client_lock);
@@ -4105,6 +4113,8 @@ nfsd4_destroy_session(struct svc_rqst *r, struct nfsd4_compound_state *cstate,
 	struct net *net = SVC_NET(r);
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 
+	trace_nfsd4_destroy_session(r);
+
 	status = nfserr_not_only_op;
 	if (nfsd4_compound_in_session(cstate, sessionid)) {
 		if (!nfsd4_last_compound_op(r))
@@ -4228,6 +4238,8 @@ nfsd4_sequence(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct net *net = SVC_NET(rqstp);
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 
+	trace_nfsd4_sequence(rqstp);
+
 	if (resp->opcnt != 1)
 		return nfserr_sequence_pos;
 
@@ -4367,6 +4379,8 @@ nfsd4_destroy_clientid(struct svc_rqst *rqstp,
 	__be32 status = 0;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_destroy_clientid(rqstp);
+
 	spin_lock(&nn->client_lock);
 	unconf = find_unconfirmed_client(&dc->clientid, true, nn);
 	conf = find_confirmed_client(&dc->clientid, true, nn);
@@ -4409,6 +4423,8 @@ nfsd4_reclaim_complete(struct svc_rqst *rqstp,
 	struct nfs4_client *clp = cstate->clp;
 	__be32 status = 0;
 
+	trace_nfsd4_reclaim_complete(rqstp);
+
 	if (rc->rca_one_fs) {
 		if (!cstate->current_fh.fh_dentry)
 			return nfserr_nofilehandle;
@@ -4454,6 +4470,8 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 			status;
 	struct nfsd_net		*nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_setclientid(rqstp);
+
 	new = create_client(clname, rqstp, &clverifier);
 	if (new == NULL)
 		return nfserr_jukebox;
@@ -4513,6 +4531,8 @@ nfsd4_setclientid_confirm(struct svc_rqst *rqstp,
 	__be32 status;
 	struct nfsd_net	*nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_setclientid_confirm(rqstp);
+
 	if (STALE_CLIENTID(clid, nn))
 		return nfserr_stale_clientid;
 
@@ -6244,6 +6264,8 @@ nfsd4_renew(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 status;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_renew(rqstp);
+
 	trace_nfsd_clid_renew(clid);
 	status = set_client(clid, cstate, nn);
 	if (status)
@@ -7140,6 +7162,8 @@ nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd4_test_stateid_id *stateid;
 	struct nfs4_client *cl = cstate->clp;
 
+	trace_nfsd4_test_stateid(rqstp);
+
 	list_for_each_entry(stateid, &test_stateid->ts_stateid_list, ts_id_list)
 		stateid->ts_id_status =
 			nfsd4_validate_stateid(cl, &stateid->ts_id_stateid);
@@ -7187,6 +7211,8 @@ nfsd4_free_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfs4_client *cl = cstate->clp;
 	__be32 ret = nfserr_bad_stateid;
 
+	trace_nfsd4_free_stateid(rqstp);
+
 	spin_lock(&cl->cl_lock);
 	s = find_stateid_locked(cl, stateid);
 	if (!s || s->sc_status & SC_STATUS_CLOSED)
@@ -7338,6 +7364,8 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfs4_ol_stateid *stp;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_open_confirm(rqstp);
+
 	dprintk("NFSD: nfsd4_open_confirm on file %pd\n",
 			cstate->current_fh.fh_dentry);
 
@@ -7404,6 +7432,8 @@ nfsd4_open_downgrade(struct svc_rqst *rqstp,
 	struct nfs4_ol_stateid *stp;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_open_downgrade(rqstp);
+
 	dprintk("NFSD: nfsd4_open_downgrade on file %pd\n", 
 			cstate->current_fh.fh_dentry);
 
@@ -7478,6 +7508,8 @@ nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 	bool need_move_to_close_list;
 
+	trace_nfsd4_close(rqstp);
+
 	dprintk("NFSD: nfsd4_close on file %pd\n",
 			cstate->current_fh.fh_dentry);
 
@@ -7532,6 +7564,8 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 status;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_delegreturn(rqstp);
+
 	if ((status = fh_verify(rqstp, &cstate->current_fh, S_IFREG, 0)))
 		return status;
 
@@ -7954,6 +7988,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	struct net *net = SVC_NET(rqstp);
 	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
 
+	trace_nfsd4_lock(rqstp);
+
 	dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n",
 		(long long) lock->lk_offset,
 		(long long) lock->lk_length);
@@ -8216,6 +8252,8 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	__be32 status;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_lockt(rqstp);
+
 	if (locks_in_grace(SVC_NET(rqstp)))
 		return nfserr_grace;
 
@@ -8300,6 +8338,8 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 	int err;
 	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
 
+	trace_nfsd4_locku(rqstp);
+
 	dprintk("NFSD: nfsd4_locku: start=%Ld length=%Ld\n",
 		(long long) locku->lu_offset,
 		(long long) locku->lu_length);
@@ -8427,6 +8467,8 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp,
 	LIST_HEAD(reaplist);
 	__be32 status;
 
+	trace_nfsd4_release_lockowner(rqstp);
+
 	dprintk("nfsd4_release_lockowner clientid: (%08x/%08x):\n",
 		clid->cl_boot, clid->cl_id);
 
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index b8470d4cbe99e..ddd64298497a9 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -2301,6 +2301,174 @@ TRACE_EVENT(nfsd_copy_async_done,
 	)
 );
 
+TRACE_EVENT(nfsd4_read,
+	TP_PROTO(
+		struct svc_rqst *rqstp,
+		struct nfsd4_compound_state *cstate,
+		struct nfsd4_read *read
+	),
+	TP_ARGS(rqstp,cstate,read),
+	TP_STRUCT__entry(
+		__field         (      uint32_t , ipv4addr )
+		__field         (         uid_t , uid      )
+		__field         (         dev_t , dev      )
+		__field         ( unsigned long , ino      )
+		__field         (          u64  , offset   )
+		__field         (          u32  , length   )
+		__dynamic_array (          char , name      , strlen(cstate->current_fh.fh_dentry->d_name.name)+1 )
+	),
+	TP_fast_assign(
+		struct dentry *dentry = cstate->current_fh.fh_dentry;
+		__entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0;
+		__entry->uid=rqstp->rq_cred.cr_uid.val;
+		if (dentry->d_inode) {
+			__entry->ino = dentry->d_inode->i_ino;
+			__entry->dev = dentry->d_inode->i_sb->s_dev;
+		} else {
+			__entry->ino=0;
+			__entry->dev=0;
+		}
+		strcpy(__get_str(name),dentry->d_name.name);
+		__entry->offset=read->rd_offset;
+		__entry->length=read->rd_length;
+	),
+	TP_printk("ip=0x%08x uid=%u dev=%u inode=%lu offset=%llu length=%u name=\"%s\"",
+		__entry->ipv4addr,__entry->uid,
+		__entry->dev,__entry->ino,
+		__entry->offset,__entry->length,
+		__get_str(name)
+	)
+)
+
+TRACE_EVENT(nfsd4_write,
+	TP_PROTO(
+		struct svc_rqst *rqstp,
+		struct nfsd4_compound_state *cstate,
+		struct nfsd4_write *write
+	),
+	TP_ARGS(rqstp,cstate,write),
+	TP_STRUCT__entry(
+		__field         (      uint32_t , ipv4addr )
+		__field         (         uid_t , uid      )
+		__field         (         dev_t , dev      )
+		__field         ( unsigned long , ino      )
+		__field         (          u64  , offset   )
+		__field         (          u32  , length   )
+		__dynamic_array (          char , name      , strlen(cstate->current_fh.fh_dentry->d_name.name)+1 )
+	),
+	TP_fast_assign(
+		struct dentry *dentry = cstate->current_fh.fh_dentry;
+		__entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0;
+		__entry->uid=rqstp->rq_cred.cr_uid.val;
+		if (dentry->d_inode) {
+			__entry->ino = dentry->d_inode->i_ino;
+			__entry->dev = dentry->d_inode->i_sb->s_dev;
+		} else {
+			__entry->ino=0;
+			__entry->dev=0;
+		}
+		strcpy(__get_str(name),dentry->d_name.name);
+		__entry->offset=write->wr_offset;
+		__entry->length=write->wr_buflen;
+	),
+	TP_printk("ip=0x%08x uid=%u dev=%u inode=%lu offset=%llu length=%u name=\"%s\"",
+		__entry->ipv4addr,__entry->uid,
+		__entry->dev,__entry->ino,
+		__entry->offset,__entry->length,
+		__get_str(name)
+	)
+)
+
+DECLARE_EVENT_CLASS(nfsd4_op_class,
+	TP_PROTO(struct svc_rqst *rqstp),
+	TP_ARGS(rqstp),
+	TP_STRUCT__entry(
+		__field( uint32_t, ipv4addr )
+		__field(    uid_t, uid )
+	),
+	TP_fast_assign(
+		__entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0;
+		__entry->uid=rqstp->rq_cred.cr_uid.val;
+	),
+	TP_printk("ip=0x%08x uid=%u",
+		__entry->ipv4addr,__entry->uid
+	)
+)
+
+/* operations defined in nfs4proc.c : nfsd4_operation nfsd4_ops[] */
+
+DEFINE_EVENT(nfsd4_op_class,nfsd4_access,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_close,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_commit,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_create,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_delegreturn,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_getattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_getfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_link,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_lock,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_lockt,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_locku,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_lookup,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_lookupp,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_nverify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_open,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_open_confirm,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_open_downgrade,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_putfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+/* PUTPUBFH omitted - currently uses nfsd4_putrootfh op funtion */
+DEFINE_EVENT(nfsd4_op_class,nfsd4_putrootfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+/* READ omitted - defined above */
+DEFINE_EVENT(nfsd4_op_class,nfsd4_readdir,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_readlink,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_remove,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_rename,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_renew,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_restorefh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_savefh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_secinfo,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_setattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_setclientid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_setclientid_confirm,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_verify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+/* WRITE omitted - defined above */
+DEFINE_EVENT(nfsd4_op_class,nfsd4_release_lockowner,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+
+/* NFSv4.1 operations */
+
+DEFINE_EVENT(nfsd4_op_class,nfsd4_exchange_id,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_backchannel_ctl,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_bind_conn_to_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_create_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_destroy_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_sequence,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_destroy_clientid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_reclaim_complete,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_secinfo_no_name,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_test_stateid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_free_stateid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+#ifdef CONFIG_NFSD_PNFS
+DEFINE_EVENT(nfsd4_op_class,nfsd4_getdeviceinfo,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutget,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutcommit,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutreturn,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+#endif /* CONFIG_NFSD_PNFS */
+
+/* NFSv4.2 operations */
+
+DEFINE_EVENT(nfsd4_op_class,nfsd4_allocate,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_deallocate,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_clone,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_copy,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+/* READ_PLUS omitted - currently uses nfsd4_read op funtion */
+DEFINE_EVENT(nfsd4_op_class,nfsd4_seek,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_offload_status,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_offload_cancel,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_copy_notify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_getxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_setxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_listxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+DEFINE_EVENT(nfsd4_op_class,nfsd4_removexattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp));
+
 #endif /* _NFSD_TRACE_H */
 
 #undef TRACE_INCLUDE_PATH
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 12d8e47bc5a38..f73da09c37788 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -758,7 +758,7 @@ struct nfs_renameres {
 };
 
 /* parsed sec= options */
-#define NFS_AUTH_INFO_MAX_FLAVORS 12 /* see fs/nfs/super.c */
+#define NFS_AUTH_INFO_MAX_FLAVORS 13 /* see fs/nfs/super.c */
 struct nfs_auth_info {
 	unsigned int            flavor_len;
 	rpc_authflavor_t        flavors[NFS_AUTH_INFO_MAX_FLAVORS];
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
index 61e58327b1aa5..67506661596e9 100644
--- a/include/linux/sunrpc/auth.h
+++ b/include/linux/sunrpc/auth.h
@@ -144,6 +144,7 @@ struct rpc_credops {
 };
 
 extern const struct rpc_authops	authunix_ops;
+extern const struct rpc_authops	authmariux_ops;
 extern const struct rpc_authops	authnull_ops;
 extern const struct rpc_authops	authtls_ops;
 
diff --git a/include/linux/sunrpc/msg_prot.h b/include/linux/sunrpc/msg_prot.h
index c4b0eb2b2f040..0fc7b05eb9f68 100644
--- a/include/linux/sunrpc/msg_prot.h
+++ b/include/linux/sunrpc/msg_prot.h
@@ -21,7 +21,8 @@ enum rpc_auth_flavors {
 	RPC_AUTH_KRB   = 4,
 	RPC_AUTH_GSS   = 6,
 	RPC_AUTH_TLS   = 7,
-	RPC_AUTH_MAXFLAVOR = 8,
+	RPC_AUTH_MARIUX = 8,
+	RPC_AUTH_MAXFLAVOR = 9,
 	/* pseudoflavors: */
 	RPC_AUTH_GSS_KRB5  = 390003,
 	RPC_AUTH_GSS_KRB5I = 390004,
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h
index 5f775e104f9ab..e56062f79d690 100644
--- a/include/linux/sunrpc/xdr.h
+++ b/include/linux/sunrpc/xdr.h
@@ -96,6 +96,7 @@ xdr_buf_init(struct xdr_buf *buf, void *start, size_t len)
 #define	rpc_auth_short	cpu_to_be32(RPC_AUTH_SHORT)
 #define	rpc_auth_gss	cpu_to_be32(RPC_AUTH_GSS)
 #define	rpc_auth_tls	cpu_to_be32(RPC_AUTH_TLS)
+#define	rpc_auth_mariux	cpu_to_be32(RPC_AUTH_MARIUX)
 
 #define	rpc_call	cpu_to_be32(RPC_CALL)
 #define	rpc_reply	cpu_to_be32(RPC_REPLY)
diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
index 04534ea537c8f..a4b6dbf9aba82 100644
--- a/net/sunrpc/auth.c
+++ b/net/sunrpc/auth.c
@@ -29,10 +29,12 @@ struct rpc_cred_cache {
 
 static unsigned int auth_hashbits = RPC_CREDCACHE_DEFAULT_HASHBITS;
 
-static const struct rpc_authops __rcu *auth_flavors[RPC_AUTH_MAXFLAVOR] = {
+static const struct rpc_authops __rcu *auth_flavors[RPC_AUTH_MAXFLAVOR+1] = {
 	[RPC_AUTH_NULL] = (const struct rpc_authops __force __rcu *)&authnull_ops,
 	[RPC_AUTH_UNIX] = (const struct rpc_authops __force __rcu *)&authunix_ops,
 	[RPC_AUTH_TLS]  = (const struct rpc_authops __force __rcu *)&authtls_ops,
+	[RPC_AUTH_MARIUX] = (const struct rpc_authops __force __rcu *)&authmariux_ops,
+	NULL,			/* others can be loadable modules */
 };
 
 static LIST_HEAD(cred_unused);
diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
index 1e091d3fa6070..d9bb504a120fc 100644
--- a/net/sunrpc/auth_unix.c
+++ b/net/sunrpc/auth_unix.c
@@ -22,7 +22,9 @@
 #endif
 
 static struct rpc_auth		unix_auth;
+static struct rpc_auth		mariux_auth;
 static const struct rpc_credops	unix_credops;
+static const struct rpc_credops	mariux_credops;
 static mempool_t		*unix_pool;
 
 static struct rpc_auth *
@@ -37,6 +39,18 @@ unx_destroy(struct rpc_auth *auth)
 {
 }
 
+static struct rpc_auth *
+mariux_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
+{
+	refcount_inc(&mariux_auth.au_count);
+	return &mariux_auth;
+}
+
+static void
+mariux_destroy(struct rpc_auth *auth)
+{
+}
+
 /*
  * Lookup AUTH_UNIX creds for current process
  */
@@ -58,6 +72,16 @@ static struct rpc_cred *unx_lookup_cred(struct rpc_auth *auth,
 	return ret;
 }
 
+static struct rpc_cred *
+mariux_lookup_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
+{
+	struct rpc_cred *ret = mempool_alloc(unix_pool, GFP_NOFS);
+
+	rpcauth_init_cred(ret, acred, auth, &mariux_credops);
+	ret->cr_flags = 1UL << RPCAUTH_CRED_UPTODATE;
+	return ret;
+}
+
 static void
 unx_free_cred_callback(struct rcu_head *head)
 {
@@ -159,6 +183,58 @@ unx_marshal(struct rpc_task *task, struct xdr_stream *xdr)
 	return -EMSGSIZE;
 }
 
+static int
+mariux_marshal(struct rpc_task *task, struct xdr_stream *xdr)
+{
+	struct rpc_clnt	*clnt = task->tk_client;
+	struct rpc_cred	*cred = task->tk_rqstp->rq_cred;
+	__be32		*p, *cred_len, *gidarr_len;
+	int		i;
+	struct group_info *gi = cred->cr_cred->group_info;
+	struct user_namespace *userns = clnt->cl_cred ?
+		clnt->cl_cred->user_ns : &init_user_ns;
+
+	/* Credential */
+
+	p = xdr_reserve_space(xdr, 3 * sizeof(*p));
+	if (!p)
+		goto marshal_failed;
+	*p++ = rpc_auth_mariux;
+	cred_len = p++;
+	*p++ = cpu_to_be32(0x00010012); 	/* version 1.18 */
+	if (xdr_stream_encode_opaque(xdr, clnt->cl_nodename,
+				     clnt->cl_nodelen) < 0)
+		goto marshal_failed;
+	p = xdr_reserve_space(xdr, 3 * sizeof(*p));
+	if (!p)
+		goto marshal_failed;
+	*p++ = cpu_to_be32(from_kuid_munged(userns, cred->cr_cred->fsuid));
+	*p++ = cpu_to_be32(from_kgid_munged(userns, cred->cr_cred->fsgid));
+
+	gidarr_len = p++;
+	if (gi)
+		for (i = 0; i < UNX_NGROUPS && i < gi->ngroups; i++)
+			*p++ = cpu_to_be32(from_kgid_munged(userns, gi->gid[i]));
+	*gidarr_len = cpu_to_be32(p - gidarr_len - 1);
+	*cred_len = cpu_to_be32((p - cred_len - 1) << 2);
+	p = xdr_reserve_space(xdr, (p - gidarr_len - 1) << 2);
+	if (!p)
+		goto marshal_failed;
+
+	/* Verifier */
+
+	p = xdr_reserve_space(xdr, 2 * sizeof(*p));
+	if (!p)
+		goto marshal_failed;
+	*p++ = rpc_auth_null;
+	*p   = xdr_zero;
+
+	return 0;
+
+marshal_failed:
+	return -EMSGSIZE;
+}
+
 /*
  * Refresh credentials. This is a no-op for AUTH_UNIX
  */
@@ -183,6 +259,7 @@ unx_validate(struct rpc_task *task, struct xdr_stream *xdr)
 	case rpc_auth_null:
 	case rpc_auth_unix:
 	case rpc_auth_short:
+	case rpc_auth_mariux:
 		break;
 	default:
 		return -EIO;
@@ -241,3 +318,34 @@ const struct rpc_credops unix_credops = {
 	.crvalidate	= unx_validate,
 	.crunwrap_resp	= rpcauth_unwrap_resp_decode,
 };
+
+const struct rpc_authops authmariux_ops = {
+	.owner		= THIS_MODULE,
+	.au_flavor	= RPC_AUTH_MARIUX,
+	.au_name	= "MARIUX",
+	.create		= mariux_create,
+	.destroy	= mariux_destroy,
+	.lookup_cred	= mariux_lookup_cred,
+};
+
+static
+struct rpc_auth		mariux_auth = {
+	.au_cslack	= UNX_CALLSLACK,
+	.au_rslack	= NUL_REPLYSLACK,
+	.au_verfsize	= NUL_REPLYSLACK,
+	.au_ops		= &authmariux_ops,
+	.au_flavor	= RPC_AUTH_MARIUX,
+	.au_count	= REFCOUNT_INIT(1),
+};
+
+static
+const struct rpc_credops mariux_credops = {
+	.cr_name	= "AUTH_MARIUX",
+	.crdestroy	= unx_destroy_cred,
+	.crmatch	= unx_match,
+	.crmarshal	= mariux_marshal,
+	.crwrap_req	= rpcauth_wrap_req_encode,
+	.crrefresh	= unx_refresh,
+	.crvalidate	= unx_validate,
+	.crunwrap_resp	= rpcauth_unwrap_resp_decode,
+};
diff --git a/net/sunrpc/svcauth.c b/net/sunrpc/svcauth.c
index 55b4d28741880..1aafeffa2cc77 100644
--- a/net/sunrpc/svcauth.c
+++ b/net/sunrpc/svcauth.c
@@ -33,11 +33,13 @@
 extern struct auth_ops svcauth_null;
 extern struct auth_ops svcauth_unix;
 extern struct auth_ops svcauth_tls;
+extern struct auth_ops svcauth_mariux;
 
 static struct auth_ops __rcu *authtab[RPC_AUTH_MAXFLAVOR] = {
 	[RPC_AUTH_NULL] = (struct auth_ops __force __rcu *)&svcauth_null,
 	[RPC_AUTH_UNIX] = (struct auth_ops __force __rcu *)&svcauth_unix,
 	[RPC_AUTH_TLS]  = (struct auth_ops __force __rcu *)&svcauth_tls,
+	[RPC_AUTH_MARIUX] = (struct auth_ops __force __rcu *)&svcauth_mariux,
 };
 
 static struct auth_ops *
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 8ca98b146ec8c..b0ddbf694e0e7 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -991,6 +991,14 @@ svcauth_unix_accept(struct svc_rqst *rqstp)
 	return SVC_DENIED;
 }
 
+static enum svc_auth_status
+svcauth_mariux_accept(struct svc_rqst *rqstp)
+{
+	enum svc_auth_status ret = svcauth_unix_accept(rqstp);
+	rqstp->rq_cred.cr_flavor = RPC_AUTH_MARIUX;
+	return ret;
+}
+
 static int
 svcauth_unix_release(struct svc_rqst *rqstp)
 {
@@ -1006,7 +1014,6 @@ svcauth_unix_release(struct svc_rqst *rqstp)
 	return 0;
 }
 
-
 struct auth_ops svcauth_unix = {
 	.name		= "unix",
 	.owner		= THIS_MODULE,
@@ -1017,6 +1024,16 @@ struct auth_ops svcauth_unix = {
 	.set_client	= svcauth_unix_set_client,
 };
 
+struct auth_ops svcauth_mariux = {
+	.name		= "mariux",
+	.owner		= THIS_MODULE,
+	.flavour	= RPC_AUTH_MARIUX,
+	.accept 	= svcauth_mariux_accept,
+	.release	= svcauth_unix_release,
+	.domain_release	= svcauth_unix_domain_release,
+	.set_client	= svcauth_unix_set_client,
+};
+
 static const struct cache_detail ip_map_cache_template = {
 	.owner		= THIS_MODULE,
 	.hash_size	= IP_HASHMAX,