self.zlib = zlib
                 if mode == "r":
                     self.exception = zlib.error
-                    if self.encryption is None:
-                        self._init_read_gz()
+                    self._init_read_gz()
                 elif mode == "w":
                     if self.encryption is None and concat_stream is False:
                         self._init_write_gz ()
 
                 if getattr (self.fileobj, "encryption", None) is not None:
                     self.fileobj._init_write_encrypt (tarinfo.name)
-                if getattr (self.fileobj, "cmp", None) is not None:
+                if self.concat_compression or \
+                        getattr (self.fileobj, "cmp", None) is not None:
                     self.fileobj._init_write_gz ()
 
                 # write new volume header