diff --git a/NEWS b/NEWS
index 6b852cab46fe8a11b5108781f7fe102d991e0fa4..d78be4349fa4742d55645a9e877f8e0bc3723f9c 100644
--- a/NEWS
+++ b/NEWS
@@ -186,6 +186,10 @@ documents those changes that are of interest to users and admins.
 
 * Changes in SLURM 2.3.5
 ========================
+ -- Improve support for overlapping advanced reservations. Patch from
+    Bill Brophy, Bull.
+ -- Modify Makefiles for support of Debian hardening flags. Patch from
+    Simon Ruderich.
 
 * Changes in SLURM 2.3.4
 ========================
diff --git a/contribs/pam/Makefile.am b/contribs/pam/Makefile.am
index d74b092e8db112a4c4625672b0016a6d4cfd4a2a..25c3a2f1ff61a2419f3d8a0008db58a3f92500ce 100644
--- a/contribs/pam/Makefile.am
+++ b/contribs/pam/Makefile.am
@@ -4,7 +4,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CPPFLAGS = -fPIC
+AM_CPPFLAGS = -fPIC
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 PLUGIN_FLAGS = -module --export-dynamic -avoid-version
 
diff --git a/contribs/pam/Makefile.in b/contribs/pam/Makefile.in
index 6b6378ac22b13013c3312bce14d68a1d6fceaab7..112089959dff3b08d14150221a7b2cb10ac5092e 100644
--- a/contribs/pam/Makefile.in
+++ b/contribs/pam/Makefile.in
@@ -162,7 +162,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -fPIC
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -340,6 +340,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CPPFLAGS = -fPIC
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 PLUGIN_FLAGS = -module --export-dynamic -avoid-version
 @HAVE_PAM_FALSE@pam_lib = 
diff --git a/contribs/perlapi/libslurm/Makefile.am b/contribs/perlapi/libslurm/Makefile.am
index b0e7e9e6a46c8bdd08b4766a6d3850a2970794b5..5cad2a733abd6364ba1310bb27737be530da1c24 100644
--- a/contribs/perlapi/libslurm/Makefile.am
+++ b/contribs/perlapi/libslurm/Makefile.am
@@ -84,16 +84,16 @@ if HAVE_AIX
 	if [ ! -f Makefile ]; then \
 		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT= ; \
 	fi && \
-	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 	cd ..;
 else
 	@cd $(perl_dir) && \
 	if [ ! -f Makefile ]; then \
 		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT= ; \
 	fi && \
-	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 	cd ..;
 endif
 
diff --git a/contribs/perlapi/libslurm/Makefile.in b/contribs/perlapi/libslurm/Makefile.in
index 1f2c4bc632421eaf8ee4133838c3cff3ef55f106..7dfa142f5c214ec11cd6d14728ef216b4dc54599 100644
--- a/contribs/perlapi/libslurm/Makefile.in
+++ b/contribs/perlapi/libslurm/Makefile.in
@@ -557,15 +557,15 @@ all-local: $(perl_dir)/Makefile #libslurm
 @HAVE_AIX_TRUE@	if [ ! -f Makefile ]; then \
 @HAVE_AIX_TRUE@		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT= ; \
 @HAVE_AIX_TRUE@	fi && \
-@HAVE_AIX_TRUE@	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-@HAVE_AIX_TRUE@	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+@HAVE_AIX_TRUE@	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+@HAVE_AIX_TRUE@	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 @HAVE_AIX_TRUE@	cd ..;
 @HAVE_AIX_FALSE@	@cd $(perl_dir) && \
 @HAVE_AIX_FALSE@	if [ ! -f Makefile ]; then \
 @HAVE_AIX_FALSE@		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT= ; \
 @HAVE_AIX_FALSE@	fi && \
-@HAVE_AIX_FALSE@	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-@HAVE_AIX_FALSE@	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+@HAVE_AIX_FALSE@	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+@HAVE_AIX_FALSE@	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 @HAVE_AIX_FALSE@	cd ..;
 
 install-exec-local:
