Revision 8b2180b3bf0338625cab07da6543acb436df9c40 authored by Dave Chinner on 16 August 2016, 22:31:33 UTC, committed by Dave Chinner on 16 August 2016, 22:31:33 UTC
When we do DAX IO, we try to invalidate the entire page cache held
on the file. This is incorrect as it will trash the entire mapping
tree that now tracks dirty state in exceptional entries in the radix
tree slots.

What we are trying to do is remove cached pages (e.g from reads
into holes) that sit in the radix tree over the range we are about
to write to. Hence we should just limit the invalidation to the
range we are about to overwrite.

Reported-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>

1 parent 0af32fb
Raw File
ver_linux
#!/bin/sh
# Before running this script please ensure that your PATH is
# typical as you use for compilation/installation. I use
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.
#
echo 'If some fields are empty or look unusual you may have an old version.'
echo 'Compare to the current minimal requirements in Documentation/Changes.'
echo ' '

uname -a
echo ' '

gcc -dumpversion 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("GNU C\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

make --version 2>&1 |
awk '/GNU Make/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("GNU Make\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

ld -v 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Binutils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

mount --version 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	$0 = substr($0,RSTART,RLENGTH)
	printf("Util-linux\t\t%s\nMount\t\t\t%s\n",$0,$0)
}'

depmod -V  2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Module-init-tools\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

tune2fs 2>&1 |
awk '/^tune2fs/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("E2fsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

fsck.jfs -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Jfsutils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

reiserfsck -V 2>&1 |
awk '/^reiserfsck/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Reiserfsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
'NR==1{print "reiser4progs          ", $2}'

xfs_db -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Xfsprogs\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

pccardctl -V 2>&1 |
awk '/pcmciautils/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Pcmciautils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

cardmgr -V 2>&1| grep version | awk \
'NR==1{print "pcmcia-cs             ", $3}'

quota -V 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Quota-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

pppd --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("PPP\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils          ", $NF}'

showmount --version 2>&1 | grep nfs-utils | awk \
'NR==1{print "nfs-utils             ", $NF}'

test -r /proc/self/maps &&
sed '
	/.*libc-\(.*\)\.so$/!d
	s//Linux C Library\t\t\1/
	q
' /proc/self/maps

ldd --version 2>&1 |
awk '/^ldd/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Dynamic linker (ldd)\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

libcpp=`ldconfig -p 2>/dev/null |
	awk '/(libg|stdc)[+]+\.so/ {
	print $NF
	exit
	}
'`
test -r "$libcpp" &&
ls -l $libcpp |
sed '
	s!.*so\.!!
	s!^!Linux C++ Library\t!
'
ps --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Procps\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

ifconfig --version 2>&1 |
awk '/tools/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Net-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

loadkeys -V 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	$0 = substr($0,RSTART,RLENGTH)
	printf("Kbd\t\t\t%s\nConsole-tools\t\t%s\n",$0,$0)
}'

oprofiled --version 2>&1 | awk \
'(NR==1 && ($2 == "oprofile")) {print "oprofile              ", $3}'

expr --v 2>&1 |
awk '/^expr/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Sh-utils\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

udevadm --version 2>&1 |
awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Udev\t\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

iwconfig --version 2>&1 |
awk '/version/{
	match($0, /[0-9]+([.]?[0-9]+)+/)
	printf("Wireless-tools\t\t%s\n",
	substr($0,RSTART,RLENGTH))
}'

test -e /proc/modules &&
sort /proc/modules |
sed '
	s/ .*//
	H
${
	g
	s/^\n/Modules Loaded\t\t/
	y/\n/ /
	q
}
	d
'
back to top