Revision 4759d386d55fef452d692bf101167914437e848e authored by Linus Torvalds on 01 January 2017, 20:27:05 UTC, committed by Linus Torvalds on 01 January 2017, 20:27:05 UTC
Pull DAX updates from Dan Williams: "The completion of Jan's DAX work for 4.10. As I mentioned in the libnvdimm-for-4.10 pull request, these are some final fixes for the DAX dirty-cacheline-tracking invalidation work that was merged through the -mm, ext4, and xfs trees in -rc1. These patches were prepared prior to the merge window, but we waited for 4.10-rc1 to have a stable merge base after all the prerequisites were merged. Quoting Jan on the overall changes in these patches: "So I'd like all these 6 patches to go for rc2. The first three patches fix invalidation of exceptional DAX entries (a bug which is there for a long time) - without these patches data loss can occur on power failure even though user called fsync(2). The other three patches change locking of DAX faults so that ->iomap_begin() is called in a more relaxed locking context and we are safe to start a transaction there for ext4" These have received a build success notification from the kbuild robot, and pass the latest libnvdimm unit tests. There have not been any -next releases since -rc1, so they have not appeared there" * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: ext4: Simplify DAX fault path dax: Call ->iomap_begin without entry lock during dax fault dax: Finish fault completely when loading holes dax: Avoid page invalidation races and unnecessary radix tree traversals mm: Invalidate DAX radix tree entries only if appropriate ext2: Return BH_New buffers for zeroed blocks
gcc-plugin.sh
#!/bin/sh
srctree=$(dirname "$0")
SHOW_ERROR=
if [ "$1" = "--show-error" ] ; then
SHOW_ERROR=1
shift || true
fi
gccplugins_dir=$($3 -print-file-name=plugin)
plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF
#include "gcc-common.h"
#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)
#warning $2 CXX
#else
#warning $1 CC
#endif
EOF
)
if [ $? -ne 0 ]
then
if [ -n "$SHOW_ERROR" ] ; then
echo "${plugincc}" >&2
fi
exit 1
fi
case "$plugincc" in
*"$1 CC"*)
echo "$1"
exit 0
;;
*"$2 CXX"*)
# the c++ compiler needs another test, see below
;;
*)
exit 1
;;
esac
# we need a c++ compiler that supports the designated initializer GNU extension
plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF
#include "gcc-common.h"
class test {
public:
int test;
} test = {
.test = 1
};
EOF
)
if [ $? -eq 0 ]
then
echo "$2"
exit 0
fi
if [ -n "$SHOW_ERROR" ] ; then
echo "${plugincc}" >&2
fi
exit 1
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...