diff --git a/contribs/perlapi/libslurmdb/Makefile.am b/contribs/perlapi/libslurmdb/Makefile.am
index 978d4b542d8e5c196a2a84919f6efe3e531b9d23..7119a15832b5363af5e81e5bf055000c7decc89f 100644
--- a/contribs/perlapi/libslurmdb/Makefile.am
+++ b/contribs/perlapi/libslurmdb/Makefile.am
@@ -34,16 +34,16 @@ if HAVE_AIX
 	if [ ! -f Makefile ]; then \
 		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT=; \
 	fi && \
-	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 	cd ..;
 else
 	@cd $(perl_dir) && \
 	if [ ! -f Makefile ]; then \
 		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT=; \
 	fi && \
-	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 	cd ..;
 endif
 
diff --git a/contribs/perlapi/libslurmdb/Makefile.in b/contribs/perlapi/libslurmdb/Makefile.in
index 4a9ee5ee48f2beae732453eca529009bc10ecc52..78d09d453370336e76df335c2568f4bffe2139ae 100644
--- a/contribs/perlapi/libslurmdb/Makefile.in
+++ b/contribs/perlapi/libslurmdb/Makefile.in
@@ -507,15 +507,15 @@ all-local: $(perl_dir)/Makefile #libslurmdb
 @HAVE_AIX_TRUE@	if [ ! -f Makefile ]; then \
 @HAVE_AIX_TRUE@		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT=; \
 @HAVE_AIX_TRUE@	fi && \
-@HAVE_AIX_TRUE@	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-@HAVE_AIX_TRUE@	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+@HAVE_AIX_TRUE@	($(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+@HAVE_AIX_TRUE@	 $(MAKE) CC="$(CC)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 @HAVE_AIX_TRUE@	cd ..;
 @HAVE_AIX_FALSE@	@cd $(perl_dir) && \
 @HAVE_AIX_FALSE@	if [ ! -f Makefile ]; then \
 @HAVE_AIX_FALSE@		$(perlpath) Makefile.PL $(PERL_MM_PARAMS) prefix=${prefix} INSTALL_BASE= PERL_MM_OPT=; \
 @HAVE_AIX_FALSE@	fi && \
-@HAVE_AIX_FALSE@	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS) || \
-@HAVE_AIX_FALSE@	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS)" $(PERL_EXTRA_OPTS)) && \
+@HAVE_AIX_FALSE@	($(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS) || \
+@HAVE_AIX_FALSE@	 $(MAKE) CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="$(PERL_CFLAGS) -g -static $(CFLAGS) $(CPPFLAGS)" $(PERL_EXTRA_OPTS)) && \
 @HAVE_AIX_FALSE@	cd ..;
 
 install-exec-local:
diff --git a/contribs/phpext/Makefile.am b/contribs/phpext/Makefile.am
index 7f93dedacd6d2e076f0e10911766f771caee3840..0454804b0c3a3e0691f1f92bfdbfa287bf7be876 100644
--- a/contribs/phpext/Makefile.am
+++ b/contribs/phpext/Makefile.am
@@ -3,9 +3,9 @@ php_dir=slurm_php
 phpize=/usr/bin/phpize
 
 if HAVE_AIX
-config_line=CC="$(CC)" CCFLAGS="-g -static $(CFLAGS)" ./configure
+config_line=CC="$(CC)" CCFLAGS="-g -static $(CFLAGS) $(CPPFLAGS)" ./configure
 else
-config_line=CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" ./configure
+config_line=CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" ./configure
 endif
 
 all-local:
diff --git a/contribs/phpext/Makefile.in b/contribs/phpext/Makefile.in
index 719449cacf1cbc6d19e6fea45e182d227e8825d7..4d75ad2f3024195b4d22275af5c816fc4d8abcd1 100644
--- a/contribs/phpext/Makefile.in
+++ b/contribs/phpext/Makefile.in
@@ -288,8 +288,8 @@ top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 php_dir = slurm_php
 phpize = /usr/bin/phpize
