diff --git a/NEWS b/NEWS
index 0838909ffa3fe16123400b424c287800306e6416..22cb17335962528c4d098cac7636c9cda2711515 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,19 @@
 News
 ====
 
+Version 2.2.1 rc1
+-----------------
+
+*(Released Thu, 14 Oct 2010)*
+
+- Fix interaction between Curl/GnuTLS and the Python's HTTP server
+  (thanks Apollon Oikonomopoulos!), finally allowing the use of Curl
+  with GnuTLS
+- Fix problems with interaction between Curl and Python's HTTP server,
+  resulting in increased speed in many RPC calls
+- Improve our release script to prevent breakage with older aclocal and
+  Python 2.6
+
 Version 2.2.1 rc0
 -----------------
 
diff --git a/configure.ac b/configure.ac
index a32cd05d5a30baebbedf60f318c50acb6bda3f89..a87ffd7fa241644e35f6a0c324a013663b1ada1e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 m4_define([gnt_version_major], [2])
 m4_define([gnt_version_minor], [2])
 m4_define([gnt_version_revision], [1])
-m4_define([gnt_version_suffix], [~rc0])
+m4_define([gnt_version_suffix], [~rc1])
 m4_define([gnt_version_full],
           m4_format([%d.%d.%d%s],
                     gnt_version_major, gnt_version_minor,
diff --git a/devel/release b/devel/release
index 343781738d3d15696b772c76ce1784765e44a1d9..7e0ef335338401bcdf1b57ba0190487617c67b53 100755
--- a/devel/release
+++ b/devel/release
@@ -46,6 +46,26 @@ echo "Cloning the repository under $TMPDIR ..."
 git clone -q "$URL" dist
 cd dist
 git checkout $TAG
+
+# Check minimum aclocal version for releasing
+MIN_ACLOCAL_VERSION=( 1 11 1 )
+ACLOCAL_VERSION=$(${ACLOCAL:-aclocal} --version | head -1 | \
+                 sed -e 's/^[^0-9]*\([0-9\.]*\)$/\1/')
+
+ACLOCAL_VERSION_REST=$ACLOCAL_VERSION
+for v in ${MIN_ACLOCAL_VERSION[@]}; do
+ ACLOCAL_VERSION_PART=${ACLOCAL_VERSION_REST%%.*}
+ ACLOCAL_VERSION_REST=${ACLOCAL_VERSION_REST#$ACLOCAL_VERSION_PART.}
+ if [[ $v -eq $ACLOCAL_VERSION_PART ]]; then
+   continue
+ elif [[ $v -lt $ACLOCAL_VERSION_PART ]]; then
+   break
+ else # gt
+   echo "aclocal version $ACLOCAL_VERSION is too old (< 1.11.1)"
+   exit 1
+ fi
+done
+
 ./autogen.sh
 ./configure
 
diff --git a/lib/http/__init__.py b/lib/http/__init__.py
index 3df7d5b3c5397c1f497c56dbd6aa10d453633906..9049829912cef21116b1a7302c17fd5cffe72b21 100644
--- a/lib/http/__init__.py
+++ b/lib/http/__init__.py
@@ -550,6 +550,7 @@ class HttpSslParams(object):
     """
     self.ssl_key_pem = utils.ReadFile(ssl_key_path)
     self.ssl_cert_pem = utils.ReadFile(ssl_cert_path)
+    self.ssl_cert_path = ssl_cert_path
 
   def GetKey(self):
     return OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM,
@@ -612,6 +613,15 @@ class HttpBase(object):
                      OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT,
                      self._SSLVerifyCallback)
 
+      # Also add our certificate as a trusted CA to be sent to the client.
+      # This is required at least for GnuTLS clients to work.
+      try:
+        # This will fail for PyOpenssl versions before 0.10
+        ctx.add_client_ca(self._ssl_cert)
+      except AttributeError:
+        # Fall back to letting OpenSSL read the certificate file directly.
+        ctx.load_client_ca(ssl_params.ssl_cert_path)
+
     return OpenSSL.SSL.Connection(ctx, sock)
 
   def GetSslCiphers(self): # pylint: disable-msg=R0201
diff --git a/man/gnt-instance.sgml b/man/gnt-instance.sgml
index 560b665608aa246d0615de64cac12f57711a99cd..bddd8d24ad35860bf06ac8ac7165c5e455c7cb06 100644
--- a/man/gnt-instance.sgml
+++ b/man/gnt-instance.sgml
@@ -136,7 +136,7 @@
           interpreted (when no unit is given) in mebibytes. You can
           also use one of the suffixes
           <literal>m</literal>, <literal>g</literal> or
-          <literal>t</literal> to specificy the exact the units used;
+          <literal>t</literal> to specify the exact the units used;
           these suffixes map to mebibytes, gibibytes and tebibytes.
         </para>
 
@@ -633,9 +633,9 @@
               <listitem>
                 <simpara>Valid for the KVM hypervisor.</simpara>
 
-                <simpara>Under security model <quote>user</quote> the username
-                to run the instance under. It must be a valid username
-                existing on the host.
+                <simpara>Under security model <quote>user</quote> the
+                username to run the instance under. It must be a valid
+                username existing on the host.
                 </simpara>
                 <simpara>Cannot be set under security model <quote>none</quote>
                 or <quote>pool</quote>.
@@ -714,13 +714,17 @@
                 <simpara>This boolean option determines wether to run the KVM
                 instance in a chroot directory.
                 </simpara>
-                <para>If it is set to <quote>true</quote>, an empty directory
-                is created before starting the instance and its path is passed
-                via the <option>-chroot</option> flag to kvm.
-                The directory is removed when the instance is stopped.
+
+                <para>If it is set to <quote>true</quote>, an empty
+                directory is created before starting the instance and
+                its path is passed via the <option>-chroot</option>
+                flag to kvm.  The directory is removed when the
+                instance is stopped.
                 </para>
 
-                <simpara>It is set to <quote>false</quote> by default.</simpara>
+                <simpara>It is set to <quote>false</quote> by
+                default.</simpara>
+
               </listitem>
             </varlistentry>
 
@@ -1025,7 +1029,8 @@
         </para>
 
         <para>
-          The command will display the job id for each submitted instance, as follows:
+          The command will display the job id for each submitted
+          instance, as follows:
           <screen>
 # gnt-instance batch-create instances.json
 instance3: 11224
@@ -1092,6 +1097,8 @@ instance5: 11225
           <command>list</command>
           <arg>--no-headers</arg>
           <arg>--separator=<replaceable>SEPARATOR</replaceable></arg>
+        <sbr>
+        <arg>--units=<replaceable>UNITS</replaceable></arg>
           <arg>-o <replaceable>[+]FIELD,...</replaceable></arg>
           <arg>--roman</arg>
           <arg rep="repeat">instance</arg>
@@ -1110,6 +1117,16 @@ instance5: 11225
           the output fields. Both these options are to help scripting.
         </para>
 
+        <para>
+          The units used to display the numeric values in the output
+          varies, depending on the options given. By default, the values
+          will be formatted in the most appropriate unit. If the
+          <option>--separator</option> option is given, then the values
+          are shown in mebibytes to allow parsing by scripts. In both
+          cases, the <option>--units</option> option can be used to
+          enforce a given output unit.
+        </para>
+
         <para>
           The <option>--roman</option> option allows latin people to better
           understand the cluster instances' status.