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
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
'
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...