-@HAVE_AIX_FALSE@config_line = CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" ./configure
-@HAVE_AIX_TRUE@config_line = CC="$(CC)" CCFLAGS="-g -static $(CFLAGS)" ./configure
+@HAVE_AIX_FALSE@config_line = CC="$(CC)" LD="$(CC) $(CFLAGS) $(LDFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" ./configure
+@HAVE_AIX_TRUE@config_line = CC="$(CC)" CCFLAGS="-g -static $(CFLAGS) $(CPPFLAGS)" ./configure
 all: all-am
 
 .SUFFIXES:
diff --git a/doc/html/team.shtml b/doc/html/team.shtml
index d051d4f549182d7008d0acb4d6e5000c133fb654..44bfa0dd0cf06e17ca1fbfa18ef718890041e40c 100644
--- a/doc/html/team.shtml
+++ b/doc/html/team.shtml
@@ -86,6 +86,7 @@ organizations. The current SLURM development staff includes: </p>
 <li>Andy Roosen (University of Deleware)</li>
 <li>Miguel Ros (Barcelona Supercomputer Center, Spain)</li>
 <li>Beat Rubischon (DALCO AG, Switzerland)</li>
+<li>Simon Ruderich</li>
 <li>Dan Rusak (Bull)</li>
 <li>Eygene Ryabinkin (Kurchatov Institute, Russia)</li>
 <li>Federico Sacerdoti (D.E. Shaw)</li>
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 8ad3b62953b8dd45a01dec09b25f5ee9b2305131..8df61a75d14cf4417dd6d9966b430a4b1e37acef 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -8,7 +8,7 @@
 # only be 1 address per symbol.  If you link to the libcommon.la in
 # a plugin you will get 2 addresses for one symbol which could lead to problems.
 
-CPPFLAGS = -DGRES_CONFIG_FILE=\"$(sysconfdir)/gres.conf\"
+AM_CPPFLAGS = -DGRES_CONFIG_FILE=\"$(sysconfdir)/gres.conf\"
 AUTOMAKE_OPTIONS = foreign
 
 if HAVE_UNSETENV
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
index 36288e1772d2be0f4f1b266b48995460141911da..f5c186616a793837b2a276f2f9cb0f2b7e2f6b7e 100644
--- a/src/common/Makefile.in
+++ b/src/common/Makefile.in
@@ -230,7 +230,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DGRES_CONFIG_FILE=\"$(sysconfdir)/gres.conf\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -408,6 +408,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AM_CPPFLAGS = -DGRES_CONFIG_FILE=\"$(sysconfdir)/gres.conf\"
 AUTOMAKE_OPTIONS = foreign
 @HAVE_UNSETENV_FALSE@build_unsetenv_src = unsetenv.c unsetenv.h
 @HAVE_UNSETENV_TRUE@build_unsetenv_src = 
diff --git a/src/common/xcgroup.c b/src/common/xcgroup.c
index 568696fc5553fabc934e6a4e1dbe5e3f33b59361..2a03ec0dce038b98d6666ba4deec0b893a7e9962 100644
--- a/src/common/xcgroup.c
+++ b/src/common/xcgroup.c
@@ -748,6 +748,52 @@ int xcgroup_get_uint64_param(xcgroup_t* cg, char* param, uint64_t* value)
 	return fstatus;
 }
 
+static int cgroup_move_process_by_task (xcgroup_t *cg, pid_t pid)
+{
+	DIR *dir;
+	struct dirent *entry;
+	char path [PATH_MAX];
+
+	if (snprintf (path, PATH_MAX, "/proc/%d/task", (int) pid) >= PATH_MAX) {
+		error ("xcgroup: move_process_by_task: path overflow!");
+		return XCGROUP_ERROR;
+	}
+
+	dir = opendir (path);
+	if (!dir) {
+		error ("xcgroup: opendir(%s): %m", path);
+		return XCGROUP_ERROR;
+	}
+
+	while ((entry = readdir (dir))) {
+		if (entry->d_name[0] != '.')
+			xcgroup_set_param (cg, "tasks", entry->d_name);
+	}
+	closedir (dir);
+	return XCGROUP_SUCCESS;
+}
+
+static int cgroup_procs_writable (xcgroup_t *cg)
+{
+	struct stat st;
+	char *path = NULL;
+	int rc = 0;
+
+	xstrfmtcat (path, "%s/%s", cg->path, "cgroup.procs");
+	if ((stat (path, &st) >= 0) && (st.st_mode & S_IWUSR))
+		rc = 1;
+	xfree (path);
+	return (rc);
+}
+
+int xcgroup_move_process (xcgroup_t *cg, pid_t pid)
+{
+	if (!cgroup_procs_writable (cg))
+		return cgroup_move_process_by_task (cg, pid);
+
+	return xcgroup_set_uint32_param (cg, "cgroup.procs", pid);
+}
+
 
 /*
  * -----------------------------------------------------------------------------
diff --git a/src/common/xcgroup.h b/src/common/xcgroup.h
index 7b83d278889eb0a80395227bad85c8571feacae1..4f03b5cef7af4503195bab87ff43359d1533e7ce 100644
--- a/src/common/xcgroup.h
+++ b/src/common/xcgroup.h
@@ -314,4 +314,18 @@ int xcgroup_set_uint64_param(xcgroup_t* cg,char* parameter,uint64_t value);
  */
 int xcgroup_get_uint64_param(xcgroup_t* cg,char* param,uint64_t* value);
 
+
+/*
+ * Move process 'pid' (and all its threads) to cgroup 'cg'
+ *
+ *  This call ensures that pid and all its threads are moved to the
+ *   cgroup cg. If the cgroup.procs file is not writable, then threads
+ *   must be moved individually and this call can be racy.
+ *
+ *  returns:
+ *   - XCGROUP_ERROR
+ *   - XCGROUP_SUCCESS
+ */
+int xcgroup_move_process(xcgroup_t *cg, pid_t pid);
+
 #endif
diff --git a/src/plugins/jobcomp/pgsql/Makefile.am b/src/plugins/jobcomp/pgsql/Makefile.am
index 6c78796b9f997304e7a4146f4a9039897aad9683..456a272e67f871a70e8ecc77b6d7119edd756f47 100644
--- a/src/plugins/jobcomp/pgsql/Makefile.am
+++ b/src/plugins/jobcomp/pgsql/Makefile.am
@@ -1,6 +1,6 @@
 # Makefile for jobcomp/pgsql plugin
 
-CPPFLAGS = $(PGSQL_CFLAGS)
+AM_CPPFLAGS = $(PGSQL_CFLAGS)
 AUTOMAKE_OPTIONS = foreign
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
diff --git a/src/plugins/jobcomp/pgsql/Makefile.in b/src/plugins/jobcomp/pgsql/Makefile.in
index dd51abc81311dfdb674ba73cae47afcec3188ed5..1fc1781a5805c4e52826fb4c283f008b326f6281 100644
--- a/src/plugins/jobcomp/pgsql/Makefile.in
+++ b/src/plugins/jobcomp/pgsql/Makefile.in
@@ -164,7 +164,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = $(PGSQL_CFLAGS)
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -341,6 +341,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AM_CPPFLAGS = $(PGSQL_CFLAGS)
 AUTOMAKE_OPTIONS = foreign
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
diff --git a/src/plugins/sched/backfill/Makefile.am b/src/plugins/sched/backfill/Makefile.am
index 242b693c4e82d84f730496e8e566906eff5348bb..88998e6a6a2be49319b41c043c8f1b3e9c464b58 100644
--- a/src/plugins/sched/backfill/Makefile.am
+++ b/src/plugins/sched/backfill/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CXXFLAGS = -fexceptions
+AM_CXXFLAGS = -fexceptions
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/sched/backfill/Makefile.in b/src/plugins/sched/backfill/Makefile.in
index 873511d6fafa2b84dacfffd16f4ecfdea38361e0..3fc62c37774432920e588abde2c156f2be131431 100644
--- a/src/plugins/sched/backfill/Makefile.in
+++ b/src/plugins/sched/backfill/Makefile.in
@@ -159,7 +159,7 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = -fexceptions
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
@@ -333,6 +333,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CXXFLAGS = -fexceptions
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 pkglib_LTLIBRARIES = sched_backfill.la
diff --git a/src/plugins/sched/builtin/Makefile.am b/src/plugins/sched/builtin/Makefile.am
index ff36ef1e5929013cbaf81c84439fcc6aaf5dfc37..faf4f0a682540b92a7b874849782cba256f87f0e 100644
--- a/src/plugins/sched/builtin/Makefile.am
+++ b/src/plugins/sched/builtin/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CXXFLAGS = -fexceptions
+AM_CXXFLAGS = -fexceptions
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/sched/builtin/Makefile.in b/src/plugins/sched/builtin/Makefile.in
index 826c4ff528d4252327f3061fcb47b89352208204..fa2775925964805da2902517348ba0a816553dd7 100644
--- a/src/plugins/sched/builtin/Makefile.in
+++ b/src/plugins/sched/builtin/Makefile.in
@@ -159,7 +159,7 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = -fexceptions
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
@@ -333,6 +333,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CXXFLAGS = -fexceptions
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 pkglib_LTLIBRARIES = sched_builtin.la
diff --git a/src/plugins/sched/hold/Makefile.am b/src/plugins/sched/hold/Makefile.am
index 8787797100ef345244558b9dc476f1ecf1f28f51..d03a995481dda85ed36b972d12ccb31ab2a58fef 100644
--- a/src/plugins/sched/hold/Makefile.am
+++ b/src/plugins/sched/hold/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CXXFLAGS = -fexceptions
+AM_CXXFLAGS = -fexceptions
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/sched/hold/Makefile.in b/src/plugins/sched/hold/Makefile.in
index 8c59d47033bb8d4b77a96dd03b96598736a671a1..e2c43f513077cf055b0312879697daadb36fcb0a 100644
--- a/src/plugins/sched/hold/Makefile.in
+++ b/src/plugins/sched/hold/Makefile.in
@@ -159,7 +159,7 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = -fexceptions
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
@@ -333,6 +333,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CXXFLAGS = -fexceptions
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 pkglib_LTLIBRARIES = sched_hold.la
diff --git a/src/plugins/sched/wiki/Makefile.am b/src/plugins/sched/wiki/Makefile.am
index 70c23917adb8f70118ce8308690f144260790d26..3864a3b790e4f5c069340ae2c85fa2443cbb7a82 100644
--- a/src/plugins/sched/wiki/Makefile.am
+++ b/src/plugins/sched/wiki/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CXXFLAGS = -fexceptions
+AM_CXXFLAGS = -fexceptions
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/sched/wiki/Makefile.in b/src/plugins/sched/wiki/Makefile.in
index 714667f8a48b7f22de4b73a7ee184caa45ecd45f..f4d33aa34c36f75a48baffe6ba2483c081587eb9 100644
--- a/src/plugins/sched/wiki/Makefile.in
+++ b/src/plugins/sched/wiki/Makefile.in
@@ -161,7 +161,7 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = -fexceptions
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
@@ -335,6 +335,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CXXFLAGS = -fexceptions
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 pkglib_LTLIBRARIES = sched_wiki.la
diff --git a/src/plugins/sched/wiki2/Makefile.am b/src/plugins/sched/wiki2/Makefile.am
index 19c026a5e0a6f632c6e96a2985bf8ecf1d3f03d4..c5c708c9d54d53dfaf81f55a225eaf37a985dcb1 100644
--- a/src/plugins/sched/wiki2/Makefile.am
+++ b/src/plugins/sched/wiki2/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CXXFLAGS = -fexceptions
+AM_CXXFLAGS = -fexceptions
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/sched/wiki2/Makefile.in b/src/plugins/sched/wiki2/Makefile.in
index 296805173380aaf12d9bb665eec2e66a50425246..782db1b320351445b13788124f97e296a18ae127 100644
--- a/src/plugins/sched/wiki2/Makefile.in
+++ b/src/plugins/sched/wiki2/Makefile.in
@@ -164,7 +164,7 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = -fexceptions
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
@@ -338,6 +338,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CXXFLAGS = -fexceptions
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 pkglib_LTLIBRARIES = sched_wiki2.la
diff --git a/src/plugins/select/bluegene/Makefile.am b/src/plugins/select/bluegene/Makefile.am
index 505f17a77f18f4cecfb2d1bc1561bc6e3bf6d82e..95af1f7dd87a9fc29ed05cf423ed693269fff479 100644
--- a/src/plugins/select/bluegene/Makefile.am
+++ b/src/plugins/select/bluegene/Makefile.am
@@ -3,7 +3,7 @@
 AUTOMAKE_OPTIONS = foreign
 CLEANFILES = core.*
 
-CPPFLAGS = -DBLUEGENE_CONFIG_FILE=\"$(sysconfdir)/bluegene.conf\"
+AM_CPPFLAGS = -DBLUEGENE_CONFIG_FILE=\"$(sysconfdir)/bluegene.conf\"
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic -lm
 
diff --git a/src/plugins/select/bluegene/Makefile.in b/src/plugins/select/bluegene/Makefile.in
index 70b005219b7ad10d32942be59ebf6c39cb6c0f7c..88a7acfa68e55513b0172aad848a5cda94fbc76b 100644
--- a/src/plugins/select/bluegene/Makefile.in
+++ b/src/plugins/select/bluegene/Makefile.in
@@ -318,7 +318,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DBLUEGENE_CONFIG_FILE=\"$(sysconfdir)/bluegene.conf\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -497,6 +497,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 CLEANFILES = core.*
+AM_CPPFLAGS = -DBLUEGENE_CONFIG_FILE=\"$(sysconfdir)/bluegene.conf\"
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic -lm
 INCLUDES = -I$(top_srcdir)  -I$(top_srcdir)/src/common $(BG_INCLUDES)
 pkglib_LTLIBRARIES = select_bluegene.la $(am__append_2) \
diff --git a/src/plugins/select/cray/Makefile.am b/src/plugins/select/cray/Makefile.am
index 3b4a41a2e4a6f4c3199f4c403b7f87532bc66f82..2ec30a33b27d1adc7725be213b8395afffcf7161 100644
--- a/src/plugins/select/cray/Makefile.am
+++ b/src/plugins/select/cray/Makefile.am
@@ -2,7 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-CPPFLAGS = -DCRAY_CONFIG_FILE=\"$(sysconfdir)/cray.conf\"
+AM_CPPFLAGS = -DCRAY_CONFIG_FILE=\"$(sysconfdir)/cray.conf\"
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 
diff --git a/src/plugins/select/cray/Makefile.in b/src/plugins/select/cray/Makefile.in
index 63abac41c59f71f2d834cdc53115215749a63c7e..5f61f42398730d539fab8f2e8bea53b38b230fe3 100644
--- a/src/plugins/select/cray/Makefile.in
+++ b/src/plugins/select/cray/Makefile.in
@@ -202,7 +202,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DCRAY_CONFIG_FILE=\"$(sysconfdir)/cray.conf\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -380,6 +380,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CPPFLAGS = -DCRAY_CONFIG_FILE=\"$(sysconfdir)/cray.conf\"
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common -I.
 pkglib_LTLIBRARIES = select_cray.la
diff --git a/src/plugins/switch/federation/Makefile.am b/src/plugins/switch/federation/Makefile.am
index d90112c816d3904331b49141316820fc42c5148d..1d166c8e20cc2cc211353c867b0e29b62ad77b81 100644
--- a/src/plugins/switch/federation/Makefile.am
+++ b/src/plugins/switch/federation/Makefile.am
@@ -1,6 +1,6 @@
 # Makefile for switch/federation plugin
 
-CPPFLAGS =  -DFEDERATION_CONFIG_FILE=\"$(sysconfdir)/federation.conf\"
+AM_CPPFLAGS = -DFEDERATION_CONFIG_FILE=\"$(sysconfdir)/federation.conf\"
 AUTOMAKE_OPTIONS = foreign
 
 if HAVE_FEDERATION
diff --git a/src/plugins/switch/federation/Makefile.in b/src/plugins/switch/federation/Makefile.in
index 3787f07c0e0e209bb644f6cd3b4fb7fc5839204b..9fb83fbd5a70416e150f8eb4bea321e3610dce1d 100644
--- a/src/plugins/switch/federation/Makefile.in
+++ b/src/plugins/switch/federation/Makefile.in
@@ -164,7 +164,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DFEDERATION_CONFIG_FILE=\"$(sysconfdir)/federation.conf\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -341,6 +341,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AM_CPPFLAGS = -DFEDERATION_CONFIG_FILE=\"$(sysconfdir)/federation.conf\"
 AUTOMAKE_OPTIONS = foreign
 @HAVE_FEDERATION_FALSE@federation_lib = 
 @HAVE_FEDERATION_TRUE@federation_lib = switch_federation.la
diff --git a/src/plugins/task/cgroup/task_cgroup_memory.c b/src/plugins/task/cgroup/task_cgroup_memory.c
index a7e0b0de711ef9cf869de112ab8ece60f0ac77fc..ef37a0685d6f04e75379abb94c15c13ad2c6d4c0 100644
--- a/src/plugins/task/cgroup/task_cgroup_memory.c
+++ b/src/plugins/task/cgroup/task_cgroup_memory.c
@@ -175,19 +175,22 @@ extern int task_cgroup_memory_fini(slurm_cgroup_conf_t *slurm_cgroup_conf)
 		return SLURM_SUCCESS;
 
 	/*
-	 * Move the slurmstepd back to the root memory cg and force empty
+	 * Move the slurmstepd back to the root memory cg and remove[*]
 	 * the step cgroup to move its allocated pages to its parent.
-	 * The release_agent will asynchroneously be called for the step
-	 * cgroup. It will do the necessary cleanup.
-	 * It should be good if this force_empty mech could be done directly
-	 * by the memcg implementation at the end of the last task managed
-	 * by a cgroup. It is too difficult and near impossible to handle
-	 * that cleanup correctly with current memcg.
+	 *
+	 * [*] Calling rmdir(2) on an empty cgroup moves all resident charged
+	 *  pages to the parent (i.e. the job cgroup). (If force_empty were
+	 *  used instead, only clean pages would be flushed). This keeps
+	 *  resident pagecache pages associated with the job. It is expected
+	 *  that the job epilog will then optionally force_empty the
+	 *  job cgroup (to flush pagecache), and then rmdir(2) the cgroup
+	 *  or wait for release notification from kernel.
 	 */
 	if (xcgroup_create(&memory_ns,&memory_cg,"",0,0) == XCGROUP_SUCCESS) {
-		xcgroup_set_uint32_param(&memory_cg,"tasks",getpid());
+		xcgroup_move_process(&memory_cg, getpid());
 		xcgroup_destroy(&memory_cg);
-		xcgroup_set_param(&step_memory_cg,"memory.force_empty","1");
+		if (xcgroup_delete(&step_memory_cg) != XCGROUP_SUCCESS)
+			error ("cgroup: rmdir step memcg failed: %m");
 	}
 
 	xcgroup_destroy(&user_memory_cg);
diff --git a/src/plugins/topology/tree/Makefile.am b/src/plugins/topology/tree/Makefile.am
index 93ebf6549030c2d2ef3af5be38ab0f67c07d2a1a..b739c9c474f1b2c59de3b3f84d6785c800eb3e46 100644
--- a/src/plugins/topology/tree/Makefile.am
+++ b/src/plugins/topology/tree/Makefile.am
@@ -1,6 +1,6 @@
 # Makefile for topology/tree plugin
 
-CPPFLAGS =  -DTOPOLOGY_CONFIG_FILE=\"$(sysconfdir)/topology.conf\"
+AM_CPPFLAGS = -DTOPOLOGY_CONFIG_FILE=\"$(sysconfdir)/topology.conf\"
 AUTOMAKE_OPTIONS = foreign
 
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
diff --git a/src/plugins/topology/tree/Makefile.in b/src/plugins/topology/tree/Makefile.in
index 67c344cffd3dec615c39f8d90cb5ea3dad0b5c8b..06e3ee413a02bb4080c8ee89e05fe0661aac6ace 100644
--- a/src/plugins/topology/tree/Makefile.in
+++ b/src/plugins/topology/tree/Makefile.in
@@ -155,7 +155,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DTOPOLOGY_CONFIG_FILE=\"$(sysconfdir)/topology.conf\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -332,6 +332,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AM_CPPFLAGS = -DTOPOLOGY_CONFIG_FILE=\"$(sysconfdir)/topology.conf\"
 AUTOMAKE_OPTIONS = foreign
 PLUGIN_FLAGS = -module -avoid-version --export-dynamic
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index d09012043b41ca41d5c83249a96b8f3ef87bb993..3ced2e8bf94449aa8fedb26aeb73c126eaa0872d 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -1874,6 +1874,10 @@ static int _build_node_list(struct job_record *job_ptr,
 		info("No nodes satisfy job %u requirements",
 		     job_ptr->job_id);
 		xfree(node_set_ptr);
+		if (job_ptr->resv_name) {
+			job_ptr->state_reason = WAIT_RESERVATION;
+			return ESLURM_NODES_BUSY;
+		}
 		return ESLURM_REQUESTED_NODE_CONFIG_UNAVAILABLE;
 	}
 
diff --git a/src/slurmd/slurmd/Makefile.am b/src/slurmd/slurmd/Makefile.am
index a47fde0a7ce169674bf4c7ae234ea8b977e49a4b..7d81740c4f266f0e480f13b87307772f33fb5aff 100644
--- a/src/slurmd/slurmd/Makefile.am
+++ b/src/slurmd/slurmd/Makefile.am
@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = foreign
 
 sbin_PROGRAMS = slurmd
 
-CPPFLAGS =  -DLIBSLURM_SO=\"$(libdir)/libslurm.so\"
+AM_CPPFLAGS = -DLIBSLURM_SO=\"$(libdir)/libslurm.so\"
 INCLUDES = -I$(top_srcdir)
 
 slurmd_LDADD = 					   \
diff --git a/src/slurmd/slurmd/Makefile.in b/src/slurmd/slurmd/Makefile.in
index b263d9bb03800d41245733bb397da01dc08cd423..ca136869b8e11fde8db251ad4f7d1628272f6f3d 100644
--- a/src/slurmd/slurmd/Makefile.in
+++ b/src/slurmd/slurmd/Makefile.in
@@ -141,7 +141,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CMD_LDFLAGS = @CMD_LDFLAGS@
 CPP = @CPP@
-CPPFLAGS = -DLIBSLURM_SO=\"$(libdir)/libslurm.so\"
+CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -319,6 +319,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
+AM_CPPFLAGS = -DLIBSLURM_SO=\"$(libdir)/libslurm.so\"
 INCLUDES = -I$(top_srcdir)
 slurmd_LDADD = \
 	$(top_builddir)/src/common/libdaemonize.la \