Date   

[PATCH 4/8] xen, rpi4: switch Xen-on-Rpi4 kernel preference to linux-yocto

Christopher Clark
 

The 5.10 version of the Linux Yocto kernel supports running Xen on the
Raspberry Pi 4, so the previous preference for linux-yocto-dev can be
replaced.

Use the ?= operator to set the kernel preference now since
meta-raspberrypi commit e0b4b8c5d introduced use of the weak default
for kernel preference in that layer to allow this here.

KERNEL_DEVICETREE needs to be set to match the build outputs of the
selected kernel, in this case: "broadcom/bcm2711-rpi-4-b.dtb"

Tested with kernel version:
SRCREV_machine = "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
SRCREV_meta="031f6c76e488a3563f35258c72ff1de3e25a512e"

Signed-off-by: Christopher Clark <christopher.w.clark@...>
---
conf/distro/include/meta-virt-xen.inc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/conf/distro/include/meta-virt-xen.inc b/conf/distro/include/meta-virt-xen.inc
index 44853d9..584cd6e 100644
--- a/conf/distro/include/meta-virt-xen.inc
+++ b/conf/distro/include/meta-virt-xen.inc
@@ -20,4 +20,5 @@ RPI_EXTRA_CONFIG_append_raspberrypi4-64 = "\nenable_gic=1"
# Increase boot partition for space for kernel and Xen
BOOT_SPACE_raspberrypi4-64 = "61440"
# Override the meta-raspberrypi default kernel preference
-PREFERRED_PROVIDER_virtual/kernel_raspberrypi4-64 = "linux-yocto-dev"
+PREFERRED_PROVIDER_virtual/kernel_raspberrypi4-64 ?= "linux-yocto"
+KERNEL_DEVICETREE_raspberrypi4-64 ?= "broadcom/bcm2711-rpi-4-b.dtb"
--
2.25.1


[PATCH 3/8] xen, rpi4, linux-yocto: enable linux-yocto 5.10 for RPi4

Christopher Clark
 

Added to the raspberrypi dynamic layer for use with Xen as
preparation for switching to it as the default preference.

Signed-off-by: Christopher Clark <christopher.w.clark@...>
---
.../recipes-kernel/linux/linux-yocto-dev.bbappend | 6 ++----
.../recipes-kernel/linux/linux-yocto_5.10.bbappend | 6 ++++++
.../recipes-kernel/linux/linux-yocto_xen-rpi.inc | 6 ++++++
3 files changed, 14 insertions(+), 4 deletions(-)
create mode 100644 dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_5.10.bbappend
create mode 100644 dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc

diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto-dev.bbappend b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto-dev.bbappend
index 2a0416f..8381e44 100644
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto-dev.bbappend
+++ b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -1,10 +1,8 @@
# For a Xen-enabled distro on the Raspberry Pi, override the contents of cmdline.txt
# with Xen-on-ARM-specific command line options

-DEFAULT_CMDLINE := "${CMDLINE}"
-XEN_LINUX_CMDLINE ?= "console=hvc0 clk_ignore_unused earlycon=xenboot debug root=/dev/mmcblk0p2 rootwait"
-CMDLINE = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${XEN_LINUX_CMDLINE}', '${DEFAULT_CMDLINE}', d)}"
-
KBRANCH_raspberrypi4-64 ?= "standard/bcm-2xxx-rpi"
KMACHINE_raspberrypi4-64 ?= "bcm-2xxx-rpi4"
COMPATIBLE_MACHINE_raspberrypi4-64 = "(raspberrypi4-64)"
+
+require linux-yocto_xen-rpi.inc
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_5.10.bbappend b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_5.10.bbappend
new file mode 100644
index 0000000..af92493
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_5.10.bbappend
@@ -0,0 +1,6 @@
+# Enable use of the linux-yocto 5.10 kernel for the Raspberry Pi 4
+KBRANCH_raspberrypi4-64 ?= "v5.10/standard/bcm-2xxx-rpi"
+KMACHINE_raspberrypi4-64 ?= "bcm-2xxx-rpi4"
+COMPATIBLE_MACHINE_raspberrypi4-64 = "(raspberrypi4-64)"
+
+require linux-yocto_xen-rpi.inc
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc
new file mode 100644
index 0000000..e8c120d
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc
@@ -0,0 +1,6 @@
+# For a Xen-enabled distro on the Raspberry Pi, override the contents of cmdline.txt
+# with Xen-on-ARM-specific command line options
+
+DEFAULT_CMDLINE := "${CMDLINE}"
+XEN_LINUX_CMDLINE ?= "console=hvc0 clk_ignore_unused earlycon=xenboot debug root=/dev/mmcblk0p2 rootwait"
+CMDLINE = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${XEN_LINUX_CMDLINE}', '${DEFAULT_CMDLINE}', d)}"
--
2.25.1


[PATCH 2/8] xen, rpi4: drop the raspberrypi4-64 defconfig, xen_git.bbappend

Christopher Clark
 

Since upstream Xen 4.14 and 4.15 have working default configs for Xen on
the Raspberry Pi 4, the defconfig and bbappend in the raspberrypi
dynamic layer can now be removed.

Signed-off-by: Christopher Clark <christopher.w.clark@...>
---
.../xen/files/defconfig_raspberrypi4-64 | 117 ------------------
.../recipes-extended/xen/xen_git.bbappend | 11 --
2 files changed, 128 deletions(-)
delete mode 100644 dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
delete mode 100644 dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend

diff --git a/dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64 b/dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
deleted file mode 100644
index f3343d3..0000000
--- a/dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Xen/arm 4.13.0 Configuration
-#
-CONFIG_64BIT=y
-CONFIG_ARM_64=y
-CONFIG_ARM=y
-CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
-
-#
-# Architecture Features
-#
-CONFIG_NR_CPUS=128
-# CONFIG_ACPI is not set
-CONFIG_GICV3=y
-# CONFIG_HAS_ITS is not set
-CONFIG_HVM=y
-# CONFIG_NEW_VGIC is not set
-CONFIG_SBSA_VUART_CONSOLE=y
-CONFIG_ARM_SSBD=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
-# CONFIG_TEE is not set
-
-#
-# ARM errata workaround via the alternative framework
-#
-CONFIG_ARM64_ERRATUM_827319=y
-CONFIG_ARM64_ERRATUM_824069=y
-CONFIG_ARM64_ERRATUM_819472=y
-CONFIG_ARM64_ERRATUM_832075=y
-CONFIG_ARM64_ERRATUM_834220=y
-CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
-CONFIG_ALL_PLAT=y
-# CONFIG_QEMU is not set
-# CONFIG_RCAR3 is not set
-# CONFIG_MPSOC is not set
-# CONFIG_NO_PLAT is not set
-CONFIG_ALL64_PLAT=y
-# CONFIG_ALL32_PLAT is not set
-CONFIG_MPSOC_PLATFORM=y
-
-#
-# Common Features
-#
-CONFIG_GRANT_TABLE=y
-CONFIG_HAS_ALTERNATIVE=y
-CONFIG_HAS_DEVICE_TREE=y
-CONFIG_HAS_FAST_MULTIPLY=y
-# CONFIG_MEM_ACCESS is not set
-CONFIG_HAS_PDX=y
-
-#
-# Speculative hardening
-#
-CONFIG_SPECULATIVE_HARDEN_ARRAY=y
-# CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP is not set
-CONFIG_XSM=y
-CONFIG_XSM_FLASK=y
-CONFIG_XSM_FLASK_AVC_STATS=y
-# CONFIG_XSM_FLASK_POLICY is not set
-CONFIG_XSM_SILO=y
-# CONFIG_XSM_DUMMY_DEFAULT is not set
-# CONFIG_XSM_FLASK_DEFAULT is not set
-CONFIG_XSM_SILO_DEFAULT=y
-# CONFIG_ARGO is not set
-
-#
-# Schedulers
-#
-CONFIG_SCHED_CREDIT=y
-CONFIG_SCHED_CREDIT2=y
-CONFIG_SCHED_RTDS=y
-CONFIG_SCHED_ARINC653=y
-CONFIG_SCHED_NULL=y
-# CONFIG_SCHED_CREDIT_DEFAULT is not set
-CONFIG_SCHED_CREDIT2_DEFAULT=y
-# CONFIG_SCHED_RTDS_DEFAULT is not set
-# CONFIG_SCHED_ARINC653_DEFAULT is not set
-# CONFIG_SCHED_NULL_DEFAULT is not set
-CONFIG_SCHED_DEFAULT="credit2"
-# CONFIG_LIVEPATCH is not set
-# CONFIG_ENFORCE_UNIQUE_SYMBOLS is not set
-# CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS is not set
-CONFIG_CMDLINE=""
-CONFIG_DOM0_MEM=""
-CONFIG_TRACEBUFFER=y
-
-#
-# Device Drivers
-#
-CONFIG_HAS_NS16550=y
-CONFIG_HAS_CADENCE_UART=y
-CONFIG_HAS_MVEBU=y
-CONFIG_HAS_MESON=y
-CONFIG_HAS_PL011=y
-CONFIG_HAS_SCIF=y
-CONFIG_HAS_PASSTHROUGH=y
-CONFIG_ARM_SMMU=y
-# CONFIG_IPMMU_VMSA is not set
-CONFIG_IOMMU_FORCE_PT_SHARE=y
-CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
-
-#
-# Debugging Options
-#
-CONFIG_DEBUG=y
-CONFIG_DEBUG_INFO=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_COVERAGE is not set
-# CONFIG_DEBUG_LOCK_PROFILE is not set
-CONFIG_DEBUG_LOCKS=y
-# CONFIG_PERF_COUNTERS is not set
-CONFIG_VERBOSE_DEBUG=y
-# CONFIG_DEVICE_TREE_DEBUG is not set
-CONFIG_SCRUB_DEBUG=y
-# CONFIG_DEBUG_TRACE is not set
-CONFIG_XMEM_POOL_POISON=y
diff --git a/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend b/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend
deleted file mode 100644
index 995dfd3..0000000
--- a/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend
+++ /dev/null
@@ -1,11 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI_append_raspberrypi4-64 = " \
- file://defconfig_raspberrypi4-64 \
- "
-
-do_post_patch_append_raspberrypi4-64() {
- if [ ! -e "${WORKDIR}/defconfig" ] ; then
- cp "${WORKDIR}/defconfig_raspberrypi4-64" "${WORKDIR}/defconfig"
- fi
-}
--
2.25.1


[PATCH 1/8] xen, rpi4: use the preferred generic multiboot,module compatible string

Christopher Clark
 

This string has been preferred since 2014 -- ref: Xen commit a860dfeec
and also current documentation: docs/misc/arm/device-tree/booting.txt

Signed-off-by: Christopher Clark <christopher.w.clark@...>
---
.../recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in b/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in
index 84d533a..9cba41f 100644
--- a/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in
+++ b/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in
@@ -21,7 +21,7 @@ echo Add a dom0 node to chosen to put Linux boot information in
fdt mknode /chosen dom0

echo Set this for the Linux boot command
-fdt set /chosen/dom0 compatible "xen,linux-zimage", "xen,multiboot-module"
+fdt set /chosen/dom0 compatible "multiboot,module"

# Tell Xen where PCI is
fdt set /scb/pcie@7d500000 device_type "pci"
--
2.25.1


[PATCH 0/8] Xen and Yocto Linux on Raspberry Pi 4

Christopher Clark
 

This series enables running Xen 4.14 and 4.15, with Yocto Linux 5.10,
on the Raspberry Pi 4 board.

Sets a new default kernel preference for linux-yocto for Xen on RPi4.
Applies some clean up to the config settings and dynamic layer.

Tested with kernel v5.10.25:
SRCREV_machine = "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651"
SRCREV_meta="031f6c76e488a3563f35258c72ff1de3e25a512e"

Christopher Clark (8):
xen, rpi4: use the preferred generic multiboot,module compatible
string
xen, rpi4: drop the raspberrypi4-64 defconfig, xen_git.bbappend
xen, rpi4, linux-yocto: enable linux-yocto 5.10 for RPi4
xen, rpi4: switch Xen-on-Rpi4 kernel preference to linux-yocto
xen, rpi4: fix u-boot script to load binaries from boot partition
xen, rpi4: apply workaround to fix crash on boot with Xen 4.14
xen, rpi4: move rpi4-machine+xen-distro cfg into dynamic layer
xen, rpi4: add xen-rpi-u-boot-scr recipe for default u-boot script

conf/distro/include/meta-virt-xen.inc | 21 +---
.../distro/include/xen-raspberrypi4-64.inc | 25 ++++
.../rpi-u-boot-scr/rpi-u-boot-scr.bbappend | 17 ---
.../files/boot.cmd.xen.in | 12 +-
.../xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb | 34 +++++
.../xen/files/defconfig_raspberrypi4-64 | 117 ------------------
.../recipes-extended/xen/xen_git.bbappend | 11 --
.../linux/linux-yocto-dev.bbappend | 6 +-
.../linux/linux-yocto_5.10.bbappend | 6 +
.../linux/linux-yocto_xen-rpi.inc | 6 +
10 files changed, 87 insertions(+), 168 deletions(-)
create mode 100644 dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc
delete mode 100644 dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bbappend
rename dynamic-layers/raspberrypi/recipes-bsp/{rpi-u-boot-scr => xen-rpi-u-boot-scr}/files/boot.cmd.xen.in (80%)
create mode 100644 dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb
delete mode 100644 dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
delete mode 100644 dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend
create mode 100644 dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_5.10.bbappend
create mode 100644 dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc

--
2.25.1


[PATCH] ceph: Upgrade to 16.2.1

Saul Wold
 

This updates the Ceph version to 16.2.1 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly

Added fixex for new python script to adjust #! from the native path
and moved the ceph-python package in order for it to get the correct
set of files before the ceph package.

Signed-off-by: Saul Wold <saul.wold@...>
---
...-add-missing-include-for-atomic-bool.patch | 25 ----
...h-fix-build-errors-for-cross-compile.patch | 125 ++++++++++++------
...0001-cmake-add-support-for-python3.9.patch | 30 -----
...001-fix-host-library-paths-were-used.patch | 58 ++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
.../ceph/{ceph_15.2.9.bb => ceph_16.2.1.bb} | 84 +++++++++---
6 files changed, 211 insertions(+), 142 deletions(-)
delete mode 100644 recipes-extended/ceph/ceph/0001-add-missing-include-for-atomic-bool.patch
delete mode 100644 recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.9.patch
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
rename recipes-extended/ceph/{ceph_15.2.9.bb => ceph_16.2.1.bb} (64%)

diff --git a/recipes-extended/ceph/ceph/0001-add-missing-include-for-atomic-bool.patch b/recipes-extended/ceph/ceph/0001-add-missing-include-for-atomic-bool.patch
deleted file mode 100644
index ffcbc58..0000000
--- a/recipes-extended/ceph/ceph/0001-add-missing-include-for-atomic-bool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 502be73be3c3645094525aa552f5e53d8782a004 Mon Sep 17 00:00:00 2001
-From: Sakib Sajal <sakib.sajal@...>
-Date: Fri, 28 Aug 2020 19:36:19 -0400
-Subject: [PATCH] add missing include for atomic<bool>
-
-Signed-off-by: Sakib Sajal <sakib.sajal@...>
----
- src/tools/rbd/action/Bench.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/tools/rbd/action/Bench.cc b/src/tools/rbd/action/Bench.cc
-index aa6edbc1..90c551c1 100644
---- a/src/tools/rbd/action/Bench.cc
-+++ b/src/tools/rbd/action/Bench.cc
-@@ -9,6 +9,7 @@
- #include "common/ceph_mutex.h"
- #include "include/types.h"
- #include "global/signal_handler.h"
-+#include <atomic>
- #include <iostream>
- #include <boost/accumulators/accumulators.hpp>
- #include <boost/accumulators/statistics/stats.hpp>
---
-2.27.0
-
diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 4d54549..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 4712fe18405ffea31405308357a8e7fca358bcce Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile

1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)

Upstream-Status: Inappropriate [oe specific]

@@ -14,18 +19,20 @@ Adjust context for v14.2.3

Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>
+
---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 8 --------
- src/pybind/rados/setup.py | 8 --------
- src/pybind/rbd/setup.py | 8 --------
- src/pybind/rgw/setup.py | 8 --------
- 7 files changed, 8 insertions(+), 55 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)

diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
-index 5fe929499d..802eb37e32 100644
+index ff01aaf81..18656c5a5 100644
--- a/cmake/modules/Distutils.cmake
+++ b/cmake/modules/Distutils.cmake
@@ -18,17 +18,8 @@ function(distutils_install_module name)
@@ -39,9 +46,9 @@ index 5fe929499d..802eb37e32 100644
- list(APPEND options
- --root=\$ENV{DESTDIR}
- --single-version-externally-managed)
-- if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
-- list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
-- endif()
+- endif()
+- if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
+- list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
- endif()
+ list(APPEND options --root=${CMAKE_DESTDIR})
+ list(APPEND options --install-lib=${PYTHON_SITEPACKAGES_DIR})
@@ -51,7 +58,7 @@ index 5fe929499d..802eb37e32 100644
@@ -50,7 +41,7 @@ function(distutils_add_cython_module target name src)
# Note: no quotes, otherwise distutils will execute "/usr/bin/ccache gcc"
# CMake's implicit conversion between strings and lists is wonderful, isn't it?
- string(REPLACE " " ";" cflags ${CMAKE_C_FLAGS})
+ set(cflags ${COMPILE_OPTIONS})
- list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w)
+ list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w --sysroot=${CMAKE_SYSROOT})
# This little bit of magic wipes out __Pyx_check_single_interpreter()
@@ -75,7 +82,7 @@ index 5fe929499d..802eb37e32 100644
COMMAND
${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
diff --git a/cmake/modules/FindRocksDB.cmake b/cmake/modules/FindRocksDB.cmake
-index c5dd3dfaf6..be38597af2 100644
+index c5dd3dfaf..be38597af 100644
--- a/cmake/modules/FindRocksDB.cmake
+++ b/cmake/modules/FindRocksDB.cmake
@@ -9,9 +9,9 @@
@@ -91,7 +98,7 @@ index c5dd3dfaf6..be38597af2 100644
if(ROCKSDB_INCLUDE_DIR AND EXISTS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h")
foreach(ver "MAJOR" "MINOR" "PATCH")
diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt
-index a5ebdaf538..a234068150 100644
+index b53b0d944..4955711a9 100644
--- a/src/compressor/zstd/CMakeLists.txt
+++ b/src/compressor/zstd/CMakeLists.txt
@@ -9,7 +9,7 @@ ExternalProject_Add(zstd_ext
@@ -104,81 +111,111 @@ index a5ebdaf538..a234068150 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index 19ae6c329a..c9a25ccfff 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -135,14 +135,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
--if 'BUILD_DOC' in os.environ.keys():
-- pass
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
-elif check_sanity():
-- pass
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
-else:
- sys.exit(1)
--
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
cmdclass = {}
try:
- from Cython.Build import cythonize
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index e2c5696404..4e99d26721 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -134,14 +134,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
--if 'BUILD_DOC' in os.environ.keys():
-- pass
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
-elif check_sanity():
-- pass
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
-else:
- sys.exit(1)
--
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
cmdclass = {}
try:
- from Cython.Build import cythonize
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 634484f140..f5bbbdab4f 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -133,14 +133,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
--if 'BUILD_DOC' in os.environ.keys():
-- pass
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
-elif check_sanity():
-- pass
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
-else:
- sys.exit(1)
--
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
cmdclass = {}
try:
- from Cython.Build import cythonize
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index eb1591a460..b9f2428cf9 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -134,14 +134,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
--if 'BUILD_DOC' in os.environ.keys():
-- pass
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
-elif check_sanity():
-- pass
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
-else:
- sys.exit(1)
--
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
cmdclass = {}
try:
- from Cython.Build import cythonize
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.9.patch b/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.9.patch
deleted file mode 100644
index d9116c4..0000000
--- a/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.9.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 1060f2e4362ebd6db23870d442dcd158d219ee92 Mon Sep 17 00:00:00 2001
-From: Yanfei Xu <yanfei.xu@...>
-Date: Tue, 10 Nov 2020 17:17:30 +0800
-Subject: [PATCH] cmake: add support for python3.9
-
-add support for python3.9.
-
-Upstream-Status: Pending
-
-Signed-off-by: Yanfei Xu <yanfei.xu@...>
----
- cmake/modules/FindPython/Support.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/modules/FindPython/Support.cmake b/cmake/modules/FindPython/Support.cmake
-index 6584699b79..c05bbe3306 100644
---- a/cmake/modules/FindPython/Support.cmake
-+++ b/cmake/modules/FindPython/Support.cmake
-@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
- message (FATAL_ERROR "FindPython: INTERNAL ERROR")
- endif()
- if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
-- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-+ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
- elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
- set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- else()
---
-2.18.2
-
diff --git a/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
index 310bfa4..1062ae7 100644
--- a/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
+++ b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
@@ -1,4 +1,4 @@
-From bbf1cba8feb0e43492a1f6a6b31d024117cad262 Mon Sep 17 00:00:00 2001
+From a7f56278dd4762c56cccd559e260e51092763cac Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@...>
Date: Mon, 13 Apr 2020 23:35:41 -0700
Subject: [PATCH] fix host library paths were used
@@ -8,6 +8,7 @@ Test the existence of recipe-sysrooot, add it back if lost
Upstream-Status: Inappropriate [oe specific]

Signed-off-by: Hongxu Jia <hongxu.jia@...>
+
---
src/pybind/cephfs/setup.py | 6 +++++-
src/pybind/rados/setup.py | 6 +++++-
@@ -16,11 +17,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@...>
4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c9a25ccf..972f936c 100755
+index 87cdeb473..5144c8441 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -63,9 +63,13 @@ def get_python_flags(libs):
- distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+@@ -65,10 +65,14 @@ def get_python_flags(libs):
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
compiler = new_compiler()
distutils.sysconfig.customize_compiler(compiler)
+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -29,17 +30,18 @@ index c9a25ccf..972f936c 100755
+ libpl = sysroot + libpl
return dict(
include_dirs=[distutils.sysconfig.get_python_inc()],
-- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
-+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
- libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+ library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+- libraries=libs + py_libs,
++ libraries=libs + [lib.replace('-l', '') for lib in py_libs],
extra_compile_args=filter_unsupported_flags(
compiler.compiler[0],
+ compiler.compiler[1:] + distutils.sysconfig.get_config_var('CFLAGS').split()),
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 4e99d267..de24f766 100755
+index feafb605d..82aff5154 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -66,9 +66,13 @@ def get_python_flags(libs):
- distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+@@ -63,10 +63,14 @@ def get_python_flags(libs):
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
compiler = new_compiler()
distutils.sysconfig.customize_compiler(compiler)
+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -48,17 +50,18 @@ index 4e99d267..de24f766 100755
+ libpl = sysroot + libpl
return dict(
include_dirs=[distutils.sysconfig.get_python_inc()],
-- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
-+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
- libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+ library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+- libraries=libs + py_libs,
++ libraries=libs + [lib.replace('-l', '') for lib in py_libs],
extra_compile_args=filter_unsupported_flags(
compiler.compiler[0],
+ compiler.compiler[1:] + distutils.sysconfig.get_config_var('CFLAGS').split()),
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index f5bbbdab..a1f70e1d 100755
+index b9c6a78d2..4ef714f8d 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -63,9 +63,13 @@ def get_python_flags(libs):
- distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+@@ -65,10 +65,14 @@ def get_python_flags(libs):
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
compiler = new_compiler()
distutils.sysconfig.customize_compiler(compiler)
+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -67,17 +70,18 @@ index f5bbbdab..a1f70e1d 100755
+ libpl = sysroot + libpl
return dict(
include_dirs=[distutils.sysconfig.get_python_inc()],
-- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
-+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
- libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+ library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+- libraries=libs + py_libs,
++ libraries=libs + [lib.replace('-l', '') for lib in py_libs],
extra_compile_args=filter_unsupported_flags(
compiler.compiler[0],
+ compiler.compiler[1:] + distutils.sysconfig.get_config_var('CFLAGS').split()),
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index b9f2428c..f5119f73 100755
+index 695038c0e..2521f0cbb 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -64,9 +64,13 @@ def get_python_flags(libs):
- distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+@@ -65,10 +65,14 @@ def get_python_flags(libs):
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
compiler = new_compiler()
distutils.sysconfig.customize_compiler(compiler)
+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -86,11 +90,9 @@ index b9f2428c..f5119f73 100755
+ libpl = sysroot + libpl
return dict(
include_dirs=[distutils.sysconfig.get_python_inc()],
-- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
-+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
- libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+ library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+- libraries=libs + py_libs,
++ libraries=libs + [lib.replace('-l', '') for lib in py_libs],
extra_compile_args=filter_unsupported_flags(
compiler.compiler[0],
---
-2.21.0
-
+ compiler.compiler[1:] + distutils.sysconfig.get_config_var('CFLAGS').split()),
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_15.2.9.bb b/recipes-extended/ceph/ceph_16.2.1.bb
similarity index 64%
rename from recipes-extended/ceph/ceph_15.2.9.bb
rename to recipes-extended/ceph/ceph_16.2.1.bb
index 0d821f0..ec62c7b 100644
--- a/recipes-extended/ceph/ceph_15.2.9.bb
+++ b/recipes-extended/ceph/ceph_16.2.1.bb
@@ -1,26 +1,80 @@
+# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
+# The following is the difference between the old and the new license text.
+# Please update the LICENSE value if needed, and summarize the changes in
+# the commit message via 'License-Update:' tag.
+# (example: 'License-Update: copyright years updated.')
+#
+# The changes:
+#
+# --- COPYING
+# +++ COPYING
+# @@ -7,6 +7,11 @@
+# Copyright: (c) 2004-2010 by Sage Weil <sage@...>
+# License: LGPL-2.1 or LGPL-3 (see COPYING-LGPL2.1 and COPYING-LGPL3)
+#
+# +Files: cmake/modules/FindPython*
+# +Copyright:
+# + Copyright 2000-2020 Kitware, Inc. and Contributors
+# +License: BSD 3-clause
+# +
+# Files: cmake/modules/FindLTTngUST.cmake
+# Copyright:
+# Copyright 2016 Kitware, Inc.
+# @@ -31,6 +36,10 @@
+# Files: src/include/ceph_hash.cc
+# Copyright: None
+# License: Public domain
+# +
+# +Files: src/include/rados.h, except ceph_stable_mod(), which is public domain
+# +Copyright: the authors
+# +License: LGPL-2.1 or LGPL-3 (see COPYING-LGPL2.1 and COPYING-LGPL3)
+#
+# Files: src/common/bloom_filter.hpp
+# Copyright: Copyright (C) 2000 Arash Partow <arash@...>
+# @@ -191,4 +200,17 @@
+#
+# Files: src/include/function2.hpp
+# Copyright: 2015-2018, Denis Blank
+# -License: Boost Software License, Version 1.0+License: Boost Software License, Version 1.0
+# +
+# +Files: src/include/expected.hpp
+# +Copyright: 2017, Simon Brand
+# +License: CC0
+# +
+# +Files: src/include/uses_allocator.h
+# +Copyright: 2016, Pablo Halpern <phalpern@...>
+# +License: Boost Software License, Version 1.0
+# +
+# +Files: src/common/async/bind_allocator.h
+# +Copyright: 2020 Red Hat <contact@...>
+# + 2003-2019 Christopher M. Kohlhoff <chris@...>
+# +License: Boost Software License, Version 1.0
+#
+#
+
SUMMARY = "User space components of the Ceph file system"
LICENSE = "LGPLv2.1 & GPLv2 & Apache-2.0 & MIT"
LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING;md5=4eb012c221c5fd4b760029a2981a6754 \
-"
-inherit cmake python3native python3-dir systemd
+ file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
+ "
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.

+SRC_URI[sha256sum] = "30ff943287361b4c3f0a9bf8bcd4399751b91434eec7d602ce6e93c42c741be3"
SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
- file://0001-add-missing-include-for-atomic-bool.patch \
- file://0001-cmake-add-support-for-python3.9.patch \
-"
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
+ "

-SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
+SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
+SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
+SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"

DEPENDS = "boost bzip2 curl expat gperf-native \
keyutils libaio libibverbs lz4 \
@@ -28,6 +82,7 @@ DEPENDS = "boost bzip2 curl expat gperf-native \
oath openldap openssl \
python3 python3-cython-native rabbitmq-c rocksdb snappy udev \
valgrind xfsprogs zlib \
+ lua cryptsetup \
"
SYSTEMD_SERVICE_${PN} = " \
ceph-radosgw@.service \
@@ -116,7 +171,7 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
"

FILES_${PN} += " \
@@ -133,11 +188,10 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
-PACKAGES += " \
- ${PN}-python \
-"
+PACKAGE_BEFORE_PN += "${PN}-python"
INSANE_SKIP_${PN}-python += "ldflags"
INSANE_SKIP_${PN} += "dev-so"
CCACHE_DISABLE = "1"
--
2.25.1


Re: [PATCH] ceph: Upgrade to 16.2.0

Bruce Ashfield
 

On Thu, Apr 22, 2021 at 3:34 PM Saul Wold <Saul.Wold@...> wrote:

Bruce

I am aware there is a 16.2.1 that was just published on the 19th, I
wanted to get visibility to the base upgrade which I just completed
while I work on the dot dot update.
Thanks Saul!

I'll do some test builds here, but will hold on the merge until you
have that next update ready. unless there's a reason to get this
version in first.

Cheers,

Bruce

Ceph-17 is the next major release, but has not be released yet.

Thanks

Sau!


On 4/22/21 12:32 PM, Saul Wold wrote:
This updates the Ceph version to 16.2.0 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly

Signed-off-by: Saul Wold <saul.wold@...>
---
...h-fix-build-errors-for-cross-compile.patch | 119 ++++++++++++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
recipes-extended/ceph/ceph_16.2.0.bb | 22 ++--
3 files changed, 138 insertions(+), 34 deletions(-)
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch

diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 7764a2b..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 04b53b669dbd75c9a90bf7f8ae2b47ff96176239 Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile

1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)

Upstream-Status: Inappropriate [oe specific]

@@ -14,16 +19,17 @@ Adjust context for v14.2.3

Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>

---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 1 -
- src/pybind/rados/setup.py | 1 -
- src/pybind/rbd/setup.py | 1 -
- src/pybind/rgw/setup.py | 1 -
- 7 files changed, 8 insertions(+), 27 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)

diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index ff01aaf81..18656c5a5 100644
@@ -105,50 +111,111 @@ index b53b0d944..4955711a9 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c3d40df05..87cdeb473 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -137,7 +137,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 0d1047825..feafb605d 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -131,7 +131,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 73ea4555f..b9c6a78d2 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 663604e8f..695038c0e 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_16.2.0.bb b/recipes-extended/ceph/ceph_16.2.0.bb
index 806a03f..d55e602 100644
--- a/recipes-extended/ceph/ceph_16.2.0.bb
+++ b/recipes-extended/ceph/ceph_16.2.0.bb
@@ -58,7 +58,9 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
"
-inherit cmake python3native python3-dir systemd
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.

@@ -66,14 +68,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
"

-#SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-#SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-#SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-#SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-#SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
-SRC_URI[sha256sum] = "dfeee542536607220dc2ca49f47c41127c8562dea234a886625e0f7ee1524904"
SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"
@@ -149,6 +146,13 @@ do_install_append () {
mv ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
# WITH_FUSE is set to OFF, remove ceph-fuse related units
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
}

do_install_append_class-target () {
@@ -173,7 +177,8 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
"

FILES_${PN} += " \
@@ -190,6 +195,7 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \




--
Sau!



--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Re: [hardknott][PATCH] containerd: fix CVE-2021-3121

Trevor Gamblin
 


On 2021-04-23 12:30 p.m., Martin Jansa wrote:

[Please note: This e-mail is from an EXTERNAL e-mail address]

This seems to introduce:
ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: Fuzz detected:

Applying patch CVE-2021-3121.patch
patching file src/import/api/events/container.pb.go
patching file src/import/api/events/content.pb.go
patching file src/import/api/events/image.pb.go
patching file src/import/api/events/namespace.pb.go
patching file src/import/api/events/snapshot.pb.go
patching file src/import/api/events/task.pb.go
patching file src/import/api/services/containers/v1/containers.pb.go
patching file src/import/api/services/content/v1/content.pb.go
patching file src/import/api/services/diff/v1/diff.pb.go
patching file src/import/api/services/events/v1/events.pb.go
patching file src/import/api/services/images/v1/images.pb.go
patching file src/import/api/services/introspection/v1/introspection.pb.go
patching file src/import/api/services/leases/v1/leases.pb.go
patching file src/import/api/services/namespaces/v1/namespace.pb.go
patching file src/import/api/services/snapshots/v1/snapshots.pb.go
patching file src/import/api/services/tasks/v1/tasks.pb.go
Hunk #1 succeeded at 9 with fuzz 2.
patching file src/import/api/services/ttrpc/events/v1/events.pb.go
patching file src/import/api/services/version/v1/version.pb.go
patching file src/import/api/types/descriptor.pb.go
patching file src/import/api/types/metrics.pb.go
patching file src/import/api/types/mount.pb.go
patching file src/import/api/types/platform.pb.go
patching file src/import/api/types/task/task.pb.go
patching file src/import/runtime/linux/runctypes/runc.pb.go
patching file src/import/runtime/v1/shim/v1/shim.pb.go
patching file src/import/runtime/v2/runc/options/oci.pb.go
patching file src/import/runtime/v2/task/shim.pb.go
Hunk #1 succeeded at 10 with fuzz 1.
patching file src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
patching file src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
patching file src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go


The context lines in the patches can be updated with devtool:

    devtool modify containerd-opencontainers
    devtool finish --force-patch-refresh containerd-opencontainers <layer_path>

Don't forget to review changes done by devtool!

ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: QA Issue: Patch log indicates that patches do not apply cleanly. [patch-fuzz]

will send a fix shortly unless you're already cooking one.
Oof, didn't notice when I sent it in. I'll fix it up, no worries.

On Tue, Apr 20, 2021 at 11:01 PM Bruce Ashfield <bruce.ashfield@...> wrote:

In message: [meta-virtualization][hardknott][PATCH] containerd: fix CVE-2021-3121
on 20/04/2021 Trevor Gamblin wrote:

> The master branch contains an uprev for containerd that includes the
> fix, so backport the patch separately for hardknott.
>
> Tested by pulling a hello-world image with podman to
> core-image-full-cmdline, with the following added to local.conf:
>
> DISTRO_FEATURES_append = " systemd seccomp"
> VIRTUAL-RUNTIME_init_manager = "systemd"
> DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
> VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
> NETWORK_MANAGER = "systemd"
> IMAGE_ROOTFS_EXTRA_SPACE = "8192000"
> PREFERRED_PROVIDER_virtual/containerd = "containerd-opencontainers"
> IMAGE_INSTALL_append = " podman virtual/containerd"

Thanks for the fix! I've queued it for hardknott.

Bruce

>
> Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> ---
>  .../containerd-opencontainers_git.bb          |    1 +
>  .../containerd/files/CVE-2021-3121.patch      | 4035 +++++++++++++++++
>  2 files changed, 4036 insertions(+)
>  create mode 100644 recipes-containers/containerd/files/CVE-2021-3121.patch
>
> diff --git a/recipes-containers/containerd/containerd-opencontainers_git.bb b/recipes-containers/containerd/containerd-opencontainers_git.bb
> index efa3626..9d33676 100644
> --- a/recipes-containers/containerd/containerd-opencontainers_git.bb
> +++ b/recipes-containers/containerd/containerd-opencontainers_git.bb
> @@ -9,6 +9,7 @@ SRCREV = "33d90b72d1e44987118ac111d4f7a108d412099b"
>  SRC_URI = "git://github.com/containerd/containerd;branch=release/1.4 \
>             file://0001-build-use-oe-provided-GO-and-flags.patch \
>             file://0001-Add-build-option-GODEBUG-1.patch \
> +           file://CVE-2021-3121.patch \
>            "

>  # Apache-2.0 for containerd
> diff --git a/recipes-containers/containerd/files/CVE-2021-3121.patch b/recipes-containers/containerd/files/CVE-2021-3121.patch
> new file mode 100644
> index 0000000..1a2c0f4
> --- /dev/null
> +++ b/recipes-containers/containerd/files/CVE-2021-3121.patch
> @@ -0,0 +1,4035 @@
> +From 9bd7f1043ce566d4600a8c61cd45bc99b2b17e36 Mon Sep 17 00:00:00 2001
> +From: Trevor Gamblin <trevor.gamblin@...>
> +Date: Tue, 20 Apr 2021 11:21:08 -0400
> +Subject: [PATCH] CVE-2021-3121
> +
> +Backports the fix at https://github.com/containerd/containerd/commit/1423e919,
> +but with extra refactors for pulled in from later versions to make the
> +fix apply correctly.
> +
> +Upstream-Status: Backport
> +CVE: CVE-2021-3121
> +
> +Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> +---
> + src/import/api/events/container.pb.go                    |  22 +-
> + src/import/api/events/content.pb.go                      |   5 +-
> + src/import/api/events/image.pb.go                        |  19 +-
> + src/import/api/events/namespace.pb.go                    |  19 +-
> + src/import/api/events/snapshot.pb.go                     |  15 +-
> + src/import/api/events/task.pb.go                         |  55 +-
> + src/import/api/services/containers/v1/containers.pb.go   |  64 +--
> + src/import/api/services/content/v1/content.pb.go         |  94 +---
> + src/import/api/services/diff/v1/diff.pb.go               |  24 +-
> + src/import/api/services/events/v1/events.pb.go           |  20 +-
> + src/import/api/services/images/v1/images.pb.go           |  52 +-
> + src/import/.../introspection/v1/introspection.pb.go      |  22 +-
> + src/import/api/services/leases/v1/leases.pb.go           |  59 +--
> + src/import/api/services/namespaces/v1/namespace.pb.go    |  52 +-
> + src/import/api/services/snapshots/v1/snapshots.pb.go     |  98 +---
> + src/import/api/services/tasks/v1/tasks.pb.go             | 484 +++++++++++-------
> + src/import/api/services/ttrpc/events/v1/events.pb.go     |  10 +-
> + src/import/api/services/version/v1/version.pb.go         |   5 +-
> + src/import/api/types/descriptor.pb.go                    |   7 +-
> + src/import/api/types/metrics.pb.go                       |   5 +-
> + src/import/api/types/mount.pb.go                         |   5 +-
> + src/import/api/types/platform.pb.go                      |   5 +-
> + src/import/api/types/task/task.pb.go                     |  10 +-
> + src/import/runtime/linux/runctypes/runc.pb.go            |  20 +-
> + src/import/runtime/v1/shim/v1/shim.pb.go                 | 100 +---
> + src/import/runtime/v2/runc/options/oci.pb.go             |  15 +-
> + src/import/runtime/v2/task/shim.pb.go                    | 470 ++++++++++-------
> + src/import/.../protobuf/plugin/unmarshal/unmarshal.go    |  16 +-
> + src/import/.../gogo/protobuf/proto/text_parser.go        |   2 +-
> + src/import/.../github.com/gogo/protobuf/types/any.pb.go  |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/api.pb.go  |  15 +-
> + src/import/.../gogo/protobuf/types/duration.pb.go        |   5 +-
> + src/import/.../gogo/protobuf/types/empty.pb.go           |   5 +-
> + src/import/.../gogo/protobuf/types/field_mask.pb.go      |   5 +-
> + src/import/.../gogo/protobuf/types/source_context.pb.go  |   5 +-
> + src/import/.../gogo/protobuf/types/struct.pb.go          |  17 +-
> + src/import/.../gogo/protobuf/types/timestamp.pb.go       |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/type.pb.go |  25 +-
> + src/import/.../gogo/protobuf/types/wrappers.pb.go        |  45 +-
> + 39 files changed, 773 insertions(+), 1133 deletions(-)
> +
> +diff --git a/src/import/api/events/container.pb.go b/src/import/api/events/container.pb.go
> +index 0c1e0a939..fe002e073 100644
> +--- a/src/import/api/events/container.pb.go
> ++++ b/src/import/api/events/container.pb.go
> +@@ -835,10 +835,7 @@ func (m *ContainerCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -957,10 +954,7 @@ func (m *ContainerCreate_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1185,7 +1179,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainer
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1234,10 +1228,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1320,10 +1311,7 @@ func (m *ContainerDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/content.pb.go b/src/import/api/events/content.pb.go
> +index 959ea72d8..0a7ec9325 100644
> +--- a/src/import/api/events/content.pb.go
> ++++ b/src/import/api/events/content.pb.go
> +@@ -257,10 +257,7 @@ func (m *ContentDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/image.pb.go b/src/import/api/events/image.pb.go
> +index 13f60b017..747026945 100644
> +--- a/src/import/api/events/image.pb.go
> ++++ b/src/import/api/events/image.pb.go
> +@@ -697,7 +697,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *ImageDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/namespace.pb.go b/src/import/api/events/namespace.pb.go
> +index 37c3b78cf..d406a987e 100644
> +--- a/src/import/api/events/namespace.pb.go
> ++++ b/src/import/api/events/namespace.pb.go
> +@@ -697,7 +697,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *NamespaceDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/snapshot.pb.go b/src/import/api/events/snapshot.pb.go
> +index 539297004..bec25c3a7 100644
> +--- a/src/import/api/events/snapshot.pb.go
> ++++ b/src/import/api/events/snapshot.pb.go
> +@@ -548,10 +548,7 @@ func (m *SnapshotPrepare) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -666,10 +663,7 @@ func (m *SnapshotCommit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -752,10 +746,7 @@ func (m *SnapshotRemove) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/task.pb.go b/src/import/api/events/task.pb.go
> +index 0f16695e3..f8f3a3f3d 100644
> +--- a/src/import/api/events/task.pb.go
> ++++ b/src/import/api/events/task.pb.go
> +@@ -1905,10 +1905,7 @@ func (m *TaskCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2010,10 +2007,7 @@ func (m *TaskStart) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2199,10 +2193,7 @@ func (m *TaskDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2369,10 +2360,7 @@ func (m *TaskIO) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2558,10 +2546,7 @@ func (m *TaskExit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2644,10 +2629,7 @@ func (m *TaskOOM) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2762,10 +2744,7 @@ func (m *TaskExecAdded) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2899,10 +2878,7 @@ func (m *TaskExecStarted) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2985,10 +2961,7 @@ func (m *TaskPaused) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3071,10 +3044,7 @@ func (m *TaskResumed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3189,10 +3159,7 @@ func (m *TaskCheckpointed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/containers/v1/containers.pb.go b/src/import/api/services/containers/v1/containers.pb.go
> +index d951b2683..af56c7de2 100644
> +--- a/src/import/api/services/containers/v1/containers.pb.go
> ++++ b/src/import/api/services/containers/v1/containers.pb.go
> +@@ -2106,7 +2106,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2469,7 +2469,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2486,10 +2486,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2608,10 +2605,7 @@ func (m *Container_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2694,10 +2688,7 @@ func (m *GetContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2781,10 +2772,7 @@ func (m *GetContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2867,10 +2855,7 @@ func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2955,10 +2940,7 @@ func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3042,10 +3024,7 @@ func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3129,10 +3108,7 @@ func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3252,10 +3228,7 @@ func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3339,10 +3312,7 @@ func (m *UpdateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3425,10 +3395,7 @@ func (m *DeleteContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3515,10 +3482,7 @@ func (m *ListContainerMessage) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/content/v1/content.pb.go b/src/import/api/services/content/v1/content.pb.go
> +index 1cf0aaa91..97c7d4a92 100644
> +--- a/src/import/api/services/content/v1/content.pb.go
> ++++ b/src/import/api/services/content/v1/content.pb.go
> +@@ -3280,7 +3280,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3297,10 +3297,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3383,10 +3380,7 @@ func (m *InfoRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3470,10 +3464,7 @@ func (m *InfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3593,10 +3584,7 @@ func (m *UpdateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3680,10 +3668,7 @@ func (m *UpdateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3766,10 +3751,7 @@ func (m *ListContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3854,10 +3836,7 @@ func (m *ListContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3940,10 +3919,7 @@ func (m *DeleteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4064,10 +4040,7 @@ func (m *ReadContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4171,10 +4144,7 @@ func (m *ReadContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4393,10 +4363,7 @@ func (m *Status) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4479,10 +4446,7 @@ func (m *StatusRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4569,10 +4533,7 @@ func (m *StatusResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4655,10 +4616,7 @@ func (m *ListStatusesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4743,10 +4701,7 @@ func (m *ListStatusesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,7 +5017,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -5079,10 +5034,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5288,10 +5240,7 @@ func (m *WriteContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5374,10 +5323,7 @@ func (m *AbortRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/diff/v1/diff.pb.go b/src/import/api/services/diff/v1/diff.pb.go
> +index 48379234d..b1450ceb8 100644
> +--- a/src/import/api/services/diff/v1/diff.pb.go
> ++++ b/src/import/api/services/diff/v1/diff.pb.go
> +@@ -1063,7 +1063,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1080,10 +1080,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1170,10 +1167,7 @@ func (m *ApplyResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1466,7 +1460,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1483,10 +1477,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1573,10 +1564,7 @@ func (m *DiffResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/events/v1/events.pb.go b/src/import/api/services/events/v1/events.pb.go
> +index a1674f862..4373f3bf2 100644
> +--- a/src/import/api/services/events/v1/events.pb.go
> ++++ b/src/import/api/services/events/v1/events.pb.go
> +@@ -916,10 +916,7 @@ func (m *PublishRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1006,10 +1003,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1092,10 +1086,7 @@ func (m *SubscribeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1279,10 +1270,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/images/v1/images.pb.go b/src/import/api/services/images/v1/images.pb.go
> +index db912b68b..de08cc083 100644
> +--- a/src/import/api/services/images/v1/images.pb.go
> ++++ b/src/import/api/services/images/v1/images.pb.go
> +@@ -1707,7 +1707,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImages
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1823,10 +1823,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1909,10 +1906,7 @@ func (m *GetImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1999,10 +1993,7 @@ func (m *GetImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2086,10 +2077,7 @@ func (m *CreateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2173,10 +2161,7 @@ func (m *CreateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2296,10 +2281,7 @@ func (m *UpdateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2383,10 +2365,7 @@ func (m *UpdateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2469,10 +2448,7 @@ func (m *ListImagesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2557,10 +2533,7 @@ func (m *ListImagesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2663,10 +2636,7 @@ func (m *DeleteImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/introspection/v1/introspection.pb.go b/src/import/api/services/introspection/v1/introspection.pb.go
> +index b9f912b09..d23c8b61a 100644
> +--- a/src/import/api/services/introspection/v1/introspection.pb.go
> ++++ b/src/import/api/services/introspection/v1/introspection.pb.go
> +@@ -1098,7 +1098,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthIntrospection
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1183,10 +1183,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1269,10 +1266,7 @@ func (m *PluginsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1357,10 +1351,7 @@ func (m *PluginsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1443,10 +1434,7 @@ func (m *ServerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/leases/v1/leases.pb.go b/src/import/api/services/leases/v1/leases.pb.go
> +index 4dbac3e09..5e7cab71f 100644
> +--- a/src/import/api/services/leases/v1/leases.pb.go
> ++++ b/src/import/api/services/leases/v1/leases.pb.go
> +@@ -1906,7 +1906,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1923,10 +1923,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2119,7 +2116,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2136,10 +2133,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2226,10 +2220,7 @@ func (m *CreateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2332,10 +2323,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2418,10 +2406,7 @@ func (m *ListRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2506,10 +2491,7 @@ func (m *ListResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2624,10 +2606,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2743,10 +2722,7 @@ func (m *AddResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2862,10 +2838,7 @@ func (m *DeleteResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2948,10 +2921,7 @@ func (m *ListResourcesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3036,10 +3006,7 @@ func (m *ListResourcesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/namespaces/v1/namespace.pb.go b/src/import/api/services/namespaces/v1/namespace.pb.go
> +index 0d1d650ba..76f9e1172 100644
> +--- a/src/import/api/services/namespaces/v1/namespace.pb.go
> ++++ b/src/import/api/services/namespaces/v1/namespace.pb.go
> +@@ -1609,7 +1609,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1626,10 +1626,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1712,10 +1709,7 @@ func (m *GetNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1799,10 +1793,7 @@ func (m *GetNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1885,10 +1876,7 @@ func (m *ListNamespacesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1973,10 +1961,7 @@ func (m *ListNamespacesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2060,10 +2045,7 @@ func (m *CreateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2147,10 +2129,7 @@ func (m *CreateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2270,10 +2249,7 @@ func (m *UpdateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2357,10 +2333,7 @@ func (m *UpdateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2443,10 +2416,7 @@ func (m *DeleteNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/snapshots/v1/snapshots.pb.go b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +index 1877afded..046c97b01 100644
> +--- a/src/import/api/services/snapshots/v1/snapshots.pb.go
> ++++ b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +@@ -3140,7 +3140,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3157,10 +3157,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3245,10 +3242,7 @@ func (m *PrepareSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3505,7 +3499,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3522,10 +3516,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3610,10 +3601,7 @@ func (m *ViewSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3728,10 +3716,7 @@ func (m *MountsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3816,10 +3801,7 @@ func (m *MountsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3934,10 +3916,7 @@ func (m *RemoveSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4194,7 +4173,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4211,10 +4190,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4329,10 +4305,7 @@ func (m *StatSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4642,7 +4615,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4659,10 +4632,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4746,10 +4716,7 @@ func (m *StatSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4901,10 +4868,7 @@ func (m *UpdateSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4988,10 +4952,7 @@ func (m *UpdateSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5106,10 +5067,7 @@ func (m *ListSnapshotsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5194,10 +5152,7 @@ func (m *ListSnapshotsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5312,10 +5267,7 @@ func (m *UsageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5404,10 +5356,7 @@ func (m *UsageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5490,10 +5439,7 @@ func (m *CleanupRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/tasks/v1/tasks.pb.go b/src/import/api/services/tasks/v1/tasks.pb.go
> +index 5ac5af11b..4904e6508 100644
> +--- a/src/import/api/services/tasks/v1/tasks.pb.go
> ++++ b/src/import/api/services/tasks/v1/tasks.pb.go
> +@@ -9,6 +9,7 @@ import (
> +     types "github.com/containerd/containerd/api/types"
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     github_com_opencontainers_go_digest "github.com/opencontainers/go-digest"
> +@@ -934,11 +935,12 @@ func (m *CheckpointTaskResponse) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskResponse proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ContainerID          string      `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ContainerID          string            `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1155,6 +1157,7 @@ func init() {
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.services.tasks.v1.CheckpointTaskRequest")
> +     proto.RegisterType((*CheckpointTaskResponse)(nil), "containerd.services.tasks.v1.CheckpointTaskResponse")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.services.tasks.v1.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.services.tasks.v1.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*MetricsRequest)(nil), "containerd.services.tasks.v1.MetricsRequest")
> +     proto.RegisterType((*MetricsResponse)(nil), "containerd.services.tasks.v1.MetricsResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.services.tasks.v1.WaitRequest")
> +@@ -1166,90 +1169,93 @@ func init() {
> + }
> +
> + var fileDescriptor_310e7127b8a26f14 = []byte{
> +-    // 1318 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x45,
> +-    0x1c, 0xef, 0xfa, 0xed, 0xbf, 0x93, 0x36, 0x59, 0xd2, 0x60, 0x96, 0x2a, 0x0e, 0xcb, 0xc5, 0x04,
> +-    0xba, 0x4b, 0x5d, 0x54, 0x21, 0x5a, 0x21, 0x35, 0x0f, 0x22, 0x0b, 0xaa, 0xa6, 0xdb, 0x02, 0x55,
> +-    0x25, 0x14, 0xb6, 0xbb, 0x13, 0x67, 0x14, 0x7b, 0x67, 0xbb, 0x33, 0x4e, 0x1b, 0x38, 0xc0, 0x47,
> +-    0xe8, 0x95, 0x0b, 0x9f, 0x27, 0x47, 0x8e, 0x08, 0x55, 0x81, 0xfa, 0x5b, 0x70, 0x43, 0xf3, 0xd8,
> +-    0xcd, 0xc6, 0x8e, 0xbd, 0x4e, 0xd3, 0x70, 0x69, 0x67, 0x66, 0xff, 0xaf, 0xf9, 0xcd, 0xff, 0xf1,
> +-    0x73, 0x60, 0xb5, 0x83, 0xd9, 0x6e, 0xff, 0xa9, 0xe5, 0x91, 0x9e, 0xed, 0x91, 0x80, 0xb9, 0x38,
> +-    0x40, 0x91, 0x9f, 0x5e, 0xba, 0x21, 0xb6, 0x29, 0x8a, 0xf6, 0xb1, 0x87, 0xa8, 0xcd, 0x5c, 0xba,
> +-    0x47, 0xed, 0xfd, 0x1b, 0x72, 0x61, 0x85, 0x11, 0x61, 0x44, 0xbf, 0x76, 0x2c, 0x6d, 0xc5, 0x92,
> +-    0x96, 0x14, 0xd8, 0xbf, 0x61, 0xbc, 0xdf, 0x21, 0xa4, 0xd3, 0x45, 0xb6, 0x90, 0x7d, 0xda, 0xdf,
> +-    0xb1, 0x51, 0x2f, 0x64, 0x07, 0x52, 0xd5, 0x78, 0x6f, 0xf8, 0xa3, 0x1b, 0xc4, 0x9f, 0x16, 0x3a,
> +-    0xa4, 0x43, 0xc4, 0xd2, 0xe6, 0x2b, 0x75, 0x7a, 0x6b, 0xaa, 0x78, 0xd9, 0x41, 0x88, 0xa8, 0xdd,
> +-    0x23, 0xfd, 0x80, 0x29, 0xbd, 0xcf, 0xcf, 0xa2, 0x87, 0x58, 0x84, 0x3d, 0x75, 0x3b, 0xe3, 0xf6,
> +-    0x19, 0x34, 0x7d, 0x44, 0xbd, 0x08, 0x87, 0x8c, 0x44, 0x4a, 0xf9, 0x8b, 0x33, 0x28, 0x73, 0xc4,
> +-    0xc4, 0x3f, 0x4a, 0xb7, 0x31, 0x8c, 0x0d, 0xc3, 0x3d, 0x44, 0x99, 0xdb, 0x0b, 0xa5, 0x80, 0x79,
> +-    0x98, 0x83, 0xf9, 0xb5, 0x08, 0xb9, 0x0c, 0x3d, 0x72, 0xe9, 0x9e, 0x83, 0x9e, 0xf5, 0x11, 0x65,
> +-    0x7a, 0x0b, 0x66, 0x12, 0xf3, 0xdb, 0xd8, 0xaf, 0x6b, 0xcb, 0x5a, 0xb3, 0xba, 0x7a, 0x65, 0x70,
> +-    0xd4, 0xa8, 0xad, 0xc5, 0xe7, 0xed, 0x75, 0xa7, 0x96, 0x08, 0xb5, 0x7d, 0xdd, 0x86, 0x52, 0x44,
> +-    0x08, 0xdb, 0xa1, 0xf5, 0xfc, 0x72, 0xbe, 0x59, 0x6b, 0xbd, 0x6b, 0xa5, 0x9e, 0x54, 0x44, 0x67,
> +-    0xdd, 0xe3, 0x60, 0x3a, 0x4a, 0x4c, 0x5f, 0x80, 0x22, 0x65, 0x3e, 0x0e, 0xea, 0x05, 0x6e, 0xdd,
> +-    0x91, 0x1b, 0x7d, 0x11, 0x4a, 0x94, 0xf9, 0xa4, 0xcf, 0xea, 0x45, 0x71, 0xac, 0x76, 0xea, 0x1c,
> +-    0x45, 0x51, 0xbd, 0x94, 0x9c, 0xa3, 0x28, 0xd2, 0x0d, 0xa8, 0x30, 0x14, 0xf5, 0x70, 0xe0, 0x76,
> +-    0xeb, 0xe5, 0x65, 0xad, 0x59, 0x71, 0x92, 0xbd, 0x7e, 0x07, 0xc0, 0xdb, 0x45, 0xde, 0x5e, 0x48,
> +-    0x70, 0xc0, 0xea, 0x95, 0x65, 0xad, 0x59, 0x6b, 0x5d, 0x1b, 0x0d, 0x6b, 0x3d, 0x41, 0xdc, 0x49,
> +-    0xc9, 0xeb, 0x16, 0x94, 0x49, 0xc8, 0x30, 0x09, 0x68, 0xbd, 0x2a, 0x54, 0x17, 0x2c, 0x89, 0xa6,
> +-    0x15, 0xa3, 0x69, 0xdd, 0x0d, 0x0e, 0x9c, 0x58, 0xc8, 0x7c, 0x02, 0x7a, 0x1a, 0x49, 0x1a, 0x92,
> +-    0x80, 0xa2, 0x37, 0x82, 0x72, 0x0e, 0xf2, 0x21, 0xf6, 0xeb, 0xb9, 0x65, 0xad, 0x39, 0xeb, 0xf0,
> +-    0xa5, 0xd9, 0x81, 0x99, 0x87, 0xcc, 0x8d, 0xd8, 0x79, 0x1e, 0xe8, 0x43, 0x28, 0xa3, 0x17, 0xc8,
> +-    0xdb, 0x56, 0x96, 0xab, 0xab, 0x30, 0x38, 0x6a, 0x94, 0x36, 0x5e, 0x20, 0xaf, 0xbd, 0xee, 0x94,
> +-    0xf8, 0xa7, 0xb6, 0x6f, 0x7e, 0x00, 0xb3, 0xca, 0x91, 0x8a, 0x5f, 0xc5, 0xa2, 0x1d, 0xc7, 0xb2,
> +-    0x09, 0xf3, 0xeb, 0xa8, 0x8b, 0xce, 0x9d, 0x31, 0xe6, 0xef, 0x1a, 0x5c, 0x96, 0x96, 0x12, 0x6f,
> +-    0x8b, 0x90, 0x4b, 0x94, 0x4b, 0x83, 0xa3, 0x46, 0xae, 0xbd, 0xee, 0xe4, 0xf0, 0x29, 0x88, 0xe8,
> +-    0x0d, 0xa8, 0xa1, 0x17, 0x98, 0x6d, 0x53, 0xe6, 0xb2, 0x3e, 0xcf, 0x39, 0xfe, 0x05, 0xf8, 0xd1,
> +-    0x43, 0x71, 0xa2, 0xdf, 0x85, 0x2a, 0xdf, 0x21, 0x7f, 0xdb, 0x65, 0x22, 0xc5, 0x6a, 0x2d, 0x63,
> +-    0xe4, 0x01, 0x1f, 0xc5, 0xe5, 0xb0, 0x5a, 0x39, 0x3c, 0x6a, 0x5c, 0x7a, 0xf9, 0x77, 0x43, 0x73,
> +-    0x2a, 0x52, 0xed, 0x2e, 0x33, 0x09, 0x2c, 0xc8, 0xf8, 0xb6, 0x22, 0xe2, 0x21, 0x4a, 0x2f, 0x1c,
> +-    0x7d, 0x04, 0xb0, 0x89, 0x2e, 0xfe, 0x91, 0x37, 0xa0, 0x26, 0xdc, 0x28, 0xd0, 0x6f, 0x41, 0x39,
> +-    0x94, 0x17, 0x14, 0x2e, 0x86, 0x6a, 0x64, 0xff, 0x86, 0x2a, 0x93, 0x18, 0x84, 0x58, 0xd8, 0x5c,
> +-    0x81, 0xb9, 0x6f, 0x30, 0x65, 0x3c, 0x0d, 0x12, 0x68, 0x16, 0xa1, 0xb4, 0x83, 0xbb, 0x0c, 0x45,
> +-    0x32, 0x5a, 0x47, 0xed, 0x78, 0xd2, 0xa4, 0x64, 0x93, 0xda, 0x28, 0x8a, 0x16, 0x5f, 0xd7, 0x44,
> +-    0xc7, 0x98, 0xec, 0x56, 0x8a, 0x9a, 0x2f, 0x35, 0xa8, 0x7d, 0x8d, 0xbb, 0xdd, 0x8b, 0x06, 0x49,
> +-    0x34, 0x1c, 0xdc, 0xe1, 0x6d, 0x45, 0xe6, 0x96, 0xda, 0xf1, 0x54, 0x74, 0xbb, 0x5d, 0x91, 0x51,
> +-    0x15, 0x87, 0x2f, 0xcd, 0x7f, 0x35, 0xd0, 0xb9, 0xf2, 0x5b, 0xc8, 0x92, 0xa4, 0x27, 0xe6, 0x4e,
> +-    0xef, 0x89, 0xf9, 0x31, 0x3d, 0xb1, 0x30, 0xb6, 0x27, 0x16, 0x87, 0x7a, 0x62, 0x13, 0x0a, 0x34,
> +-    0x44, 0x9e, 0xe8, 0xa2, 0xe3, 0x5a, 0x9a, 0x90, 0x48, 0xa3, 0x54, 0x1e, 0x9b, 0x4a, 0x57, 0xe1,
> +-    0x9d, 0x13, 0x57, 0x97, 0x2f, 0x6b, 0xfe, 0xa6, 0xc1, 0x9c, 0x83, 0x28, 0xfe, 0x09, 0x6d, 0xb1,
> +-    0x83, 0x0b, 0x7f, 0xaa, 0x05, 0x28, 0x3e, 0xc7, 0x3e, 0xdb, 0x55, 0x2f, 0x25, 0x37, 0x1c, 0x9d,
> +-    0x5d, 0x84, 0x3b, 0xbb, 0xb2, 0xfa, 0x67, 0x1d, 0xb5, 0x33, 0x7f, 0x81, 0xcb, 0x6b, 0x5d, 0x42,
> +-    0x51, 0xfb, 0xfe, 0xff, 0x11, 0x98, 0x7c, 0xce, 0xbc, 0x78, 0x05, 0xb9, 0x31, 0xbf, 0x82, 0xb9,
> +-    0x2d, 0xb7, 0x4f, 0xcf, 0xdd, 0x3f, 0x37, 0x61, 0xde, 0x41, 0xb4, 0xdf, 0x3b, 0xb7, 0xa1, 0x0d,
> +-    0xb8, 0xc2, 0x8b, 0x73, 0x0b, 0xfb, 0xe7, 0x49, 0x5e, 0xd3, 0x91, 0xfd, 0x40, 0x9a, 0x51, 0x25,
> +-    0xfe, 0x25, 0x54, 0x55, 0xbb, 0x40, 0x71, 0x99, 0x2f, 0x4f, 0x2a, 0xf3, 0x76, 0xb0, 0x43, 0x9c,
> +-    0x63, 0x15, 0xf3, 0x95, 0x06, 0x57, 0xd7, 0x92, 0x99, 0x7c, 0x5e, 0x8e, 0xb2, 0x0d, 0xf3, 0xa1,
> +-    0x1b, 0xa1, 0x80, 0x6d, 0xa7, 0x78, 0x81, 0x7c, 0xbe, 0x16, 0xef, 0xff, 0x7f, 0x1d, 0x35, 0x56,
> +-    0x52, 0x6c, 0x8b, 0x84, 0x28, 0x48, 0xd4, 0xa9, 0xdd, 0x21, 0xd7, 0x7d, 0xdc, 0x41, 0x94, 0x59,
> +-    0xeb, 0xe2, 0x3f, 0x67, 0x4e, 0x1a, 0x5b, 0x3b, 0x95, 0x33, 0xe4, 0xa7, 0xe1, 0x0c, 0x8f, 0x61,
> +-    0x71, 0xf8, 0x76, 0x09, 0x70, 0xb5, 0x63, 0x26, 0x78, 0x6a, 0x87, 0x1c, 0x21, 0x2f, 0x69, 0x05,
> +-    0xf3, 0x67, 0x98, 0xff, 0x36, 0xf4, 0xdf, 0x02, 0xaf, 0x6b, 0x41, 0x35, 0x42, 0x94, 0xf4, 0x23,
> +-    0x0f, 0x51, 0x81, 0xd5, 0xb8, 0x4b, 0x1d, 0x8b, 0x99, 0x2b, 0x70, 0xf9, 0x9e, 0x24, 0xc0, 0xb1,
> +-    0xe7, 0x3a, 0x94, 0xe5, 0x24, 0x90, 0x57, 0xa9, 0x3a, 0xf1, 0x96, 0x27, 0x5f, 0x22, 0x9b, 0xcc,
> +-    0x85, 0xb2, 0xe2, 0xcf, 0xea, 0xde, 0xf5, 0x53, 0xb8, 0xa4, 0x10, 0x70, 0x62, 0x41, 0x73, 0x07,
> +-    0x6a, 0xdf, 0xbb, 0xf8, 0xe2, 0x67, 0x67, 0x04, 0x33, 0xd2, 0x8f, 0x8a, 0x75, 0x88, 0x87, 0x68,
> +-    0x93, 0x79, 0x48, 0xee, 0x4d, 0x78, 0x48, 0xeb, 0xd5, 0x0c, 0x14, 0xc5, 0xe4, 0xd4, 0xf7, 0xa0,
> +-    0x24, 0x39, 0xa6, 0x6e, 0x5b, 0x93, 0x7e, 0x31, 0x59, 0x23, 0x9c, 0xde, 0xf8, 0x74, 0x7a, 0x05,
> +-    0x75, 0xb5, 0x1f, 0xa1, 0x28, 0xb8, 0xa0, 0xbe, 0x32, 0x59, 0x35, 0xcd, 0x4c, 0x8d, 0x8f, 0xa7,
> +-    0x92, 0x55, 0x1e, 0x3a, 0x50, 0x92, 0x04, 0x2b, 0xeb, 0x3a, 0x23, 0x84, 0xd3, 0xf8, 0x64, 0x1a,
> +-    0x85, 0xc4, 0xd1, 0x33, 0x98, 0x3d, 0xc1, 0xe4, 0xf4, 0xd6, 0x34, 0xea, 0x27, 0x07, 0xfa, 0x19,
> +-    0x5d, 0x3e, 0x81, 0xfc, 0x26, 0x62, 0x7a, 0x73, 0xb2, 0xd2, 0x31, 0xdd, 0x33, 0x3e, 0x9a, 0x42,
> +-    0x32, 0xc1, 0xad, 0xc0, 0x3b, 0xad, 0x6e, 0x4d, 0x56, 0x19, 0x66, 0x67, 0x86, 0x3d, 0xb5, 0xbc,
> +-    0x72, 0xd4, 0x86, 0x02, 0x27, 0x5b, 0x7a, 0x46, 0x6c, 0x29, 0x42, 0x66, 0x2c, 0x8e, 0x24, 0xf7,
> +-    0x06, 0xff, 0xb1, 0xae, 0x6f, 0x41, 0x81, 0x97, 0x92, 0x9e, 0x91, 0x87, 0xa3, 0x44, 0x6a, 0xac,
> +-    0xc5, 0x87, 0x50, 0x4d, 0x38, 0x46, 0x16, 0x14, 0xc3, 0x64, 0x64, 0xac, 0xd1, 0xfb, 0x50, 0x56,
> +-    0xec, 0x40, 0xcf, 0x78, 0xef, 0x93, 0x24, 0x62, 0x82, 0xc1, 0xa2, 0x98, 0xf6, 0x59, 0x11, 0x0e,
> +-    0x53, 0x82, 0xb1, 0x06, 0x1f, 0x40, 0x49, 0x8e, 0xfd, 0xac, 0xa2, 0x19, 0x21, 0x07, 0x63, 0x4d,
> +-    0x62, 0xa8, 0xc4, 0x93, 0x5b, 0xbf, 0x9e, 0x9d, 0x23, 0x29, 0xa2, 0x60, 0x58, 0xd3, 0x8a, 0xab,
> +-    0x8c, 0x7a, 0x0e, 0x90, 0x9a, 0x97, 0x37, 0x33, 0x20, 0x3e, 0x6d, 0xf2, 0x1b, 0x9f, 0x9d, 0x4d,
> +-    0x49, 0x39, 0x7e, 0x00, 0x25, 0x39, 0x10, 0xb3, 0x60, 0x1b, 0x19, 0x9b, 0x63, 0x61, 0xdb, 0x81,
> +-    0xb2, 0x1a, 0x5d, 0x59, 0xb9, 0x72, 0x72, 0x1a, 0x1a, 0xd7, 0xa7, 0x94, 0x56, 0xa1, 0xff, 0x00,
> +-    0x05, 0x3e, 0x73, 0xb2, 0xaa, 0x30, 0x35, 0xff, 0x8c, 0x95, 0x69, 0x44, 0xa5, 0xf9, 0xd5, 0xef,
> +-    0x0e, 0x5f, 0x2f, 0x5d, 0xfa, 0xf3, 0xf5, 0xd2, 0xa5, 0x5f, 0x07, 0x4b, 0xda, 0xe1, 0x60, 0x49,
> +-    0xfb, 0x63, 0xb0, 0xa4, 0xfd, 0x33, 0x58, 0xd2, 0x9e, 0xdc, 0x79, 0xb3, 0xbf, 0xec, 0xdd, 0x16,
> +-    0x8b, 0xc7, 0xb9, 0xa7, 0x25, 0x01, 0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa2,
> +-    0x4f, 0xd1, 0x22, 0x14, 0x00, 0x00,
> ++    // 1376 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0x1b, 0x45,
> ++    0x14, 0xee, 0xfa, 0xee, 0xe3, 0xa4, 0x4d, 0x96, 0x34, 0x98, 0xa5, 0x8a, 0xc3, 0xf2, 0x62, 0x02,
> ++    0x5d, 0x53, 0x17, 0x55, 0x55, 0x5b, 0x55, 0xe4, 0x46, 0x64, 0x41, 0xd5, 0x74, 0x5b, 0xa0, 0xaa,
> ++    0x84, 0xc2, 0xc6, 0x3b, 0x71, 0x46, 0xb1, 0x77, 0xb6, 0x3b, 0xe3, 0xb4, 0xe6, 0x05, 0x7e, 0x42,
> ++    0x5f, 0x79, 0x81, 0xbf, 0x93, 0x47, 0x1e, 0x11, 0xaa, 0x02, 0xf5, 0xbf, 0xe0, 0x0d, 0xcd, 0x65,
> ++    0xd7, 0x1b, 0x3b, 0xf6, 0x3a, 0x4d, 0xc3, 0x4b, 0x32, 0x33, 0x7b, 0xce, 0x99, 0x33, 0xdf, 0xb9,
> ++    0x7d, 0x09, 0xac, 0xb5, 0x30, 0xdb, 0xef, 0xee, 0x5a, 0x4d, 0xd2, 0xa9, 0x35, 0x89, 0xc7, 0x1c,
> ++    0xec, 0xa1, 0xc0, 0x8d, 0x2f, 0x1d, 0x1f, 0xd7, 0x28, 0x0a, 0x0e, 0x71, 0x13, 0xd1, 0x1a, 0x73,
> ++    0xe8, 0x01, 0xad, 0x1d, 0xde, 0x90, 0x0b, 0xcb, 0x0f, 0x08, 0x23, 0xfa, 0xb5, 0x81, 0xb4, 0x15,
> ++    0x4a, 0x5a, 0x52, 0xe0, 0xf0, 0x86, 0xf1, 0x61, 0x8b, 0x90, 0x56, 0x1b, 0xd5, 0x84, 0xec, 0x6e,
> ++    0x77, 0xaf, 0x86, 0x3a, 0x3e, 0xeb, 0x49, 0x55, 0xe3, 0x83, 0xe1, 0x8f, 0x8e, 0x17, 0x7e, 0x5a,
> ++    0x68, 0x91, 0x16, 0x11, 0xcb, 0x1a, 0x5f, 0xa9, 0xd3, 0x5b, 0x53, 0xf9, 0xcb, 0x7a, 0x3e, 0xa2,
> ++    0xb5, 0x0e, 0xe9, 0x7a, 0x4c, 0xe9, 0xdd, 0x3e, 0x8b, 0x1e, 0x62, 0x01, 0x6e, 0xaa, 0xd7, 0x19,
> ++    0x77, 0xcf, 0xa0, 0xe9, 0x22, 0xda, 0x0c, 0xb0, 0xcf, 0x48, 0xa0, 0x94, 0xef, 0x9c, 0x41, 0x99,
> ++    0x23, 0x26, 0x7e, 0x28, 0xdd, 0xca, 0x30, 0x36, 0x0c, 0x77, 0x10, 0x65, 0x4e, 0xc7, 0x97, 0x02,
> ++    0xe6, 0x51, 0x0a, 0xe6, 0xd7, 0x03, 0xe4, 0x30, 0xf4, 0xc4, 0xa1, 0x07, 0x36, 0x7a, 0xde, 0x45,
> ++    0x94, 0xe9, 0x75, 0x98, 0x89, 0xcc, 0xef, 0x60, 0xb7, 0xac, 0x2d, 0x6b, 0xd5, 0xe2, 0xda, 0x95,
> ++    0xfe, 0x71, 0xa5, 0xb4, 0x1e, 0x9e, 0x37, 0x36, 0xec, 0x52, 0x24, 0xd4, 0x70, 0xf5, 0x1a, 0xe4,
> ++    0x02, 0x42, 0xd8, 0x1e, 0x2d, 0xa7, 0x97, 0xd3, 0xd5, 0x52, 0xfd, 0x7d, 0x2b, 0x16, 0x52, 0xe1,
> ++    0x9d, 0xf5, 0x80, 0x83, 0x69, 0x2b, 0x31, 0x7d, 0x01, 0xb2, 0x94, 0xb9, 0xd8, 0x2b, 0x67, 0xb8,
> ++    0x75, 0x5b, 0x6e, 0xf4, 0x45, 0xc8, 0x51, 0xe6, 0x92, 0x2e, 0x2b, 0x67, 0xc5, 0xb1, 0xda, 0xa9,
> ++    0x73, 0x14, 0x04, 0xe5, 0x5c, 0x74, 0x8e, 0x82, 0x40, 0x37, 0xa0, 0xc0, 0x50, 0xd0, 0xc1, 0x9e,
> ++    0xd3, 0x2e, 0xe7, 0x97, 0xb5, 0x6a, 0xc1, 0x8e, 0xf6, 0xfa, 0x3d, 0x80, 0xe6, 0x3e, 0x6a, 0x1e,
> ++    0xf8, 0x04, 0x7b, 0xac, 0x5c, 0x58, 0xd6, 0xaa, 0xa5, 0xfa, 0xb5, 0x51, 0xb7, 0x36, 0x22, 0xc4,
> ++    0xed, 0x98, 0xbc, 0x6e, 0x41, 0x9e, 0xf8, 0x0c, 0x13, 0x8f, 0x96, 0x8b, 0x42, 0x75, 0xc1, 0x92,
> ++    0x68, 0x5a, 0x21, 0x9a, 0xd6, 0xaa, 0xd7, 0xb3, 0x43, 0x21, 0xf3, 0x19, 0xe8, 0x71, 0x24, 0xa9,
> ++    0x4f, 0x3c, 0x8a, 0xde, 0x0a, 0xca, 0x39, 0x48, 0xfb, 0xd8, 0x2d, 0xa7, 0x96, 0xb5, 0xea, 0xac,
> ++    0xcd, 0x97, 0x66, 0x0b, 0x66, 0x1e, 0x33, 0x27, 0x60, 0xe7, 0x09, 0xd0, 0xc7, 0x90, 0x47, 0x2f,
> ++    0x51, 0x73, 0x47, 0x59, 0x2e, 0xae, 0x41, 0xff, 0xb8, 0x92, 0xdb, 0x7c, 0x89, 0x9a, 0x8d, 0x0d,
> ++    0x3b, 0xc7, 0x3f, 0x35, 0x5c, 0xf3, 0x23, 0x98, 0x55, 0x17, 0x29, 0xff, 0x95, 0x2f, 0xda, 0xc0,
> ++    0x97, 0x2d, 0x98, 0xdf, 0x40, 0x6d, 0x74, 0xee, 0x8c, 0x31, 0x7f, 0xd3, 0xe0, 0xb2, 0xb4, 0x14,
> ++    0xdd, 0xb6, 0x08, 0xa9, 0x48, 0x39, 0xd7, 0x3f, 0xae, 0xa4, 0x1a, 0x1b, 0x76, 0x0a, 0x9f, 0x82,
> ++    0x88, 0x5e, 0x81, 0x12, 0x7a, 0x89, 0xd9, 0x0e, 0x65, 0x0e, 0xeb, 0xf2, 0x9c, 0xe3, 0x5f, 0x80,
> ++    0x1f, 0x3d, 0x16, 0x27, 0xfa, 0x2a, 0x14, 0xf9, 0x0e, 0xb9, 0x3b, 0x0e, 0x13, 0x29, 0x56, 0xaa,
> ++    0x1b, 0x23, 0x01, 0x7c, 0x12, 0x96, 0xc3, 0x5a, 0xe1, 0xe8, 0xb8, 0x72, 0xe9, 0xd5, 0xdf, 0x15,
> ++    0xcd, 0x2e, 0x48, 0xb5, 0x55, 0x66, 0x12, 0x58, 0x90, 0xfe, 0x6d, 0x07, 0xa4, 0x89, 0x28, 0xbd,
> ++    0x70, 0xf4, 0x11, 0xc0, 0x16, 0xba, 0xf8, 0x20, 0x6f, 0x42, 0x49, 0x5c, 0xa3, 0x40, 0xbf, 0x05,
> ++    0x79, 0x5f, 0x3e, 0x50, 0x5c, 0x31, 0x54, 0x23, 0x87, 0x37, 0x54, 0x99, 0x84, 0x20, 0x84, 0xc2,
> ++    0xe6, 0x0a, 0xcc, 0x7d, 0x83, 0x29, 0xe3, 0x69, 0x10, 0x41, 0xb3, 0x08, 0xb9, 0x3d, 0xdc, 0x66,
> ++    0x28, 0x90, 0xde, 0xda, 0x6a, 0xc7, 0x93, 0x26, 0x26, 0x1b, 0xd5, 0x46, 0x56, 0xb4, 0xf8, 0xb2,
> ++    0x26, 0x3a, 0xc6, 0xe4, 0x6b, 0xa5, 0xa8, 0xf9, 0x4a, 0x83, 0xd2, 0xd7, 0xb8, 0xdd, 0xbe, 0x68,
> ++    0x90, 0x44, 0xc3, 0xc1, 0x2d, 0xde, 0x56, 0x64, 0x6e, 0xa9, 0x1d, 0x4f, 0x45, 0xa7, 0xdd, 0x16,
> ++    0x19, 0x55, 0xb0, 0xf9, 0xd2, 0xfc, 0x57, 0x03, 0x9d, 0x2b, 0xbf, 0x83, 0x2c, 0x89, 0x7a, 0x62,
> ++    0xea, 0xf4, 0x9e, 0x98, 0x1e, 0xd3, 0x13, 0x33, 0x63, 0x7b, 0x62, 0x76, 0xa8, 0x27, 0x56, 0x21,
> ++    0x43, 0x7d, 0xd4, 0x14, 0x5d, 0x74, 0x5c, 0x4b, 0x13, 0x12, 0x71, 0x94, 0xf2, 0x63, 0x53, 0xe9,
> ++    0x2a, 0xbc, 0x77, 0xe2, 0xe9, 0x32, 0xb2, 0xe6, 0xaf, 0x1a, 0xcc, 0xd9, 0x88, 0xe2, 0x9f, 0xd0,
> ++    0x36, 0xeb, 0x5d, 0x78, 0xa8, 0x16, 0x20, 0xfb, 0x02, 0xbb, 0x6c, 0x5f, 0x45, 0x4a, 0x6e, 0x38,
> ++    0x3a, 0xfb, 0x08, 0xb7, 0xf6, 0x65, 0xf5, 0xcf, 0xda, 0x6a, 0x67, 0xfe, 0x0c, 0x97, 0xd7, 0xdb,
> ++    0x84, 0xa2, 0xc6, 0xc3, 0xff, 0xc3, 0x31, 0x19, 0xce, 0xb4, 0x88, 0x82, 0xdc, 0x98, 0x5f, 0xc1,
> ++    0xdc, 0xb6, 0xd3, 0xa5, 0xe7, 0xee, 0x9f, 0x5b, 0x30, 0x6f, 0x23, 0xda, 0xed, 0x9c, 0xdb, 0xd0,
> ++    0x26, 0x5c, 0xe1, 0xc5, 0xb9, 0x8d, 0xdd, 0xf3, 0x24, 0xaf, 0x69, 0xcb, 0x7e, 0x20, 0xcd, 0xa8,
> ++    0x12, 0xbf, 0x0f, 0x45, 0xd5, 0x2e, 0x50, 0x58, 0xe6, 0xcb, 0x93, 0xca, 0xbc, 0xe1, 0xed, 0x11,
> ++    0x7b, 0xa0, 0x62, 0xbe, 0xd6, 0xe0, 0xea, 0x7a, 0x34, 0x93, 0xcf, 0xcb, 0x51, 0x76, 0x60, 0xde,
> ++    0x77, 0x02, 0xe4, 0xb1, 0x9d, 0x18, 0x2f, 0x90, 0xe1, 0xab, 0xf3, 0xfe, 0xff, 0xd7, 0x71, 0x65,
> ++    0x25, 0xc6, 0xb6, 0x88, 0x8f, 0xbc, 0x48, 0x9d, 0xd6, 0x5a, 0xe4, 0xba, 0x8b, 0x5b, 0x88, 0x32,
> ++    0x6b, 0x43, 0xfc, 0xb2, 0xe7, 0xa4, 0xb1, 0xf5, 0x53, 0x39, 0x43, 0x7a, 0x1a, 0xce, 0xf0, 0x14,
> ++    0x16, 0x87, 0x5f, 0x17, 0x01, 0x57, 0x1a, 0x30, 0xc1, 0x53, 0x3b, 0xe4, 0x08, 0x79, 0x89, 0x2b,
> ++    0x98, 0xbf, 0xa7, 0x60, 0xfe, 0x5b, 0xdf, 0x7d, 0x07, 0xc4, 0xae, 0x0e, 0xc5, 0x00, 0x51, 0xd2,
> ++    0x0d, 0x9a, 0x88, 0x0a, 0xb0, 0xc6, 0xbd, 0x6a, 0x20, 0xa6, 0xef, 0x42, 0xc9, 0xf1, 0x3c, 0xc2,
> ++    0x9c, 0x10, 0x0b, 0xee, 0xfd, 0x97, 0xd6, 0x24, 0x92, 0x6f, 0x8d, 0x78, 0x6b, 0xad, 0x0e, 0x4c,
> ++    0x6c, 0x7a, 0x2c, 0xe8, 0xd9, 0x71, 0xa3, 0xc6, 0x7d, 0x98, 0x1b, 0x16, 0xe0, 0xcd, 0xf9, 0x00,
> ++    0xf5, 0xd4, 0xec, 0xe1, 0x4b, 0x5e, 0x82, 0x87, 0x4e, 0xbb, 0x8b, 0xc2, 0x8e, 0x2a, 0x36, 0x77,
> ++    0x52, 0xb7, 0x35, 0x73, 0x05, 0x2e, 0x3f, 0x90, 0x2c, 0x3d, 0x44, 0xa7, 0x0c, 0x79, 0x39, 0xae,
> ++    0x24, 0xde, 0x45, 0x3b, 0xdc, 0xf2, 0x0a, 0x89, 0x64, 0xa3, 0xe1, 0x95, 0x57, 0x24, 0x5f, 0x05,
> ++    0xa7, 0x7c, 0x0a, 0xe1, 0x15, 0x02, 0x76, 0x28, 0x68, 0xee, 0x41, 0xe9, 0x7b, 0x07, 0x5f, 0xfc,
> ++    0x80, 0x0f, 0x60, 0x46, 0xde, 0xa3, 0x7c, 0x1d, 0x22, 0x4b, 0xda, 0x64, 0xb2, 0x94, 0x7a, 0x1b,
> ++    0xb2, 0x54, 0x7f, 0x3d, 0x03, 0x59, 0x31, 0xde, 0xf5, 0x03, 0xc8, 0x49, 0x22, 0xac, 0xd7, 0x26,
> ++    0x47, 0x7c, 0xe4, 0x0f, 0x0f, 0xe3, 0xf3, 0xe9, 0x15, 0xd4, 0xd3, 0x7e, 0x84, 0xac, 0x20, 0xac,
> ++    0xfa, 0xca, 0x64, 0xd5, 0x38, 0x7d, 0x36, 0x3e, 0x9d, 0x4a, 0x56, 0xdd, 0xd0, 0x82, 0x9c, 0x64,
> ++    0x81, 0x49, 0xcf, 0x19, 0x61, 0xc5, 0xc6, 0x67, 0xd3, 0x28, 0x44, 0x17, 0x3d, 0x87, 0xd9, 0x13,
> ++    0x74, 0x53, 0xaf, 0x4f, 0xa3, 0x7e, 0x92, 0x75, 0x9c, 0xf1, 0xca, 0x67, 0x90, 0xde, 0x42, 0x4c,
> ++    0xaf, 0x4e, 0x56, 0x1a, 0x70, 0x52, 0xe3, 0x93, 0x29, 0x24, 0x23, 0xdc, 0x32, 0x7c, 0x1c, 0xe8,
> ++    0xd6, 0x64, 0x95, 0x61, 0x0a, 0x69, 0xd4, 0xa6, 0x96, 0x57, 0x17, 0x35, 0x20, 0xc3, 0x19, 0xa1,
> ++    0x9e, 0xe0, 0x5b, 0x8c, 0x35, 0x1a, 0x8b, 0x23, 0xc9, 0xbd, 0xd9, 0xf1, 0x59, 0x4f, 0xdf, 0x86,
> ++    0x0c, 0x2f, 0x25, 0x3d, 0x21, 0x0f, 0x47, 0xd9, 0xde, 0x58, 0x8b, 0x8f, 0xa1, 0x18, 0x11, 0xa1,
> ++    0x24, 0x28, 0x86, 0x19, 0xd3, 0x58, 0xa3, 0x0f, 0x21, 0xaf, 0x28, 0x8c, 0x9e, 0x10, 0xef, 0x93,
> ++    0x4c, 0x67, 0x82, 0xc1, 0xac, 0xa0, 0x24, 0x49, 0x1e, 0x0e, 0xf3, 0x96, 0xb1, 0x06, 0x1f, 0x41,
> ++    0x4e, 0x72, 0x93, 0xa4, 0xa2, 0x19, 0x61, 0x30, 0x63, 0x4d, 0x62, 0x28, 0x84, 0xf4, 0x42, 0xbf,
> ++    0x9e, 0x9c, 0x23, 0x31, 0x36, 0x63, 0x58, 0xd3, 0x8a, 0xab, 0x8c, 0x7a, 0x01, 0x10, 0x1b, 0xea,
> ++    0x37, 0x13, 0x20, 0x3e, 0x8d, 0x9e, 0x18, 0x5f, 0x9c, 0x4d, 0x49, 0x5d, 0xfc, 0x08, 0x72, 0x72,
> ++    0x0c, 0x26, 0xc1, 0x36, 0x32, 0x2c, 0xc7, 0xc2, 0xb6, 0x07, 0x79, 0x35, 0xba, 0x92, 0x72, 0xe5,
> ++    0xe4, 0x34, 0x34, 0xae, 0x4f, 0x29, 0xad, 0x5c, 0xff, 0x01, 0x32, 0x7c, 0xe6, 0x24, 0x55, 0x61,
> ++    0x6c, 0xfe, 0x19, 0x2b, 0xd3, 0x88, 0x4a, 0xf3, 0x6b, 0xdf, 0x1d, 0xbd, 0x59, 0xba, 0xf4, 0xe7,
> ++    0x9b, 0xa5, 0x4b, 0xbf, 0xf4, 0x97, 0xb4, 0xa3, 0xfe, 0x92, 0xf6, 0x47, 0x7f, 0x49, 0xfb, 0xa7,
> ++    0xbf, 0xa4, 0x3d, 0xbb, 0xf7, 0x76, 0xff, 0x7e, 0xbc, 0x2b, 0x16, 0x4f, 0x53, 0xbb, 0x39, 0x01,
> ++    0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x55, 0xbf, 0x54, 0xc7, 0x14, 0x00, 0x00,
> + }
> +
> + // Reference imports to suppress errors if they are not otherwise used.
> +@@ -2943,6 +2949,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintTasks(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -3611,6 +3636,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovTasks(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovTasks(uint64(len(k))) + 1 + len(v) + sovTasks(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovTasks(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3991,9 +4024,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4347,10 +4391,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4452,10 +4493,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4570,10 +4608,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4643,10 +4678,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4729,10 +4761,7 @@ func (m *DeleteTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4886,10 +4915,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5004,10 +5030,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5122,10 +5145,7 @@ func (m *GetRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5212,10 +5232,7 @@ func (m *GetResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5298,10 +5315,7 @@ func (m *ListTasksRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5386,10 +5400,7 @@ func (m *ListTasksResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5543,10 +5554,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5813,10 +5821,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5867,10 +5872,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6023,10 +6025,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6161,10 +6160,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6247,10 +6243,7 @@ func (m *PauseTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6333,10 +6326,7 @@ func (m *ResumeTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6419,10 +6409,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6507,10 +6494,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6661,10 +6645,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6749,10 +6730,7 @@ func (m *CheckpointTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6865,16 +6843,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowTasks
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowTasks
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipTasks(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipTasks(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6957,10 +7059,7 @@ func (m *MetricsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7045,10 +7144,7 @@ func (m *MetricsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7163,10 +7259,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7269,10 +7362,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/ttrpc/events/v1/events.pb.go b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +index 0e61351d5..b1f275bf0 100644
> +--- a/src/import/api/services/ttrpc/events/v1/events.pb.go
> ++++ b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +@@ -474,10 +474,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -661,10 +658,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/version/v1/version.pb.go b/src/import/api/services/version/v1/version.pb.go
> +index 81b8c3395..b742c6ae6 100644
> +--- a/src/import/api/services/version/v1/version.pb.go
> ++++ b/src/import/api/services/version/v1/version.pb.go
> +@@ -374,10 +374,7 @@ func (m *VersionResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthVersion
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthVersion
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/descriptor.pb.go b/src/import/api/types/descriptor.pb.go
> +index 437d41f23..fe71dbf43 100644
> +--- a/src/import/api/types/descriptor.pb.go
> ++++ b/src/import/api/types/descriptor.pb.go
> +@@ -479,7 +479,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDescriptor
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -496,10 +496,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDescriptor
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDescriptor
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/metrics.pb.go b/src/import/api/types/metrics.pb.go
> +index 89a8d9cd6..75773e442 100644
> +--- a/src/import/api/types/metrics.pb.go
> ++++ b/src/import/api/types/metrics.pb.go
> +@@ -348,10 +348,7 @@ func (m *Metric) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMetrics
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMetrics
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/mount.pb.go b/src/import/api/types/mount.pb.go
> +index 6872e4120..d0a0bee76 100644
> +--- a/src/import/api/types/mount.pb.go
> ++++ b/src/import/api/types/mount.pb.go
> +@@ -392,10 +392,7 @@ func (m *Mount) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMount
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMount
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/platform.pb.go b/src/import/api/types/platform.pb.go
> +index c03d8b077..a0f78c8a7 100644
> +--- a/src/import/api/types/platform.pb.go
> ++++ b/src/import/api/types/platform.pb.go
> +@@ -333,10 +333,7 @@ func (m *Platform) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthPlatform
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthPlatform
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/task/task.pb.go b/src/import/api/types/task/task.pb.go
> +index ae824ff45..f511bbd05 100644
> +--- a/src/import/api/types/task/task.pb.go
> ++++ b/src/import/api/types/task/task.pb.go
> +@@ -772,10 +772,7 @@ func (m *Process) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -881,10 +878,7 @@ func (m *ProcessInfo) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/linux/runctypes/runc.pb.go b/src/import/runtime/linux/runctypes/runc.pb.go
> +index 26306e594..46d31ff59 100644
> +--- a/src/import/runtime/linux/runctypes/runc.pb.go
> ++++ b/src/import/runtime/linux/runctypes/runc.pb.go
> +@@ -978,10 +978,7 @@ func (m *RuncOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1350,10 +1347,7 @@ func (m *CreateOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1632,10 +1626,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1718,10 +1709,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v1/shim/v1/shim.pb.go b/src/import/runtime/v1/shim/v1/shim.pb.go
> +index 27f334966..dbc82599d 100644
> +--- a/src/import/runtime/v1/shim/v1/shim.pb.go
> ++++ b/src/import/runtime/v1/shim/v1/shim.pb.go
> +@@ -3262,10 +3262,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3335,10 +3332,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3460,10 +3454,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3546,10 +3537,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3784,10 +3772,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3838,10 +3823,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3962,10 +3944,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4048,10 +4027,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4372,10 +4348,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4497,10 +4470,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4603,10 +4573,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4689,10 +4656,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4777,10 +4741,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4899,10 +4860,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4972,10 +4930,7 @@ func (m *ShimInfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,10 +5017,7 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5148,10 +5100,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5253,10 +5202,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5339,10 +5285,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5445,10 +5388,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/runc/options/oci.pb.go b/src/import/runtime/v2/runc/options/oci.pb.go
> +index f298452b6..c9c44742a 100644
> +--- a/src/import/runtime/v2/runc/options/oci.pb.go
> ++++ b/src/import/runtime/v2/runc/options/oci.pb.go
> +@@ -994,10 +994,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1276,10 +1273,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1362,10 +1356,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/task/shim.pb.go b/src/import/runtime/v2/task/shim.pb.go
> +index 3cf11d8e3..6366f9c57 100644
> +--- a/src/import/runtime/v2/task/shim.pb.go
> ++++ b/src/import/runtime/v2/task/shim.pb.go
> +@@ -10,6 +10,7 @@ import (
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     github_com_containerd_ttrpc "github.com/containerd/ttrpc"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     io "io"
> +@@ -617,11 +618,12 @@ func (m *CheckpointTaskRequest) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskRequest proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ID                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ID                   string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1107,6 +1109,7 @@ func init() {
> +     proto.RegisterType((*PidsResponse)(nil), "containerd.task.v2.PidsResponse")
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.task.v2.CheckpointTaskRequest")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.task.v2.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.task.v2.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*StartRequest)(nil), "containerd.task.v2.StartRequest")
> +     proto.RegisterType((*StartResponse)(nil), "containerd.task.v2.StartResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.task.v2.WaitRequest")
> +@@ -1125,85 +1128,89 @@ func init() {
> + }
> +
> + var fileDescriptor_9202ee34bc3ad8ca = []byte{
> +-    // 1246 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x6f, 0x1b, 0x45,
> +-    0x17, 0xee, 0xfa, 0x63, 0x6d, 0x1f, 0xd7, 0x69, 0x3a, 0x6f, 0x9a, 0x77, 0xeb, 0x4a, 0xb6, 0xbb,
> +-    0xa5, 0xc1, 0x80, 0x64, 0x0b, 0x57, 0x70, 0x41, 0x24, 0x50, 0xbe, 0xa8, 0x4c, 0x0b, 0x89, 0xb6,
> +-    0x45, 0x45, 0xdc, 0x58, 0x1b, 0xef, 0xc4, 0x5e, 0xc5, 0xde, 0x59, 0x76, 0x66, 0xf3, 0x81, 0x84,
> +-    0xc4, 0x15, 0x17, 0x5c, 0xf1, 0xb3, 0x72, 0x89, 0xc4, 0x0d, 0x37, 0x04, 0xea, 0x7f, 0xc0, 0x3f,
> +-    0x40, 0xf3, 0xe1, 0x78, 0xed, 0xec, 0xda, 0x49, 0xe5, 0x9b, 0x68, 0xce, 0xce, 0x33, 0x67, 0xe6,
> +-    0x9c, 0x79, 0xce, 0x73, 0x26, 0x86, 0xcd, 0x9e, 0xcb, 0xfa, 0xe1, 0x61, 0xa3, 0x4b, 0x86, 0xcd,
> +-    0x2e, 0xf1, 0x98, 0xed, 0x7a, 0x38, 0x70, 0xa2, 0xc3, 0x20, 0xf4, 0x98, 0x3b, 0xc4, 0xcd, 0x93,
> +-    0x56, 0x93, 0xd9, 0xf4, 0xb8, 0x49, 0xfb, 0xee, 0xb0, 0xe1, 0x07, 0x84, 0x11, 0x84, 0x26, 0xb0,
> +-    0x06, 0x9f, 0x6b, 0x9c, 0xb4, 0xca, 0x0f, 0x7b, 0x84, 0xf4, 0x06, 0xb8, 0x29, 0x10, 0x87, 0xe1,
> +-    0x51, 0xd3, 0xf6, 0xce, 0x25, 0xbc, 0xfc, 0x68, 0x76, 0x0a, 0x0f, 0x7d, 0x36, 0x9e, 0x5c, 0xeb,
> +-    0x91, 0x1e, 0x11, 0xc3, 0x26, 0x1f, 0xa9, 0xaf, 0xd5, 0xd9, 0x25, 0xfc, 0x28, 0x94, 0xd9, 0x43,
> +-    0x5f, 0x01, 0x3e, 0x5d, 0x78, 0x7e, 0xdb, 0x77, 0x9b, 0xec, 0xdc, 0xc7, 0xb4, 0x39, 0x24, 0xa1,
> +-    0xc7, 0xd4, 0xba, 0xcf, 0x6e, 0xb1, 0x4e, 0x84, 0x2d, 0xe2, 0x13, 0x6b, 0xcd, 0x3f, 0x52, 0x70,
> +-    0x7f, 0x27, 0xc0, 0x36, 0xc3, 0xaf, 0x6d, 0x7a, 0x6c, 0xe1, 0x1f, 0x42, 0x4c, 0x19, 0x5a, 0x87,
> +-    0x94, 0xeb, 0x18, 0x5a, 0x4d, 0xab, 0x17, 0xb6, 0xf5, 0xd1, 0x65, 0x35, 0xd5, 0xde, 0xb5, 0x52,
> +-    0xae, 0x83, 0xd6, 0x41, 0x3f, 0x0c, 0x3d, 0x67, 0x80, 0x8d, 0x14, 0x9f, 0xb3, 0x94, 0x85, 0x9a,
> +-    0xa0, 0x07, 0x84, 0xb0, 0x23, 0x6a, 0xa4, 0x6b, 0xe9, 0x7a, 0xb1, 0xf5, 0xff, 0x46, 0x34, 0x9b,
> +-    0x7c, 0xe3, 0xc6, 0xd7, 0xfc, 0xc0, 0x96, 0x82, 0xa1, 0x32, 0xe4, 0x19, 0x0e, 0x86, 0xae, 0x67,
> +-    0x0f, 0x8c, 0x4c, 0x4d, 0xab, 0xe7, 0xad, 0x2b, 0x1b, 0xad, 0x41, 0x96, 0x32, 0xc7, 0xf5, 0x8c,
> +-    0xac, 0xd8, 0x43, 0x1a, 0x7c, 0x6b, 0xca, 0x1c, 0x12, 0x32, 0x43, 0x97, 0x5b, 0x4b, 0x4b, 0x7d,
> +-    0xc7, 0x41, 0x60, 0xe4, 0xae, 0xbe, 0xe3, 0x20, 0x40, 0x15, 0x80, 0x6e, 0x1f, 0x77, 0x8f, 0x7d,
> +-    0xe2, 0x7a, 0xcc, 0xc8, 0x8b, 0xb9, 0xc8, 0x17, 0xf4, 0x11, 0xdc, 0xf7, 0xed, 0x00, 0x7b, 0xac,
> +-    0x13, 0x81, 0x15, 0x04, 0x6c, 0x55, 0x4e, 0xec, 0x4c, 0xc0, 0x0d, 0xc8, 0x11, 0x9f, 0xb9, 0xc4,
> +-    0xa3, 0x06, 0xd4, 0xb4, 0x7a, 0xb1, 0xb5, 0xd6, 0x90, 0x97, 0xd9, 0x18, 0x5f, 0x66, 0x63, 0xcb,
> +-    0x3b, 0xb7, 0xc6, 0x20, 0x73, 0x03, 0x50, 0x34, 0xa9, 0xd4, 0x27, 0x1e, 0xc5, 0x68, 0x15, 0xd2,
> +-    0xbe, 0x4a, 0x6b, 0xc9, 0xe2, 0x43, 0xf3, 0x25, 0x94, 0x76, 0xf1, 0x00, 0x33, 0xbc, 0x28, 0xf1,
> +-    0x4f, 0x20, 0x87, 0xcf, 0x70, 0xb7, 0xe3, 0x3a, 0x32, 0xf3, 0xdb, 0x30, 0xba, 0xac, 0xea, 0x7b,
> +-    0x67, 0xb8, 0xdb, 0xde, 0xb5, 0x74, 0x3e, 0xd5, 0x76, 0xcc, 0x5f, 0x34, 0x58, 0x19, 0xbb, 0x4b,
> +-    0xda, 0x12, 0x55, 0xa1, 0x88, 0xcf, 0x5c, 0xd6, 0xa1, 0xcc, 0x66, 0x21, 0x15, 0xde, 0x4a, 0x16,
> +-    0xf0, 0x4f, 0xaf, 0xc4, 0x17, 0xb4, 0x05, 0x05, 0x6e, 0x61, 0xa7, 0x63, 0x33, 0x23, 0x2d, 0xa2,
> +-    0x2d, 0x5f, 0x8b, 0xf6, 0xf5, 0x98, 0xba, 0xdb, 0xf9, 0x8b, 0xcb, 0xea, 0x9d, 0xdf, 0xfe, 0xae,
> +-    0x6a, 0x56, 0x5e, 0x2e, 0xdb, 0x62, 0xe6, 0x5f, 0x1a, 0x20, 0x7e, 0xb6, 0x83, 0x80, 0x74, 0x31,
> +-    0xa5, 0xcb, 0x08, 0x6e, 0x8a, 0x31, 0xe9, 0x24, 0xc6, 0x64, 0xe2, 0x19, 0x93, 0x4d, 0x60, 0x8c,
> +-    0x3e, 0xc5, 0x98, 0x3a, 0x64, 0xa8, 0x8f, 0xbb, 0x82, 0x47, 0x49, 0x37, 0x2c, 0x10, 0xe6, 0x03,
> +-    0xf8, 0xdf, 0x54, 0x78, 0x32, 0xd9, 0xe6, 0x4f, 0xb0, 0x6a, 0x61, 0xea, 0xfe, 0x88, 0x0f, 0xd8,
> +-    0xf9, 0x52, 0x62, 0x5e, 0x83, 0xec, 0xa9, 0xeb, 0xb0, 0xbe, 0x08, 0xb8, 0x64, 0x49, 0x83, 0x9f,
> +-    0xbf, 0x8f, 0xdd, 0x5e, 0x9f, 0x89, 0x70, 0x4b, 0x96, 0xb2, 0xcc, 0x17, 0x70, 0x97, 0x5f, 0xe1,
> +-    0x72, 0xb8, 0xf4, 0x6f, 0x0a, 0x4a, 0xca, 0x9b, 0xa2, 0xd2, 0x6d, 0x35, 0x41, 0x51, 0x2f, 0x3d,
> +-    0xa1, 0xde, 0x33, 0x9e, 0x78, 0xc1, 0x3a, 0x7e, 0xf0, 0x95, 0xd6, 0xa3, 0xa8, 0x4a, 0x9c, 0x7c,
> +-    0xac, 0x84, 0x42, 0xd2, 0xd0, 0x52, 0xd0, 0x25, 0xa9, 0x41, 0x94, 0x3d, 0xf9, 0x19, 0xf6, 0xcc,
> +-    0x54, 0x44, 0x61, 0x7e, 0x45, 0xc0, 0xbb, 0x54, 0x44, 0x34, 0xe7, 0xc5, 0xc4, 0x9c, 0x33, 0x28,
> +-    0xbe, 0x70, 0x07, 0x83, 0xa5, 0x50, 0x87, 0x27, 0xc2, 0xed, 0x8d, 0x8b, 0xa5, 0x64, 0x29, 0x8b,
> +-    0xdf, 0x8a, 0x3d, 0x18, 0x6b, 0x2e, 0x1f, 0x9a, 0x5d, 0x58, 0xd9, 0x19, 0x10, 0x8a, 0xdb, 0xfb,
> +-    0xcb, 0xe2, 0xac, 0xbc, 0x2f, 0x59, 0xa4, 0xd2, 0x30, 0x9f, 0x42, 0xf1, 0xc0, 0x75, 0x16, 0x29,
> +-    0x81, 0xf9, 0x0d, 0xdc, 0x95, 0x30, 0xc5, 0xb9, 0xcf, 0xa1, 0xe0, 0xcb, 0x22, 0xc3, 0xd4, 0xd0,
> +-    0x44, 0x6b, 0xa9, 0xc5, 0x92, 0x46, 0x95, 0x62, 0xdb, 0x3b, 0x22, 0xd6, 0x64, 0x89, 0x49, 0xe1,
> +-    0xc1, 0x44, 0xc5, 0x6f, 0xd2, 0xe0, 0x10, 0x64, 0x7c, 0x9b, 0xf5, 0x15, 0x95, 0xc5, 0x38, 0x2a,
> +-    0xfe, 0xe9, 0x9b, 0x88, 0x7f, 0x07, 0xee, 0x7f, 0xeb, 0x3b, 0x37, 0xec, 0xa8, 0x2d, 0x28, 0x04,
> +-    0x98, 0x92, 0x30, 0xe8, 0x62, 0x29, 0xc6, 0x49, 0xee, 0x27, 0x30, 0x55, 0xe8, 0x01, 0x5b, 0x4a,
> +-    0xa1, 0x3f, 0x16, 0x75, 0xce, 0x9d, 0x25, 0x76, 0xa9, 0xaf, 0xa0, 0xf8, 0xc6, 0x76, 0x97, 0xb3,
> +-    0x5d, 0x00, 0x77, 0xa5, 0x2f, 0xb5, 0xdb, 0x4c, 0xf1, 0x69, 0xf3, 0x8b, 0x2f, 0xf5, 0x4e, 0xed,
> +-    0x68, 0x43, 0x0a, 0xe3, 0x42, 0xf6, 0x6d, 0x4a, 0xc9, 0x9b, 0xd0, 0xef, 0x43, 0xce, 0x65, 0x9b,
> +-    0xc9, 0x63, 0x25, 0x5d, 0x8c, 0x84, 0x98, 0x75, 0x58, 0xd9, 0x21, 0x9e, 0x87, 0xbb, 0x8b, 0xf2,
> +-    0x64, 0xda, 0x70, 0xef, 0x0a, 0xa9, 0x36, 0x7a, 0x08, 0x79, 0xfe, 0x14, 0xed, 0x4c, 0x12, 0x9f,
> +-    0xe3, 0xf6, 0x81, 0xeb, 0xf0, 0x29, 0xfe, 0x5c, 0x13, 0x53, 0xb2, 0x59, 0xe7, 0xb8, 0xcd, 0xa7,
> +-    0x0c, 0xc8, 0x9d, 0xe0, 0x80, 0xba, 0x44, 0x16, 0x5b, 0xc1, 0x1a, 0x9b, 0xe6, 0x26, 0xdc, 0x7b,
> +-    0xd5, 0x0f, 0x99, 0x43, 0x4e, 0xbd, 0x45, 0xb7, 0xb6, 0x0a, 0x69, 0x8f, 0x9c, 0x0a, 0xd7, 0x79,
> +-    0x8b, 0x0f, 0x79, 0xba, 0x0e, 0xec, 0x90, 0x2e, 0xea, 0x23, 0xe6, 0xfb, 0x50, 0xb2, 0x30, 0x0d,
> +-    0x87, 0x8b, 0x80, 0xad, 0x5f, 0x01, 0x32, 0xbc, 0x16, 0xd0, 0x4b, 0xc8, 0x8a, 0x9e, 0x82, 0xa6,
> +-    0x8a, 0x58, 0xbd, 0xb6, 0x1b, 0xd1, 0xe6, 0x55, 0x7e, 0x3c, 0x07, 0xa1, 0x92, 0xf6, 0x06, 0x74,
> +-    0xf9, 0xc8, 0x42, 0x4f, 0xe3, 0xc0, 0xd7, 0x5e, 0xb5, 0xe5, 0x8d, 0x45, 0x30, 0xe5, 0x58, 0x1e,
> +-    0x33, 0x60, 0x89, 0xc7, 0xbc, 0x2a, 0xbd, 0xc4, 0x63, 0x46, 0xea, 0x69, 0x1f, 0x74, 0xf9, 0x28,
> +-    0x43, 0xb1, 0xe0, 0xa9, 0xf7, 0x5f, 0xd9, 0x9c, 0x07, 0x51, 0x0e, 0xdb, 0x90, 0xe1, 0x22, 0x89,
> +-    0xaa, 0x71, 0xd8, 0x88, 0xca, 0x96, 0x6b, 0xc9, 0x00, 0xe5, 0x6a, 0x0b, 0xb2, 0xe2, 0xaa, 0xe3,
> +-    0x23, 0x8d, 0xb2, 0xa0, 0xbc, 0x7e, 0x8d, 0xfc, 0x7b, 0xfc, 0x3f, 0x1e, 0xb4, 0x03, 0xba, 0x64,
> +-    0x41, 0x7c, 0x78, 0x53, 0x0c, 0x49, 0x74, 0xb2, 0x0f, 0x10, 0x79, 0x6d, 0x7f, 0x10, 0x7b, 0x4f,
> +-    0x71, 0x3a, 0x9e, 0xe8, 0xf0, 0x0b, 0xc8, 0xf0, 0x56, 0x1a, 0x9f, 0xa3, 0x48, 0x93, 0x4d, 0x74,
> +-    0xf0, 0x25, 0x64, 0xb8, 0x72, 0xa1, 0x58, 0xce, 0x5c, 0x7f, 0xdb, 0x26, 0xfa, 0x69, 0x43, 0xe1,
> +-    0xea, 0x4d, 0x88, 0xde, 0x4b, 0xc8, 0xd0, 0xd4, 0x93, 0x31, 0xd1, 0xd5, 0x1e, 0xe4, 0x54, 0xa3,
> +-    0x46, 0xb1, 0x34, 0x99, 0xee, 0xe2, 0x89, 0x6e, 0x9e, 0x83, 0x2e, 0xdb, 0x53, 0x7c, 0xd9, 0x5c,
> +-    0x6b, 0x5d, 0x73, 0x42, 0xcb, 0x70, 0x29, 0x8f, 0xcf, 0x71, 0xa4, 0x61, 0xc4, 0xf3, 0x70, 0xaa,
> +-    0x0b, 0x28, 0x61, 0xa0, 0xc9, 0xc2, 0x40, 0x17, 0x0a, 0xc3, 0x84, 0xd5, 0x16, 0xe4, 0x94, 0xc0,
> +-    0x26, 0x24, 0x6a, 0x4a, 0xa7, 0xcb, 0x4f, 0xe6, 0x62, 0x94, 0xcf, 0xe7, 0x90, 0x1f, 0x2b, 0x2a,
> +-    0x8a, 0x5d, 0x30, 0xa3, 0xb7, 0x49, 0x59, 0xdb, 0xde, 0xbf, 0x78, 0x5b, 0xb9, 0xf3, 0xe7, 0xdb,
> +-    0xca, 0x9d, 0x9f, 0x47, 0x15, 0xed, 0x62, 0x54, 0xd1, 0x7e, 0x1f, 0x55, 0xb4, 0x7f, 0x46, 0x15,
> +-    0xed, 0xfb, 0x4f, 0x6e, 0xfb, 0xf3, 0xc5, 0x26, 0xff, 0xf3, 0x5d, 0xea, 0x50, 0x17, 0x5b, 0x3c,
> +-    0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x19, 0x17, 0x87, 0x57, 0x00, 0x11, 0x00, 0x00,
> ++    // 1306 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4d, 0x6f, 0xdb, 0x46,
> ++    0x13, 0x0e, 0xf5, 0x41, 0x49, 0xa3, 0xc8, 0x71, 0xf6, 0x75, 0xf2, 0x32, 0x0a, 0x20, 0x29, 0x4c,
> ++    0x93, 0xaa, 0x2d, 0x40, 0xa1, 0x0a, 0x1a, 0x14, 0x31, 0x90, 0xc2, 0x76, 0xdc, 0x40, 0x4d, 0x5a,
> ++    0x1b, 0x4c, 0x8a, 0x04, 0xbd, 0x18, 0xb4, 0xb8, 0x91, 0x08, 0x4b, 0x5c, 0x96, 0xbb, 0x74, 0xa2,
> ++    0x02, 0x05, 0x7a, 0xea, 0xa1, 0xa7, 0xfe, 0xac, 0x1c, 0x0b, 0xf4, 0xd2, 0x4b, 0xd3, 0x46, 0xff,
> ++    0xa0, 0xc7, 0xde, 0x8a, 0xfd, 0x90, 0x45, 0x49, 0xa4, 0x14, 0x07, 0xba, 0x18, 0x3b, 0xdc, 0x67,
> ++    0x67, 0x67, 0x67, 0x9f, 0x79, 0x66, 0x65, 0xd8, 0xee, 0x79, 0xac, 0x1f, 0x1d, 0x5b, 0x5d, 0x32,
> ++    0x6c, 0x75, 0x89, 0xcf, 0x1c, 0xcf, 0xc7, 0xa1, 0x1b, 0x1f, 0x86, 0x91, 0xcf, 0xbc, 0x21, 0x6e,
> ++    0x9d, 0xb6, 0x5b, 0xcc, 0xa1, 0x27, 0x2d, 0xda, 0xf7, 0x86, 0x56, 0x10, 0x12, 0x46, 0x10, 0x9a,
> ++    0xc2, 0x2c, 0x3e, 0x67, 0x9d, 0xb6, 0xab, 0xd7, 0x7a, 0x84, 0xf4, 0x06, 0xb8, 0x25, 0x10, 0xc7,
> ++    0xd1, 0x8b, 0x96, 0xe3, 0x8f, 0x24, 0xbc, 0x7a, 0x7d, 0x7e, 0x0a, 0x0f, 0x03, 0x36, 0x99, 0xdc,
> ++    0xea, 0x91, 0x1e, 0x11, 0xc3, 0x16, 0x1f, 0xa9, 0xaf, 0xf5, 0xf9, 0x25, 0x3c, 0x14, 0xca, 0x9c,
> ++    0x61, 0xa0, 0x00, 0x77, 0x57, 0xc6, 0xef, 0x04, 0x5e, 0x8b, 0x8d, 0x02, 0x4c, 0x5b, 0x43, 0x12,
> ++    0xf9, 0x4c, 0xad, 0xbb, 0x77, 0x8e, 0x75, 0xe2, 0xd8, 0xe2, 0x7c, 0x62, 0xad, 0xf9, 0x7b, 0x06,
> ++    0x2e, 0xef, 0x85, 0xd8, 0x61, 0xf8, 0xa9, 0x43, 0x4f, 0x6c, 0xfc, 0x7d, 0x84, 0x29, 0x43, 0x57,
> ++    0x21, 0xe3, 0xb9, 0x86, 0xd6, 0xd0, 0x9a, 0xa5, 0x5d, 0x7d, 0xfc, 0xa6, 0x9e, 0xe9, 0x3c, 0xb0,
> ++    0x33, 0x9e, 0x8b, 0xae, 0x82, 0x7e, 0x1c, 0xf9, 0xee, 0x00, 0x1b, 0x19, 0x3e, 0x67, 0x2b, 0x0b,
> ++    0xb5, 0x40, 0x0f, 0x09, 0x61, 0x2f, 0xa8, 0x91, 0x6d, 0x64, 0x9b, 0xe5, 0xf6, 0xff, 0xad, 0x78,
> ++    0x36, 0xf9, 0xc6, 0xd6, 0xd7, 0x3c, 0x60, 0x5b, 0xc1, 0x50, 0x15, 0x8a, 0x0c, 0x87, 0x43, 0xcf,
> ++    0x77, 0x06, 0x46, 0xae, 0xa1, 0x35, 0x8b, 0xf6, 0x99, 0x8d, 0xb6, 0x20, 0x4f, 0x99, 0xeb, 0xf9,
> ++    0x46, 0x5e, 0xec, 0x21, 0x0d, 0xbe, 0x35, 0x65, 0x2e, 0x89, 0x98, 0xa1, 0xcb, 0xad, 0xa5, 0xa5,
> ++    0xbe, 0xe3, 0x30, 0x34, 0x0a, 0x67, 0xdf, 0x71, 0x18, 0xa2, 0x1a, 0x40, 0xb7, 0x8f, 0xbb, 0x27,
> ++    0x01, 0xf1, 0x7c, 0x66, 0x14, 0xc5, 0x5c, 0xec, 0x0b, 0xfa, 0x04, 0x2e, 0x07, 0x4e, 0x88, 0x7d,
> ++    0x76, 0x14, 0x83, 0x95, 0x04, 0x6c, 0x53, 0x4e, 0xec, 0x4d, 0xc1, 0x16, 0x14, 0x48, 0xc0, 0x3c,
> ++    0xe2, 0x53, 0x03, 0x1a, 0x5a, 0xb3, 0xdc, 0xde, 0xb2, 0xe4, 0x65, 0x5a, 0x93, 0xcb, 0xb4, 0x76,
> ++    0xfc, 0x91, 0x3d, 0x01, 0x99, 0xb7, 0x01, 0xc5, 0x93, 0x4a, 0x03, 0xe2, 0x53, 0x8c, 0x36, 0x21,
> ++    0x1b, 0xa8, 0xb4, 0x56, 0x6c, 0x3e, 0x34, 0x1f, 0x43, 0xe5, 0x01, 0x1e, 0x60, 0x86, 0x57, 0x25,
> ++    0xfe, 0x26, 0x14, 0xf0, 0x2b, 0xdc, 0x3d, 0xf2, 0x5c, 0x99, 0xf9, 0x5d, 0x18, 0xbf, 0xa9, 0xeb,
> ++    0xfb, 0xaf, 0x70, 0xb7, 0xf3, 0xc0, 0xd6, 0xf9, 0x54, 0xc7, 0x35, 0x7f, 0xd6, 0x60, 0x63, 0xe2,
> ++    0x2e, 0x6d, 0x4b, 0x54, 0x87, 0x32, 0x7e, 0xe5, 0xb1, 0x23, 0xca, 0x1c, 0x16, 0x51, 0xe1, 0xad,
> ++    0x62, 0x03, 0xff, 0xf4, 0x44, 0x7c, 0x41, 0x3b, 0x50, 0xe2, 0x16, 0x76, 0x8f, 0x1c, 0x66, 0x64,
> ++    0xc5, 0x69, 0xab, 0x0b, 0xa7, 0x7d, 0x3a, 0xa1, 0xee, 0x6e, 0xf1, 0xf5, 0x9b, 0xfa, 0x85, 0x5f,
> ++    0xff, 0xaa, 0x6b, 0x76, 0x51, 0x2e, 0xdb, 0x61, 0xe6, 0x9f, 0x1a, 0x20, 0x1e, 0xdb, 0x61, 0x48,
> ++    0xba, 0x98, 0xd2, 0x75, 0x1c, 0x6e, 0x86, 0x31, 0xd9, 0x34, 0xc6, 0xe4, 0x92, 0x19, 0x93, 0x4f,
> ++    0x61, 0x8c, 0x3e, 0xc3, 0x98, 0x26, 0xe4, 0x68, 0x80, 0xbb, 0x82, 0x47, 0x69, 0x37, 0x2c, 0x10,
> ++    0xe6, 0x15, 0xf8, 0xdf, 0xcc, 0xf1, 0x64, 0xb2, 0xcd, 0x1f, 0x61, 0xd3, 0xc6, 0xd4, 0xfb, 0x01,
> ++    0x1f, 0xb2, 0xd1, 0x5a, 0xce, 0xbc, 0x05, 0xf9, 0x97, 0x9e, 0xcb, 0xfa, 0xe2, 0xc0, 0x15, 0x5b,
> ++    0x1a, 0x3c, 0xfe, 0x3e, 0xf6, 0x7a, 0x7d, 0x26, 0x8e, 0x5b, 0xb1, 0x95, 0x65, 0x3e, 0x82, 0x8b,
> ++    0xfc, 0x0a, 0xd7, 0xc3, 0xa5, 0x7f, 0x32, 0x50, 0x51, 0xde, 0x14, 0x95, 0xce, 0xab, 0x09, 0x8a,
> ++    0x7a, 0xd9, 0x29, 0xf5, 0xee, 0xf0, 0xc4, 0x0b, 0xd6, 0xf1, 0xc0, 0x37, 0xda, 0xd7, 0xe3, 0x2a,
> ++    0x71, 0xfa, 0xa9, 0x12, 0x0a, 0x49, 0x43, 0x5b, 0x41, 0xd7, 0xa4, 0x06, 0x71, 0xf6, 0x14, 0xe7,
> ++    0xd8, 0x33, 0x57, 0x11, 0xa5, 0xe5, 0x15, 0x01, 0xef, 0x53, 0x11, 0xf1, 0x9c, 0x97, 0x53, 0x73,
> ++    0xce, 0xa0, 0xfc, 0xc8, 0x1b, 0x0c, 0xd6, 0x42, 0x1d, 0x9e, 0x08, 0xaf, 0x37, 0x29, 0x96, 0x8a,
> ++    0xad, 0x2c, 0x7e, 0x2b, 0xce, 0x60, 0xa2, 0xb9, 0x7c, 0x68, 0x76, 0x61, 0x63, 0x6f, 0x40, 0x28,
> ++    0xee, 0x1c, 0xac, 0x8b, 0xb3, 0xf2, 0xbe, 0x64, 0x91, 0x4a, 0xc3, 0xbc, 0x05, 0xe5, 0x43, 0xcf,
> ++    0x5d, 0xa5, 0x04, 0xe6, 0x37, 0x70, 0x51, 0xc2, 0x14, 0xe7, 0xee, 0x43, 0x29, 0x90, 0x45, 0x86,
> ++    0xa9, 0xa1, 0x89, 0xd6, 0xd2, 0x48, 0x24, 0x8d, 0x2a, 0xc5, 0x8e, 0xff, 0x82, 0xd8, 0xd3, 0x25,
> ++    0x26, 0x85, 0x2b, 0x53, 0x15, 0x7f, 0x97, 0x06, 0x87, 0x20, 0x17, 0x38, 0xac, 0xaf, 0xa8, 0x2c,
> ++    0xc6, 0x71, 0xf1, 0xcf, 0xbe, 0x8b, 0xf8, 0xff, 0xab, 0xc1, 0xe5, 0x6f, 0x03, 0xf7, 0x1d, 0x5b,
> ++    0x6a, 0x1b, 0x4a, 0x21, 0xa6, 0x24, 0x0a, 0xbb, 0x58, 0xaa, 0x71, 0x9a, 0xff, 0x29, 0x0c, 0x3d,
> ++    0x87, 0xb2, 0xe3, 0xfb, 0x84, 0x39, 0x93, 0xa8, 0x78, 0x62, 0xee, 0x5a, 0x8b, 0x2f, 0x18, 0x6b,
> ++    0x21, 0x0e, 0x6b, 0x67, 0xba, 0x70, 0xdf, 0x67, 0xe1, 0xc8, 0x8e, 0xbb, 0xaa, 0xde, 0x87, 0xcd,
> ++    0x79, 0x00, 0xa7, 0xcc, 0x09, 0x1e, 0xc9, 0xd0, 0x6d, 0x3e, 0xe4, 0x77, 0x7c, 0xea, 0x0c, 0xa2,
> ++    0x49, 0xc5, 0x4b, 0xe3, 0x5e, 0xe6, 0x73, 0x4d, 0x69, 0x50, 0xc8, 0xd6, 0xa2, 0x41, 0x37, 0x84,
> ++    0x04, 0x71, 0x67, 0xa9, 0x0d, 0xf4, 0x2b, 0x28, 0x3f, 0x73, 0xbc, 0xf5, 0x6c, 0x17, 0xc2, 0x45,
> ++    0xe9, 0x4b, 0xed, 0x36, 0xa7, 0x0b, 0xda, 0x72, 0x5d, 0xc8, 0xbc, 0x57, 0xa7, 0xbc, 0x2d, 0x35,
> ++    0x7b, 0x65, 0x61, 0x6c, 0x4b, 0x35, 0x9e, 0x56, 0xc6, 0xc7, 0xbc, 0xcc, 0x1c, 0x26, 0xc3, 0x4a,
> ++    0xa3, 0x8c, 0x84, 0x98, 0x4d, 0xd8, 0xd8, 0x23, 0xbe, 0x8f, 0xbb, 0xab, 0xf2, 0x64, 0x3a, 0x70,
> ++    0xe9, 0x0c, 0xa9, 0x36, 0xba, 0x06, 0x45, 0xfe, 0x4a, 0x3e, 0x9a, 0x26, 0xbe, 0xc0, 0xed, 0x43,
> ++    0xcf, 0xe5, 0x53, 0x9c, 0x67, 0x62, 0x4a, 0xbe, 0x23, 0x0a, 0xdc, 0xe6, 0x53, 0x06, 0x14, 0x4e,
> ++    0x71, 0x48, 0x3d, 0x22, 0x75, 0xa0, 0x64, 0x4f, 0x4c, 0x73, 0x1b, 0x2e, 0x3d, 0xe9, 0x47, 0xcc,
> ++    0x25, 0x2f, 0xfd, 0x55, 0xb7, 0xb6, 0x09, 0x59, 0x9f, 0xbc, 0x14, 0xae, 0x8b, 0x36, 0x1f, 0xf2,
> ++    0x74, 0x1d, 0x3a, 0x11, 0x5d, 0xd5, 0xe2, 0xcc, 0x0f, 0xa1, 0x62, 0x63, 0x1a, 0x0d, 0x57, 0x01,
> ++    0xdb, 0xbf, 0x00, 0xe4, 0x78, 0x75, 0xa0, 0xc7, 0x90, 0x17, 0xed, 0x0e, 0x35, 0x92, 0xca, 0x28,
> ++    0xde, 0x57, 0xab, 0x37, 0x96, 0x20, 0x54, 0xd2, 0x9e, 0x81, 0x2e, 0xdf, 0x7f, 0xe8, 0x56, 0x12,
> ++    0x78, 0xe1, 0xc1, 0x5d, 0xbd, 0xbd, 0x0a, 0xa6, 0x1c, 0xcb, 0x30, 0x43, 0x96, 0x1a, 0xe6, 0x59,
> ++    0xe9, 0xa5, 0x86, 0x19, 0xab, 0xa7, 0x03, 0xd0, 0xe5, 0x7b, 0x11, 0x25, 0x82, 0x67, 0x9e, 0xa6,
> ++    0x55, 0x73, 0x19, 0x44, 0x39, 0xec, 0x40, 0x8e, 0xeb, 0x37, 0xaa, 0x27, 0x61, 0x63, 0x0d, 0xa0,
> ++    0xda, 0x48, 0x07, 0x28, 0x57, 0x3b, 0x90, 0x17, 0x57, 0x9d, 0x7c, 0xd2, 0x38, 0x0b, 0xaa, 0x57,
> ++    0x17, 0xc8, 0xbf, 0xcf, 0x7f, 0x8c, 0xa1, 0x3d, 0xd0, 0x25, 0x0b, 0x92, 0x8f, 0x37, 0xc3, 0x90,
> ++    0x54, 0x27, 0x07, 0x00, 0xb1, 0x1f, 0x02, 0x1f, 0x25, 0xde, 0x53, 0x52, 0x8b, 0x49, 0x75, 0xf8,
> ++    0x05, 0xe4, 0x78, 0x97, 0x4f, 0xce, 0x51, 0xac, 0xff, 0xa7, 0x3a, 0xf8, 0x12, 0x72, 0x5c, 0xb9,
> ++    0x50, 0x22, 0x67, 0x16, 0x9f, 0xdd, 0xa9, 0x7e, 0x3a, 0x50, 0x3a, 0x7b, 0xae, 0xa2, 0x0f, 0x52,
> ++    0x32, 0x34, 0xf3, 0x9a, 0x4d, 0x75, 0xb5, 0x0f, 0x05, 0xf5, 0x86, 0x40, 0x89, 0x34, 0x99, 0x7d,
> ++    0x60, 0xa4, 0xba, 0x79, 0x08, 0xba, 0x6c, 0x58, 0xc9, 0x65, 0xb3, 0xd0, 0xcc, 0x96, 0x1c, 0x2d,
> ++    0xc7, 0xa5, 0x3c, 0x39, 0xc7, 0xb1, 0x86, 0x91, 0xcc, 0xc3, 0x99, 0x2e, 0xa0, 0x84, 0x81, 0xa6,
> ++    0x0b, 0x03, 0x5d, 0x29, 0x0c, 0x53, 0x56, 0xdb, 0x50, 0x50, 0x02, 0x9b, 0x92, 0xa8, 0x19, 0x9d,
> ++    0xae, 0xde, 0x5c, 0x8a, 0x51, 0x3e, 0x1f, 0x42, 0x71, 0xa2, 0xa8, 0x28, 0x71, 0xc1, 0x9c, 0xde,
> ++    0xa6, 0x65, 0x6d, 0xf7, 0xe0, 0xf5, 0xdb, 0xda, 0x85, 0x3f, 0xde, 0xd6, 0x2e, 0xfc, 0x34, 0xae,
> ++    0x69, 0xaf, 0xc7, 0x35, 0xed, 0xb7, 0x71, 0x4d, 0xfb, 0x7b, 0x5c, 0xd3, 0xbe, 0xfb, 0xec, 0xbc,
> ++    0xff, 0x59, 0xd9, 0xe6, 0x7f, 0x9e, 0x67, 0x8e, 0x75, 0xb1, 0xc5, 0x9d, 0xff, 0x02, 0x00, 0x00,
> ++    0xff, 0xff, 0xd3, 0xbf, 0xc3, 0xa9, 0x9b, 0x11, 0x00, 0x00,
> + }
> +
> + func (m *CreateTaskRequest) Marshal() (dAtA []byte, err error) {
> +@@ -2000,6 +2007,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintShim(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -2826,6 +2852,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovShim(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovShim(uint64(len(k))) + 1 + len(v) + sovShim(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovShim(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3237,9 +3271,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ID:` + fmt.Sprintf("%v", this.ID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4019,10 +4064,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4092,10 +4134,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4210,10 +4249,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4335,10 +4371,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4605,10 +4638,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4659,10 +4689,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4815,10 +4842,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4933,10 +4957,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5289,10 +5310,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5446,10 +5464,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5584,10 +5599,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5670,10 +5682,7 @@ func (m *PidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5758,10 +5767,7 @@ func (m *PidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5912,10 +5918,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6028,16 +6031,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowShim
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowShim
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipShim(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipShim(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6152,10 +6279,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6225,10 +6349,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6343,10 +6464,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6449,10 +6567,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6535,10 +6650,7 @@ func (m *StatsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6625,10 +6737,7 @@ func (m *StatsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6711,10 +6820,7 @@ func (m *ConnectRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6835,10 +6941,7 @@ func (m *ConnectResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6941,10 +7044,7 @@ func (m *ShutdownRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7027,10 +7127,7 @@ func (m *PauseRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7113,10 +7210,7 @@ func (m *ResumeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +index 9a2374b56..fae67de4f 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +@@ -844,7 +844,7 @@ func (p *unmarshal) field(file *generator.FileDescriptor, msg *generator.Descrip
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1484,12 +1484,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> +-                    p.In()
> +-                    p.P(`return ErrInvalidLength`, p.localName)
> +-                    p.Out()
> +-                    p.P(`}`)
> +-                    p.P(`if (iNdEx + skippy) < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1512,12 +1507,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +             p.P(`return err`)
> +             p.Out()
> +             p.P(`}`)
> +-            p.P(`if skippy < 0 {`)
> +-            p.In()
> +-            p.P(`return ErrInvalidLength`, p.localName)
> +-            p.Out()
> +-            p.P(`}`)
> +-            p.P(`if (iNdEx + skippy) < 0 {`)
> ++            p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +             p.In()
> +             p.P(`return ErrInvalidLength`, p.localName)
> +             p.Out()
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +index 1ce0be2fa..f85c0cc81 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +@@ -318,7 +318,7 @@ func unescape(s string) (ch string, tail string, err error) {
> +             if i > utf8.MaxRune {
> +                     return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
> +             }
> +-            return string(i), s, nil
> ++            return string(rune(i)), s, nil
> +     }
> +     return "", "", fmt.Errorf(`unknown escape \%c`, r)
> + }
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +index 98e269d54..e3d4d9490 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +@@ -592,10 +592,7 @@ func (m *Any) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthAny
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthAny
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +index 58bf4b53b..83e886920 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +@@ -1677,10 +1677,7 @@ func (m *Api) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1920,10 +1917,7 @@ func (m *Method) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2038,10 +2032,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +index 3959f0669..4deafcb1c 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +@@ -415,10 +415,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDuration
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDuration
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +index 17e3aa558..9e94748b3 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +@@ -360,10 +360,7 @@ func (m *Empty) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEmpty
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEmpty
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +index 7226b57f7..6ae346d92 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +@@ -636,10 +636,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthFieldMask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthFieldMask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +index 61045ce10..8e6ce71b2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +@@ -422,10 +422,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSourceContext
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSourceContext
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +index cea553eef..c0457312e 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +@@ -1862,7 +1862,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthStruct
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1879,10 +1879,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2087,10 +2084,7 @@ func (m *Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2175,10 +2169,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +index b81875267..45db7b3bb 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +@@ -437,10 +437,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTimestamp
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTimestamp
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +index 13b7ec02f..791427bb2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +@@ -2483,10 +2483,7 @@ func (m *Type) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2795,10 +2792,7 @@ func (m *Field) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3004,10 +2998,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3143,10 +3134,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3265,10 +3253,7 @@ func (m *Option) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +index 8f1edb57d..8d415420a 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +@@ -2020,10 +2020,7 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2085,10 +2082,7 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2158,10 +2152,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2231,10 +2222,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2304,10 +2292,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2377,10 +2362,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2451,10 +2433,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2537,10 +2516,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2625,10 +2601,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +--
> +2.30.2
> +
> --
> 2.30.2
>

>
>
>





Re: [hardknott][PATCH] containerd: fix CVE-2021-3121

Martin Jansa
 

This seems to introduce:
ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: Fuzz detected:

Applying patch CVE-2021-3121.patch
patching file src/import/api/events/container.pb.go
patching file src/import/api/events/content.pb.go
patching file src/import/api/events/image.pb.go
patching file src/import/api/events/namespace.pb.go
patching file src/import/api/events/snapshot.pb.go
patching file src/import/api/events/task.pb.go
patching file src/import/api/services/containers/v1/containers.pb.go
patching file src/import/api/services/content/v1/content.pb.go
patching file src/import/api/services/diff/v1/diff.pb.go
patching file src/import/api/services/events/v1/events.pb.go
patching file src/import/api/services/images/v1/images.pb.go
patching file src/import/api/services/introspection/v1/introspection.pb.go
patching file src/import/api/services/leases/v1/leases.pb.go
patching file src/import/api/services/namespaces/v1/namespace.pb.go
patching file src/import/api/services/snapshots/v1/snapshots.pb.go
patching file src/import/api/services/tasks/v1/tasks.pb.go
Hunk #1 succeeded at 9 with fuzz 2.
patching file src/import/api/services/ttrpc/events/v1/events.pb.go
patching file src/import/api/services/version/v1/version.pb.go
patching file src/import/api/types/descriptor.pb.go
patching file src/import/api/types/metrics.pb.go
patching file src/import/api/types/mount.pb.go
patching file src/import/api/types/platform.pb.go
patching file src/import/api/types/task/task.pb.go
patching file src/import/runtime/linux/runctypes/runc.pb.go
patching file src/import/runtime/v1/shim/v1/shim.pb.go
patching file src/import/runtime/v2/runc/options/oci.pb.go
patching file src/import/runtime/v2/task/shim.pb.go
Hunk #1 succeeded at 10 with fuzz 1.
patching file src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
patching file src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
patching file src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go


The context lines in the patches can be updated with devtool:

    devtool modify containerd-opencontainers
    devtool finish --force-patch-refresh containerd-opencontainers <layer_path>

Don't forget to review changes done by devtool!

ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: QA Issue: Patch log indicates that patches do not apply cleanly. [patch-fuzz]

will send a fix shortly unless you're already cooking one.

On Tue, Apr 20, 2021 at 11:01 PM Bruce Ashfield <bruce.ashfield@...> wrote:

In message: [meta-virtualization][hardknott][PATCH] containerd: fix CVE-2021-3121
on 20/04/2021 Trevor Gamblin wrote:

> The master branch contains an uprev for containerd that includes the
> fix, so backport the patch separately for hardknott.
>
> Tested by pulling a hello-world image with podman to
> core-image-full-cmdline, with the following added to local.conf:
>
> DISTRO_FEATURES_append = " systemd seccomp"
> VIRTUAL-RUNTIME_init_manager = "systemd"
> DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
> VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
> NETWORK_MANAGER = "systemd"
> IMAGE_ROOTFS_EXTRA_SPACE = "8192000"
> PREFERRED_PROVIDER_virtual/containerd = "containerd-opencontainers"
> IMAGE_INSTALL_append = " podman virtual/containerd"

Thanks for the fix! I've queued it for hardknott.

Bruce

>
> Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> ---
>  .../containerd-opencontainers_git.bb          |    1 +
>  .../containerd/files/CVE-2021-3121.patch      | 4035 +++++++++++++++++
>  2 files changed, 4036 insertions(+)
>  create mode 100644 recipes-containers/containerd/files/CVE-2021-3121.patch
>
> diff --git a/recipes-containers/containerd/containerd-opencontainers_git.bb b/recipes-containers/containerd/containerd-opencontainers_git.bb
> index efa3626..9d33676 100644
> --- a/recipes-containers/containerd/containerd-opencontainers_git.bb
> +++ b/recipes-containers/containerd/containerd-opencontainers_git.bb
> @@ -9,6 +9,7 @@ SRCREV = "33d90b72d1e44987118ac111d4f7a108d412099b"
>  SRC_URI = "git://github.com/containerd/containerd;branch=release/1.4 \
>             file://0001-build-use-oe-provided-GO-and-flags.patch \
>             file://0001-Add-build-option-GODEBUG-1.patch \
> +           file://CVE-2021-3121.patch \
>            "

>  # Apache-2.0 for containerd
> diff --git a/recipes-containers/containerd/files/CVE-2021-3121.patch b/recipes-containers/containerd/files/CVE-2021-3121.patch
> new file mode 100644
> index 0000000..1a2c0f4
> --- /dev/null
> +++ b/recipes-containers/containerd/files/CVE-2021-3121.patch
> @@ -0,0 +1,4035 @@
> +From 9bd7f1043ce566d4600a8c61cd45bc99b2b17e36 Mon Sep 17 00:00:00 2001
> +From: Trevor Gamblin <trevor.gamblin@...>
> +Date: Tue, 20 Apr 2021 11:21:08 -0400
> +Subject: [PATCH] CVE-2021-3121
> +
> +Backports the fix at https://github.com/containerd/containerd/commit/1423e919,
> +but with extra refactors for pulled in from later versions to make the
> +fix apply correctly.
> +
> +Upstream-Status: Backport
> +CVE: CVE-2021-3121
> +
> +Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> +---
> + src/import/api/events/container.pb.go                    |  22 +-
> + src/import/api/events/content.pb.go                      |   5 +-
> + src/import/api/events/image.pb.go                        |  19 +-
> + src/import/api/events/namespace.pb.go                    |  19 +-
> + src/import/api/events/snapshot.pb.go                     |  15 +-
> + src/import/api/events/task.pb.go                         |  55 +-
> + src/import/api/services/containers/v1/containers.pb.go   |  64 +--
> + src/import/api/services/content/v1/content.pb.go         |  94 +---
> + src/import/api/services/diff/v1/diff.pb.go               |  24 +-
> + src/import/api/services/events/v1/events.pb.go           |  20 +-
> + src/import/api/services/images/v1/images.pb.go           |  52 +-
> + src/import/.../introspection/v1/introspection.pb.go      |  22 +-
> + src/import/api/services/leases/v1/leases.pb.go           |  59 +--
> + src/import/api/services/namespaces/v1/namespace.pb.go    |  52 +-
> + src/import/api/services/snapshots/v1/snapshots.pb.go     |  98 +---
> + src/import/api/services/tasks/v1/tasks.pb.go             | 484 +++++++++++-------
> + src/import/api/services/ttrpc/events/v1/events.pb.go     |  10 +-
> + src/import/api/services/version/v1/version.pb.go         |   5 +-
> + src/import/api/types/descriptor.pb.go                    |   7 +-
> + src/import/api/types/metrics.pb.go                       |   5 +-
> + src/import/api/types/mount.pb.go                         |   5 +-
> + src/import/api/types/platform.pb.go                      |   5 +-
> + src/import/api/types/task/task.pb.go                     |  10 +-
> + src/import/runtime/linux/runctypes/runc.pb.go            |  20 +-
> + src/import/runtime/v1/shim/v1/shim.pb.go                 | 100 +---
> + src/import/runtime/v2/runc/options/oci.pb.go             |  15 +-
> + src/import/runtime/v2/task/shim.pb.go                    | 470 ++++++++++-------
> + src/import/.../protobuf/plugin/unmarshal/unmarshal.go    |  16 +-
> + src/import/.../gogo/protobuf/proto/text_parser.go        |   2 +-
> + src/import/.../github.com/gogo/protobuf/types/any.pb.go  |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/api.pb.go  |  15 +-
> + src/import/.../gogo/protobuf/types/duration.pb.go        |   5 +-
> + src/import/.../gogo/protobuf/types/empty.pb.go           |   5 +-
> + src/import/.../gogo/protobuf/types/field_mask.pb.go      |   5 +-
> + src/import/.../gogo/protobuf/types/source_context.pb.go  |   5 +-
> + src/import/.../gogo/protobuf/types/struct.pb.go          |  17 +-
> + src/import/.../gogo/protobuf/types/timestamp.pb.go       |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/type.pb.go |  25 +-
> + src/import/.../gogo/protobuf/types/wrappers.pb.go        |  45 +-
> + 39 files changed, 773 insertions(+), 1133 deletions(-)
> +
> +diff --git a/src/import/api/events/container.pb.go b/src/import/api/events/container.pb.go
> +index 0c1e0a939..fe002e073 100644
> +--- a/src/import/api/events/container.pb.go
> ++++ b/src/import/api/events/container.pb.go
> +@@ -835,10 +835,7 @@ func (m *ContainerCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -957,10 +954,7 @@ func (m *ContainerCreate_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1185,7 +1179,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainer
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1234,10 +1228,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1320,10 +1311,7 @@ func (m *ContainerDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/content.pb.go b/src/import/api/events/content.pb.go
> +index 959ea72d8..0a7ec9325 100644
> +--- a/src/import/api/events/content.pb.go
> ++++ b/src/import/api/events/content.pb.go
> +@@ -257,10 +257,7 @@ func (m *ContentDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/image.pb.go b/src/import/api/events/image.pb.go
> +index 13f60b017..747026945 100644
> +--- a/src/import/api/events/image.pb.go
> ++++ b/src/import/api/events/image.pb.go
> +@@ -697,7 +697,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *ImageDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/namespace.pb.go b/src/import/api/events/namespace.pb.go
> +index 37c3b78cf..d406a987e 100644
> +--- a/src/import/api/events/namespace.pb.go
> ++++ b/src/import/api/events/namespace.pb.go
> +@@ -697,7 +697,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *NamespaceDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/snapshot.pb.go b/src/import/api/events/snapshot.pb.go
> +index 539297004..bec25c3a7 100644
> +--- a/src/import/api/events/snapshot.pb.go
> ++++ b/src/import/api/events/snapshot.pb.go
> +@@ -548,10 +548,7 @@ func (m *SnapshotPrepare) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -666,10 +663,7 @@ func (m *SnapshotCommit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -752,10 +746,7 @@ func (m *SnapshotRemove) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/task.pb.go b/src/import/api/events/task.pb.go
> +index 0f16695e3..f8f3a3f3d 100644
> +--- a/src/import/api/events/task.pb.go
> ++++ b/src/import/api/events/task.pb.go
> +@@ -1905,10 +1905,7 @@ func (m *TaskCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2010,10 +2007,7 @@ func (m *TaskStart) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2199,10 +2193,7 @@ func (m *TaskDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2369,10 +2360,7 @@ func (m *TaskIO) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2558,10 +2546,7 @@ func (m *TaskExit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2644,10 +2629,7 @@ func (m *TaskOOM) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2762,10 +2744,7 @@ func (m *TaskExecAdded) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2899,10 +2878,7 @@ func (m *TaskExecStarted) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2985,10 +2961,7 @@ func (m *TaskPaused) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3071,10 +3044,7 @@ func (m *TaskResumed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3189,10 +3159,7 @@ func (m *TaskCheckpointed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/containers/v1/containers.pb.go b/src/import/api/services/containers/v1/containers.pb.go
> +index d951b2683..af56c7de2 100644
> +--- a/src/import/api/services/containers/v1/containers.pb.go
> ++++ b/src/import/api/services/containers/v1/containers.pb.go
> +@@ -2106,7 +2106,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2469,7 +2469,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2486,10 +2486,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2608,10 +2605,7 @@ func (m *Container_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2694,10 +2688,7 @@ func (m *GetContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2781,10 +2772,7 @@ func (m *GetContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2867,10 +2855,7 @@ func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2955,10 +2940,7 @@ func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3042,10 +3024,7 @@ func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3129,10 +3108,7 @@ func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3252,10 +3228,7 @@ func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3339,10 +3312,7 @@ func (m *UpdateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3425,10 +3395,7 @@ func (m *DeleteContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3515,10 +3482,7 @@ func (m *ListContainerMessage) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/content/v1/content.pb.go b/src/import/api/services/content/v1/content.pb.go
> +index 1cf0aaa91..97c7d4a92 100644
> +--- a/src/import/api/services/content/v1/content.pb.go
> ++++ b/src/import/api/services/content/v1/content.pb.go
> +@@ -3280,7 +3280,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3297,10 +3297,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3383,10 +3380,7 @@ func (m *InfoRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3470,10 +3464,7 @@ func (m *InfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3593,10 +3584,7 @@ func (m *UpdateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3680,10 +3668,7 @@ func (m *UpdateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3766,10 +3751,7 @@ func (m *ListContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3854,10 +3836,7 @@ func (m *ListContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3940,10 +3919,7 @@ func (m *DeleteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4064,10 +4040,7 @@ func (m *ReadContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4171,10 +4144,7 @@ func (m *ReadContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4393,10 +4363,7 @@ func (m *Status) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4479,10 +4446,7 @@ func (m *StatusRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4569,10 +4533,7 @@ func (m *StatusResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4655,10 +4616,7 @@ func (m *ListStatusesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4743,10 +4701,7 @@ func (m *ListStatusesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,7 +5017,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -5079,10 +5034,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5288,10 +5240,7 @@ func (m *WriteContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5374,10 +5323,7 @@ func (m *AbortRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/diff/v1/diff.pb.go b/src/import/api/services/diff/v1/diff.pb.go
> +index 48379234d..b1450ceb8 100644
> +--- a/src/import/api/services/diff/v1/diff.pb.go
> ++++ b/src/import/api/services/diff/v1/diff.pb.go
> +@@ -1063,7 +1063,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1080,10 +1080,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1170,10 +1167,7 @@ func (m *ApplyResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1466,7 +1460,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1483,10 +1477,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1573,10 +1564,7 @@ func (m *DiffResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/events/v1/events.pb.go b/src/import/api/services/events/v1/events.pb.go
> +index a1674f862..4373f3bf2 100644
> +--- a/src/import/api/services/events/v1/events.pb.go
> ++++ b/src/import/api/services/events/v1/events.pb.go
> +@@ -916,10 +916,7 @@ func (m *PublishRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1006,10 +1003,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1092,10 +1086,7 @@ func (m *SubscribeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1279,10 +1270,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/images/v1/images.pb.go b/src/import/api/services/images/v1/images.pb.go
> +index db912b68b..de08cc083 100644
> +--- a/src/import/api/services/images/v1/images.pb.go
> ++++ b/src/import/api/services/images/v1/images.pb.go
> +@@ -1707,7 +1707,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImages
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1823,10 +1823,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1909,10 +1906,7 @@ func (m *GetImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1999,10 +1993,7 @@ func (m *GetImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2086,10 +2077,7 @@ func (m *CreateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2173,10 +2161,7 @@ func (m *CreateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2296,10 +2281,7 @@ func (m *UpdateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2383,10 +2365,7 @@ func (m *UpdateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2469,10 +2448,7 @@ func (m *ListImagesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2557,10 +2533,7 @@ func (m *ListImagesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2663,10 +2636,7 @@ func (m *DeleteImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/introspection/v1/introspection.pb.go b/src/import/api/services/introspection/v1/introspection.pb.go
> +index b9f912b09..d23c8b61a 100644
> +--- a/src/import/api/services/introspection/v1/introspection.pb.go
> ++++ b/src/import/api/services/introspection/v1/introspection.pb.go
> +@@ -1098,7 +1098,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthIntrospection
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1183,10 +1183,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1269,10 +1266,7 @@ func (m *PluginsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1357,10 +1351,7 @@ func (m *PluginsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1443,10 +1434,7 @@ func (m *ServerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/leases/v1/leases.pb.go b/src/import/api/services/leases/v1/leases.pb.go
> +index 4dbac3e09..5e7cab71f 100644
> +--- a/src/import/api/services/leases/v1/leases.pb.go
> ++++ b/src/import/api/services/leases/v1/leases.pb.go
> +@@ -1906,7 +1906,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1923,10 +1923,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2119,7 +2116,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2136,10 +2133,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2226,10 +2220,7 @@ func (m *CreateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2332,10 +2323,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2418,10 +2406,7 @@ func (m *ListRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2506,10 +2491,7 @@ func (m *ListResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2624,10 +2606,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2743,10 +2722,7 @@ func (m *AddResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2862,10 +2838,7 @@ func (m *DeleteResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2948,10 +2921,7 @@ func (m *ListResourcesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3036,10 +3006,7 @@ func (m *ListResourcesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/namespaces/v1/namespace.pb.go b/src/import/api/services/namespaces/v1/namespace.pb.go
> +index 0d1d650ba..76f9e1172 100644
> +--- a/src/import/api/services/namespaces/v1/namespace.pb.go
> ++++ b/src/import/api/services/namespaces/v1/namespace.pb.go
> +@@ -1609,7 +1609,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1626,10 +1626,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1712,10 +1709,7 @@ func (m *GetNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1799,10 +1793,7 @@ func (m *GetNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1885,10 +1876,7 @@ func (m *ListNamespacesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1973,10 +1961,7 @@ func (m *ListNamespacesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2060,10 +2045,7 @@ func (m *CreateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2147,10 +2129,7 @@ func (m *CreateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2270,10 +2249,7 @@ func (m *UpdateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2357,10 +2333,7 @@ func (m *UpdateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2443,10 +2416,7 @@ func (m *DeleteNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/snapshots/v1/snapshots.pb.go b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +index 1877afded..046c97b01 100644
> +--- a/src/import/api/services/snapshots/v1/snapshots.pb.go
> ++++ b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +@@ -3140,7 +3140,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3157,10 +3157,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3245,10 +3242,7 @@ func (m *PrepareSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3505,7 +3499,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3522,10 +3516,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3610,10 +3601,7 @@ func (m *ViewSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3728,10 +3716,7 @@ func (m *MountsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3816,10 +3801,7 @@ func (m *MountsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3934,10 +3916,7 @@ func (m *RemoveSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4194,7 +4173,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4211,10 +4190,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4329,10 +4305,7 @@ func (m *StatSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4642,7 +4615,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4659,10 +4632,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4746,10 +4716,7 @@ func (m *StatSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4901,10 +4868,7 @@ func (m *UpdateSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4988,10 +4952,7 @@ func (m *UpdateSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5106,10 +5067,7 @@ func (m *ListSnapshotsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5194,10 +5152,7 @@ func (m *ListSnapshotsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5312,10 +5267,7 @@ func (m *UsageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5404,10 +5356,7 @@ func (m *UsageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5490,10 +5439,7 @@ func (m *CleanupRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/tasks/v1/tasks.pb.go b/src/import/api/services/tasks/v1/tasks.pb.go
> +index 5ac5af11b..4904e6508 100644
> +--- a/src/import/api/services/tasks/v1/tasks.pb.go
> ++++ b/src/import/api/services/tasks/v1/tasks.pb.go
> +@@ -9,6 +9,7 @@ import (
> +     types "github.com/containerd/containerd/api/types"
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     github_com_opencontainers_go_digest "github.com/opencontainers/go-digest"
> +@@ -934,11 +935,12 @@ func (m *CheckpointTaskResponse) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskResponse proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ContainerID          string      `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ContainerID          string            `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1155,6 +1157,7 @@ func init() {
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.services.tasks.v1.CheckpointTaskRequest")
> +     proto.RegisterType((*CheckpointTaskResponse)(nil), "containerd.services.tasks.v1.CheckpointTaskResponse")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.services.tasks.v1.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.services.tasks.v1.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*MetricsRequest)(nil), "containerd.services.tasks.v1.MetricsRequest")
> +     proto.RegisterType((*MetricsResponse)(nil), "containerd.services.tasks.v1.MetricsResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.services.tasks.v1.WaitRequest")
> +@@ -1166,90 +1169,93 @@ func init() {
> + }
> +
> + var fileDescriptor_310e7127b8a26f14 = []byte{
> +-    // 1318 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x45,
> +-    0x1c, 0xef, 0xfa, 0xed, 0xbf, 0x93, 0x36, 0x59, 0xd2, 0x60, 0x96, 0x2a, 0x0e, 0xcb, 0xc5, 0x04,
> +-    0xba, 0x4b, 0x5d, 0x54, 0x21, 0x5a, 0x21, 0x35, 0x0f, 0x22, 0x0b, 0xaa, 0xa6, 0xdb, 0x02, 0x55,
> +-    0x25, 0x14, 0xb6, 0xbb, 0x13, 0x67, 0x14, 0x7b, 0x67, 0xbb, 0x33, 0x4e, 0x1b, 0x38, 0xc0, 0x47,
> +-    0xe8, 0x95, 0x0b, 0x9f, 0x27, 0x47, 0x8e, 0x08, 0x55, 0x81, 0xfa, 0x5b, 0x70, 0x43, 0xf3, 0xd8,
> +-    0xcd, 0xc6, 0x8e, 0xbd, 0x4e, 0xd3, 0x70, 0x69, 0x67, 0x66, 0xff, 0xaf, 0xf9, 0xcd, 0xff, 0xf1,
> +-    0x73, 0x60, 0xb5, 0x83, 0xd9, 0x6e, 0xff, 0xa9, 0xe5, 0x91, 0x9e, 0xed, 0x91, 0x80, 0xb9, 0x38,
> +-    0x40, 0x91, 0x9f, 0x5e, 0xba, 0x21, 0xb6, 0x29, 0x8a, 0xf6, 0xb1, 0x87, 0xa8, 0xcd, 0x5c, 0xba,
> +-    0x47, 0xed, 0xfd, 0x1b, 0x72, 0x61, 0x85, 0x11, 0x61, 0x44, 0xbf, 0x76, 0x2c, 0x6d, 0xc5, 0x92,
> +-    0x96, 0x14, 0xd8, 0xbf, 0x61, 0xbc, 0xdf, 0x21, 0xa4, 0xd3, 0x45, 0xb6, 0x90, 0x7d, 0xda, 0xdf,
> +-    0xb1, 0x51, 0x2f, 0x64, 0x07, 0x52, 0xd5, 0x78, 0x6f, 0xf8, 0xa3, 0x1b, 0xc4, 0x9f, 0x16, 0x3a,
> +-    0xa4, 0x43, 0xc4, 0xd2, 0xe6, 0x2b, 0x75, 0x7a, 0x6b, 0xaa, 0x78, 0xd9, 0x41, 0x88, 0xa8, 0xdd,
> +-    0x23, 0xfd, 0x80, 0x29, 0xbd, 0xcf, 0xcf, 0xa2, 0x87, 0x58, 0x84, 0x3d, 0x75, 0x3b, 0xe3, 0xf6,
> +-    0x19, 0x34, 0x7d, 0x44, 0xbd, 0x08, 0x87, 0x8c, 0x44, 0x4a, 0xf9, 0x8b, 0x33, 0x28, 0x73, 0xc4,
> +-    0xc4, 0x3f, 0x4a, 0xb7, 0x31, 0x8c, 0x0d, 0xc3, 0x3d, 0x44, 0x99, 0xdb, 0x0b, 0xa5, 0x80, 0x79,
> +-    0x98, 0x83, 0xf9, 0xb5, 0x08, 0xb9, 0x0c, 0x3d, 0x72, 0xe9, 0x9e, 0x83, 0x9e, 0xf5, 0x11, 0x65,
> +-    0x7a, 0x0b, 0x66, 0x12, 0xf3, 0xdb, 0xd8, 0xaf, 0x6b, 0xcb, 0x5a, 0xb3, 0xba, 0x7a, 0x65, 0x70,
> +-    0xd4, 0xa8, 0xad, 0xc5, 0xe7, 0xed, 0x75, 0xa7, 0x96, 0x08, 0xb5, 0x7d, 0xdd, 0x86, 0x52, 0x44,
> +-    0x08, 0xdb, 0xa1, 0xf5, 0xfc, 0x72, 0xbe, 0x59, 0x6b, 0xbd, 0x6b, 0xa5, 0x9e, 0x54, 0x44, 0x67,
> +-    0xdd, 0xe3, 0x60, 0x3a, 0x4a, 0x4c, 0x5f, 0x80, 0x22, 0x65, 0x3e, 0x0e, 0xea, 0x05, 0x6e, 0xdd,
> +-    0x91, 0x1b, 0x7d, 0x11, 0x4a, 0x94, 0xf9, 0xa4, 0xcf, 0xea, 0x45, 0x71, 0xac, 0x76, 0xea, 0x1c,
> +-    0x45, 0x51, 0xbd, 0x94, 0x9c, 0xa3, 0x28, 0xd2, 0x0d, 0xa8, 0x30, 0x14, 0xf5, 0x70, 0xe0, 0x76,
> +-    0xeb, 0xe5, 0x65, 0xad, 0x59, 0x71, 0x92, 0xbd, 0x7e, 0x07, 0xc0, 0xdb, 0x45, 0xde, 0x5e, 0x48,
> +-    0x70, 0xc0, 0xea, 0x95, 0x65, 0xad, 0x59, 0x6b, 0x5d, 0x1b, 0x0d, 0x6b, 0x3d, 0x41, 0xdc, 0x49,
> +-    0xc9, 0xeb, 0x16, 0x94, 0x49, 0xc8, 0x30, 0x09, 0x68, 0xbd, 0x2a, 0x54, 0x17, 0x2c, 0x89, 0xa6,
> +-    0x15, 0xa3, 0x69, 0xdd, 0x0d, 0x0e, 0x9c, 0x58, 0xc8, 0x7c, 0x02, 0x7a, 0x1a, 0x49, 0x1a, 0x92,
> +-    0x80, 0xa2, 0x37, 0x82, 0x72, 0x0e, 0xf2, 0x21, 0xf6, 0xeb, 0xb9, 0x65, 0xad, 0x39, 0xeb, 0xf0,
> +-    0xa5, 0xd9, 0x81, 0x99, 0x87, 0xcc, 0x8d, 0xd8, 0x79, 0x1e, 0xe8, 0x43, 0x28, 0xa3, 0x17, 0xc8,
> +-    0xdb, 0x56, 0x96, 0xab, 0xab, 0x30, 0x38, 0x6a, 0x94, 0x36, 0x5e, 0x20, 0xaf, 0xbd, 0xee, 0x94,
> +-    0xf8, 0xa7, 0xb6, 0x6f, 0x7e, 0x00, 0xb3, 0xca, 0x91, 0x8a, 0x5f, 0xc5, 0xa2, 0x1d, 0xc7, 0xb2,
> +-    0x09, 0xf3, 0xeb, 0xa8, 0x8b, 0xce, 0x9d, 0x31, 0xe6, 0xef, 0x1a, 0x5c, 0x96, 0x96, 0x12, 0x6f,
> +-    0x8b, 0x90, 0x4b, 0x94, 0x4b, 0x83, 0xa3, 0x46, 0xae, 0xbd, 0xee, 0xe4, 0xf0, 0x29, 0x88, 0xe8,
> +-    0x0d, 0xa8, 0xa1, 0x17, 0x98, 0x6d, 0x53, 0xe6, 0xb2, 0x3e, 0xcf, 0x39, 0xfe, 0x05, 0xf8, 0xd1,
> +-    0x43, 0x71, 0xa2, 0xdf, 0x85, 0x2a, 0xdf, 0x21, 0x7f, 0xdb, 0x65, 0x22, 0xc5, 0x6a, 0x2d, 0x63,
> +-    0xe4, 0x01, 0x1f, 0xc5, 0xe5, 0xb0, 0x5a, 0x39, 0x3c, 0x6a, 0x5c, 0x7a, 0xf9, 0x77, 0x43, 0x73,
> +-    0x2a, 0x52, 0xed, 0x2e, 0x33, 0x09, 0x2c, 0xc8, 0xf8, 0xb6, 0x22, 0xe2, 0x21, 0x4a, 0x2f, 0x1c,
> +-    0x7d, 0x04, 0xb0, 0x89, 0x2e, 0xfe, 0x91, 0x37, 0xa0, 0x26, 0xdc, 0x28, 0xd0, 0x6f, 0x41, 0x39,
> +-    0x94, 0x17, 0x14, 0x2e, 0x86, 0x6a, 0x64, 0xff, 0x86, 0x2a, 0x93, 0x18, 0x84, 0x58, 0xd8, 0x5c,
> +-    0x81, 0xb9, 0x6f, 0x30, 0x65, 0x3c, 0x0d, 0x12, 0x68, 0x16, 0xa1, 0xb4, 0x83, 0xbb, 0x0c, 0x45,
> +-    0x32, 0x5a, 0x47, 0xed, 0x78, 0xd2, 0xa4, 0x64, 0x93, 0xda, 0x28, 0x8a, 0x16, 0x5f, 0xd7, 0x44,
> +-    0xc7, 0x98, 0xec, 0x56, 0x8a, 0x9a, 0x2f, 0x35, 0xa8, 0x7d, 0x8d, 0xbb, 0xdd, 0x8b, 0x06, 0x49,
> +-    0x34, 0x1c, 0xdc, 0xe1, 0x6d, 0x45, 0xe6, 0x96, 0xda, 0xf1, 0x54, 0x74, 0xbb, 0x5d, 0x91, 0x51,
> +-    0x15, 0x87, 0x2f, 0xcd, 0x7f, 0x35, 0xd0, 0xb9, 0xf2, 0x5b, 0xc8, 0x92, 0xa4, 0x27, 0xe6, 0x4e,
> +-    0xef, 0x89, 0xf9, 0x31, 0x3d, 0xb1, 0x30, 0xb6, 0x27, 0x16, 0x87, 0x7a, 0x62, 0x13, 0x0a, 0x34,
> +-    0x44, 0x9e, 0xe8, 0xa2, 0xe3, 0x5a, 0x9a, 0x90, 0x48, 0xa3, 0x54, 0x1e, 0x9b, 0x4a, 0x57, 0xe1,
> +-    0x9d, 0x13, 0x57, 0x97, 0x2f, 0x6b, 0xfe, 0xa6, 0xc1, 0x9c, 0x83, 0x28, 0xfe, 0x09, 0x6d, 0xb1,
> +-    0x83, 0x0b, 0x7f, 0xaa, 0x05, 0x28, 0x3e, 0xc7, 0x3e, 0xdb, 0x55, 0x2f, 0x25, 0x37, 0x1c, 0x9d,
> +-    0x5d, 0x84, 0x3b, 0xbb, 0xb2, 0xfa, 0x67, 0x1d, 0xb5, 0x33, 0x7f, 0x81, 0xcb, 0x6b, 0x5d, 0x42,
> +-    0x51, 0xfb, 0xfe, 0xff, 0x11, 0x98, 0x7c, 0xce, 0xbc, 0x78, 0x05, 0xb9, 0x31, 0xbf, 0x82, 0xb9,
> +-    0x2d, 0xb7, 0x4f, 0xcf, 0xdd, 0x3f, 0x37, 0x61, 0xde, 0x41, 0xb4, 0xdf, 0x3b, 0xb7, 0xa1, 0x0d,
> +-    0xb8, 0xc2, 0x8b, 0x73, 0x0b, 0xfb, 0xe7, 0x49, 0x5e, 0xd3, 0x91, 0xfd, 0x40, 0x9a, 0x51, 0x25,
> +-    0xfe, 0x25, 0x54, 0x55, 0xbb, 0x40, 0x71, 0x99, 0x2f, 0x4f, 0x2a, 0xf3, 0x76, 0xb0, 0x43, 0x9c,
> +-    0x63, 0x15, 0xf3, 0x95, 0x06, 0x57, 0xd7, 0x92, 0x99, 0x7c, 0x5e, 0x8e, 0xb2, 0x0d, 0xf3, 0xa1,
> +-    0x1b, 0xa1, 0x80, 0x6d, 0xa7, 0x78, 0x81, 0x7c, 0xbe, 0x16, 0xef, 0xff, 0x7f, 0x1d, 0x35, 0x56,
> +-    0x52, 0x6c, 0x8b, 0x84, 0x28, 0x48, 0xd4, 0xa9, 0xdd, 0x21, 0xd7, 0x7d, 0xdc, 0x41, 0x94, 0x59,
> +-    0xeb, 0xe2, 0x3f, 0x67, 0x4e, 0x1a, 0x5b, 0x3b, 0x95, 0x33, 0xe4, 0xa7, 0xe1, 0x0c, 0x8f, 0x61,
> +-    0x71, 0xf8, 0x76, 0x09, 0x70, 0xb5, 0x63, 0x26, 0x78, 0x6a, 0x87, 0x1c, 0x21, 0x2f, 0x69, 0x05,
> +-    0xf3, 0x67, 0x98, 0xff, 0x36, 0xf4, 0xdf, 0x02, 0xaf, 0x6b, 0x41, 0x35, 0x42, 0x94, 0xf4, 0x23,
> +-    0x0f, 0x51, 0x81, 0xd5, 0xb8, 0x4b, 0x1d, 0x8b, 0x99, 0x2b, 0x70, 0xf9, 0x9e, 0x24, 0xc0, 0xb1,
> +-    0xe7, 0x3a, 0x94, 0xe5, 0x24, 0x90, 0x57, 0xa9, 0x3a, 0xf1, 0x96, 0x27, 0x5f, 0x22, 0x9b, 0xcc,
> +-    0x85, 0xb2, 0xe2, 0xcf, 0xea, 0xde, 0xf5, 0x53, 0xb8, 0xa4, 0x10, 0x70, 0x62, 0x41, 0x73, 0x07,
> +-    0x6a, 0xdf, 0xbb, 0xf8, 0xe2, 0x67, 0x67, 0x04, 0x33, 0xd2, 0x8f, 0x8a, 0x75, 0x88, 0x87, 0x68,
> +-    0x93, 0x79, 0x48, 0xee, 0x4d, 0x78, 0x48, 0xeb, 0xd5, 0x0c, 0x14, 0xc5, 0xe4, 0xd4, 0xf7, 0xa0,
> +-    0x24, 0x39, 0xa6, 0x6e, 0x5b, 0x93, 0x7e, 0x31, 0x59, 0x23, 0x9c, 0xde, 0xf8, 0x74, 0x7a, 0x05,
> +-    0x75, 0xb5, 0x1f, 0xa1, 0x28, 0xb8, 0xa0, 0xbe, 0x32, 0x59, 0x35, 0xcd, 0x4c, 0x8d, 0x8f, 0xa7,
> +-    0x92, 0x55, 0x1e, 0x3a, 0x50, 0x92, 0x04, 0x2b, 0xeb, 0x3a, 0x23, 0x84, 0xd3, 0xf8, 0x64, 0x1a,
> +-    0x85, 0xc4, 0xd1, 0x33, 0x98, 0x3d, 0xc1, 0xe4, 0xf4, 0xd6, 0x34, 0xea, 0x27, 0x07, 0xfa, 0x19,
> +-    0x5d, 0x3e, 0x81, 0xfc, 0x26, 0x62, 0x7a, 0x73, 0xb2, 0xd2, 0x31, 0xdd, 0x33, 0x3e, 0x9a, 0x42,
> +-    0x32, 0xc1, 0xad, 0xc0, 0x3b, 0xad, 0x6e, 0x4d, 0x56, 0x19, 0x66, 0x67, 0x86, 0x3d, 0xb5, 0xbc,
> +-    0x72, 0xd4, 0x86, 0x02, 0x27, 0x5b, 0x7a, 0x46, 0x6c, 0x29, 0x42, 0x66, 0x2c, 0x8e, 0x24, 0xf7,
> +-    0x06, 0xff, 0xb1, 0xae, 0x6f, 0x41, 0x81, 0x97, 0x92, 0x9e, 0x91, 0x87, 0xa3, 0x44, 0x6a, 0xac,
> +-    0xc5, 0x87, 0x50, 0x4d, 0x38, 0x46, 0x16, 0x14, 0xc3, 0x64, 0x64, 0xac, 0xd1, 0xfb, 0x50, 0x56,
> +-    0xec, 0x40, 0xcf, 0x78, 0xef, 0x93, 0x24, 0x62, 0x82, 0xc1, 0xa2, 0x98, 0xf6, 0x59, 0x11, 0x0e,
> +-    0x53, 0x82, 0xb1, 0x06, 0x1f, 0x40, 0x49, 0x8e, 0xfd, 0xac, 0xa2, 0x19, 0x21, 0x07, 0x63, 0x4d,
> +-    0x62, 0xa8, 0xc4, 0x93, 0x5b, 0xbf, 0x9e, 0x9d, 0x23, 0x29, 0xa2, 0x60, 0x58, 0xd3, 0x8a, 0xab,
> +-    0x8c, 0x7a, 0x0e, 0x90, 0x9a, 0x97, 0x37, 0x33, 0x20, 0x3e, 0x6d, 0xf2, 0x1b, 0x9f, 0x9d, 0x4d,
> +-    0x49, 0x39, 0x7e, 0x00, 0x25, 0x39, 0x10, 0xb3, 0x60, 0x1b, 0x19, 0x9b, 0x63, 0x61, 0xdb, 0x81,
> +-    0xb2, 0x1a, 0x5d, 0x59, 0xb9, 0x72, 0x72, 0x1a, 0x1a, 0xd7, 0xa7, 0x94, 0x56, 0xa1, 0xff, 0x00,
> +-    0x05, 0x3e, 0x73, 0xb2, 0xaa, 0x30, 0x35, 0xff, 0x8c, 0x95, 0x69, 0x44, 0xa5, 0xf9, 0xd5, 0xef,
> +-    0x0e, 0x5f, 0x2f, 0x5d, 0xfa, 0xf3, 0xf5, 0xd2, 0xa5, 0x5f, 0x07, 0x4b, 0xda, 0xe1, 0x60, 0x49,
> +-    0xfb, 0x63, 0xb0, 0xa4, 0xfd, 0x33, 0x58, 0xd2, 0x9e, 0xdc, 0x79, 0xb3, 0xbf, 0xec, 0xdd, 0x16,
> +-    0x8b, 0xc7, 0xb9, 0xa7, 0x25, 0x01, 0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa2,
> +-    0x4f, 0xd1, 0x22, 0x14, 0x00, 0x00,
> ++    // 1376 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0x1b, 0x45,
> ++    0x14, 0xee, 0xfa, 0xee, 0xe3, 0xa4, 0x4d, 0x96, 0x34, 0x98, 0xa5, 0x8a, 0xc3, 0xf2, 0x62, 0x02,
> ++    0x5d, 0x53, 0x17, 0x55, 0x55, 0x5b, 0x55, 0xe4, 0x46, 0x64, 0x41, 0xd5, 0x74, 0x5b, 0xa0, 0xaa,
> ++    0x84, 0xc2, 0xc6, 0x3b, 0x71, 0x46, 0xb1, 0x77, 0xb6, 0x3b, 0xe3, 0xb4, 0xe6, 0x05, 0x7e, 0x42,
> ++    0x5f, 0x79, 0x81, 0xbf, 0x93, 0x47, 0x1e, 0x11, 0xaa, 0x02, 0xf5, 0xbf, 0xe0, 0x0d, 0xcd, 0x65,
> ++    0xd7, 0x1b, 0x3b, 0xf6, 0x3a, 0x4d, 0xc3, 0x4b, 0x32, 0x33, 0x7b, 0xce, 0x99, 0x33, 0xdf, 0xb9,
> ++    0x7d, 0x09, 0xac, 0xb5, 0x30, 0xdb, 0xef, 0xee, 0x5a, 0x4d, 0xd2, 0xa9, 0x35, 0x89, 0xc7, 0x1c,
> ++    0xec, 0xa1, 0xc0, 0x8d, 0x2f, 0x1d, 0x1f, 0xd7, 0x28, 0x0a, 0x0e, 0x71, 0x13, 0xd1, 0x1a, 0x73,
> ++    0xe8, 0x01, 0xad, 0x1d, 0xde, 0x90, 0x0b, 0xcb, 0x0f, 0x08, 0x23, 0xfa, 0xb5, 0x81, 0xb4, 0x15,
> ++    0x4a, 0x5a, 0x52, 0xe0, 0xf0, 0x86, 0xf1, 0x61, 0x8b, 0x90, 0x56, 0x1b, 0xd5, 0x84, 0xec, 0x6e,
> ++    0x77, 0xaf, 0x86, 0x3a, 0x3e, 0xeb, 0x49, 0x55, 0xe3, 0x83, 0xe1, 0x8f, 0x8e, 0x17, 0x7e, 0x5a,
> ++    0x68, 0x91, 0x16, 0x11, 0xcb, 0x1a, 0x5f, 0xa9, 0xd3, 0x5b, 0x53, 0xf9, 0xcb, 0x7a, 0x3e, 0xa2,
> ++    0xb5, 0x0e, 0xe9, 0x7a, 0x4c, 0xe9, 0xdd, 0x3e, 0x8b, 0x1e, 0x62, 0x01, 0x6e, 0xaa, 0xd7, 0x19,
> ++    0x77, 0xcf, 0xa0, 0xe9, 0x22, 0xda, 0x0c, 0xb0, 0xcf, 0x48, 0xa0, 0x94, 0xef, 0x9c, 0x41, 0x99,
> ++    0x23, 0x26, 0x7e, 0x28, 0xdd, 0xca, 0x30, 0x36, 0x0c, 0x77, 0x10, 0x65, 0x4e, 0xc7, 0x97, 0x02,
> ++    0xe6, 0x51, 0x0a, 0xe6, 0xd7, 0x03, 0xe4, 0x30, 0xf4, 0xc4, 0xa1, 0x07, 0x36, 0x7a, 0xde, 0x45,
> ++    0x94, 0xe9, 0x75, 0x98, 0x89, 0xcc, 0xef, 0x60, 0xb7, 0xac, 0x2d, 0x6b, 0xd5, 0xe2, 0xda, 0x95,
> ++    0xfe, 0x71, 0xa5, 0xb4, 0x1e, 0x9e, 0x37, 0x36, 0xec, 0x52, 0x24, 0xd4, 0x70, 0xf5, 0x1a, 0xe4,
> ++    0x02, 0x42, 0xd8, 0x1e, 0x2d, 0xa7, 0x97, 0xd3, 0xd5, 0x52, 0xfd, 0x7d, 0x2b, 0x16, 0x52, 0xe1,
> ++    0x9d, 0xf5, 0x80, 0x83, 0x69, 0x2b, 0x31, 0x7d, 0x01, 0xb2, 0x94, 0xb9, 0xd8, 0x2b, 0x67, 0xb8,
> ++    0x75, 0x5b, 0x6e, 0xf4, 0x45, 0xc8, 0x51, 0xe6, 0x92, 0x2e, 0x2b, 0x67, 0xc5, 0xb1, 0xda, 0xa9,
> ++    0x73, 0x14, 0x04, 0xe5, 0x5c, 0x74, 0x8e, 0x82, 0x40, 0x37, 0xa0, 0xc0, 0x50, 0xd0, 0xc1, 0x9e,
> ++    0xd3, 0x2e, 0xe7, 0x97, 0xb5, 0x6a, 0xc1, 0x8e, 0xf6, 0xfa, 0x3d, 0x80, 0xe6, 0x3e, 0x6a, 0x1e,
> ++    0xf8, 0x04, 0x7b, 0xac, 0x5c, 0x58, 0xd6, 0xaa, 0xa5, 0xfa, 0xb5, 0x51, 0xb7, 0x36, 0x22, 0xc4,
> ++    0xed, 0x98, 0xbc, 0x6e, 0x41, 0x9e, 0xf8, 0x0c, 0x13, 0x8f, 0x96, 0x8b, 0x42, 0x75, 0xc1, 0x92,
> ++    0x68, 0x5a, 0x21, 0x9a, 0xd6, 0xaa, 0xd7, 0xb3, 0x43, 0x21, 0xf3, 0x19, 0xe8, 0x71, 0x24, 0xa9,
> ++    0x4f, 0x3c, 0x8a, 0xde, 0x0a, 0xca, 0x39, 0x48, 0xfb, 0xd8, 0x2d, 0xa7, 0x96, 0xb5, 0xea, 0xac,
> ++    0xcd, 0x97, 0x66, 0x0b, 0x66, 0x1e, 0x33, 0x27, 0x60, 0xe7, 0x09, 0xd0, 0xc7, 0x90, 0x47, 0x2f,
> ++    0x51, 0x73, 0x47, 0x59, 0x2e, 0xae, 0x41, 0xff, 0xb8, 0x92, 0xdb, 0x7c, 0x89, 0x9a, 0x8d, 0x0d,
> ++    0x3b, 0xc7, 0x3f, 0x35, 0x5c, 0xf3, 0x23, 0x98, 0x55, 0x17, 0x29, 0xff, 0x95, 0x2f, 0xda, 0xc0,
> ++    0x97, 0x2d, 0x98, 0xdf, 0x40, 0x6d, 0x74, 0xee, 0x8c, 0x31, 0x7f, 0xd3, 0xe0, 0xb2, 0xb4, 0x14,
> ++    0xdd, 0xb6, 0x08, 0xa9, 0x48, 0x39, 0xd7, 0x3f, 0xae, 0xa4, 0x1a, 0x1b, 0x76, 0x0a, 0x9f, 0x82,
> ++    0x88, 0x5e, 0x81, 0x12, 0x7a, 0x89, 0xd9, 0x0e, 0x65, 0x0e, 0xeb, 0xf2, 0x9c, 0xe3, 0x5f, 0x80,
> ++    0x1f, 0x3d, 0x16, 0x27, 0xfa, 0x2a, 0x14, 0xf9, 0x0e, 0xb9, 0x3b, 0x0e, 0x13, 0x29, 0x56, 0xaa,
> ++    0x1b, 0x23, 0x01, 0x7c, 0x12, 0x96, 0xc3, 0x5a, 0xe1, 0xe8, 0xb8, 0x72, 0xe9, 0xd5, 0xdf, 0x15,
> ++    0xcd, 0x2e, 0x48, 0xb5, 0x55, 0x66, 0x12, 0x58, 0x90, 0xfe, 0x6d, 0x07, 0xa4, 0x89, 0x28, 0xbd,
> ++    0x70, 0xf4, 0x11, 0xc0, 0x16, 0xba, 0xf8, 0x20, 0x6f, 0x42, 0x49, 0x5c, 0xa3, 0x40, 0xbf, 0x05,
> ++    0x79, 0x5f, 0x3e, 0x50, 0x5c, 0x31, 0x54, 0x23, 0x87, 0x37, 0x54, 0x99, 0x84, 0x20, 0x84, 0xc2,
> ++    0xe6, 0x0a, 0xcc, 0x7d, 0x83, 0x29, 0xe3, 0x69, 0x10, 0x41, 0xb3, 0x08, 0xb9, 0x3d, 0xdc, 0x66,
> ++    0x28, 0x90, 0xde, 0xda, 0x6a, 0xc7, 0x93, 0x26, 0x26, 0x1b, 0xd5, 0x46, 0x56, 0xb4, 0xf8, 0xb2,
> ++    0x26, 0x3a, 0xc6, 0xe4, 0x6b, 0xa5, 0xa8, 0xf9, 0x4a, 0x83, 0xd2, 0xd7, 0xb8, 0xdd, 0xbe, 0x68,
> ++    0x90, 0x44, 0xc3, 0xc1, 0x2d, 0xde, 0x56, 0x64, 0x6e, 0xa9, 0x1d, 0x4f, 0x45, 0xa7, 0xdd, 0x16,
> ++    0x19, 0x55, 0xb0, 0xf9, 0xd2, 0xfc, 0x57, 0x03, 0x9d, 0x2b, 0xbf, 0x83, 0x2c, 0x89, 0x7a, 0x62,
> ++    0xea, 0xf4, 0x9e, 0x98, 0x1e, 0xd3, 0x13, 0x33, 0x63, 0x7b, 0x62, 0x76, 0xa8, 0x27, 0x56, 0x21,
> ++    0x43, 0x7d, 0xd4, 0x14, 0x5d, 0x74, 0x5c, 0x4b, 0x13, 0x12, 0x71, 0x94, 0xf2, 0x63, 0x53, 0xe9,
> ++    0x2a, 0xbc, 0x77, 0xe2, 0xe9, 0x32, 0xb2, 0xe6, 0xaf, 0x1a, 0xcc, 0xd9, 0x88, 0xe2, 0x9f, 0xd0,
> ++    0x36, 0xeb, 0x5d, 0x78, 0xa8, 0x16, 0x20, 0xfb, 0x02, 0xbb, 0x6c, 0x5f, 0x45, 0x4a, 0x6e, 0x38,
> ++    0x3a, 0xfb, 0x08, 0xb7, 0xf6, 0x65, 0xf5, 0xcf, 0xda, 0x6a, 0x67, 0xfe, 0x0c, 0x97, 0xd7, 0xdb,
> ++    0x84, 0xa2, 0xc6, 0xc3, 0xff, 0xc3, 0x31, 0x19, 0xce, 0xb4, 0x88, 0x82, 0xdc, 0x98, 0x5f, 0xc1,
> ++    0xdc, 0xb6, 0xd3, 0xa5, 0xe7, 0xee, 0x9f, 0x5b, 0x30, 0x6f, 0x23, 0xda, 0xed, 0x9c, 0xdb, 0xd0,
> ++    0x26, 0x5c, 0xe1, 0xc5, 0xb9, 0x8d, 0xdd, 0xf3, 0x24, 0xaf, 0x69, 0xcb, 0x7e, 0x20, 0xcd, 0xa8,
> ++    0x12, 0xbf, 0x0f, 0x45, 0xd5, 0x2e, 0x50, 0x58, 0xe6, 0xcb, 0x93, 0xca, 0xbc, 0xe1, 0xed, 0x11,
> ++    0x7b, 0xa0, 0x62, 0xbe, 0xd6, 0xe0, 0xea, 0x7a, 0x34, 0x93, 0xcf, 0xcb, 0x51, 0x76, 0x60, 0xde,
> ++    0x77, 0x02, 0xe4, 0xb1, 0x9d, 0x18, 0x2f, 0x90, 0xe1, 0xab, 0xf3, 0xfe, 0xff, 0xd7, 0x71, 0x65,
> ++    0x25, 0xc6, 0xb6, 0x88, 0x8f, 0xbc, 0x48, 0x9d, 0xd6, 0x5a, 0xe4, 0xba, 0x8b, 0x5b, 0x88, 0x32,
> ++    0x6b, 0x43, 0xfc, 0xb2, 0xe7, 0xa4, 0xb1, 0xf5, 0x53, 0x39, 0x43, 0x7a, 0x1a, 0xce, 0xf0, 0x14,
> ++    0x16, 0x87, 0x5f, 0x17, 0x01, 0x57, 0x1a, 0x30, 0xc1, 0x53, 0x3b, 0xe4, 0x08, 0x79, 0x89, 0x2b,
> ++    0x98, 0xbf, 0xa7, 0x60, 0xfe, 0x5b, 0xdf, 0x7d, 0x07, 0xc4, 0xae, 0x0e, 0xc5, 0x00, 0x51, 0xd2,
> ++    0x0d, 0x9a, 0x88, 0x0a, 0xb0, 0xc6, 0xbd, 0x6a, 0x20, 0xa6, 0xef, 0x42, 0xc9, 0xf1, 0x3c, 0xc2,
> ++    0x9c, 0x10, 0x0b, 0xee, 0xfd, 0x97, 0xd6, 0x24, 0x92, 0x6f, 0x8d, 0x78, 0x6b, 0xad, 0x0e, 0x4c,
> ++    0x6c, 0x7a, 0x2c, 0xe8, 0xd9, 0x71, 0xa3, 0xc6, 0x7d, 0x98, 0x1b, 0x16, 0xe0, 0xcd, 0xf9, 0x00,
> ++    0xf5, 0xd4, 0xec, 0xe1, 0x4b, 0x5e, 0x82, 0x87, 0x4e, 0xbb, 0x8b, 0xc2, 0x8e, 0x2a, 0x36, 0x77,
> ++    0x52, 0xb7, 0x35, 0x73, 0x05, 0x2e, 0x3f, 0x90, 0x2c, 0x3d, 0x44, 0xa7, 0x0c, 0x79, 0x39, 0xae,
> ++    0x24, 0xde, 0x45, 0x3b, 0xdc, 0xf2, 0x0a, 0x89, 0x64, 0xa3, 0xe1, 0x95, 0x57, 0x24, 0x5f, 0x05,
> ++    0xa7, 0x7c, 0x0a, 0xe1, 0x15, 0x02, 0x76, 0x28, 0x68, 0xee, 0x41, 0xe9, 0x7b, 0x07, 0x5f, 0xfc,
> ++    0x80, 0x0f, 0x60, 0x46, 0xde, 0xa3, 0x7c, 0x1d, 0x22, 0x4b, 0xda, 0x64, 0xb2, 0x94, 0x7a, 0x1b,
> ++    0xb2, 0x54, 0x7f, 0x3d, 0x03, 0x59, 0x31, 0xde, 0xf5, 0x03, 0xc8, 0x49, 0x22, 0xac, 0xd7, 0x26,
> ++    0x47, 0x7c, 0xe4, 0x0f, 0x0f, 0xe3, 0xf3, 0xe9, 0x15, 0xd4, 0xd3, 0x7e, 0x84, 0xac, 0x20, 0xac,
> ++    0xfa, 0xca, 0x64, 0xd5, 0x38, 0x7d, 0x36, 0x3e, 0x9d, 0x4a, 0x56, 0xdd, 0xd0, 0x82, 0x9c, 0x64,
> ++    0x81, 0x49, 0xcf, 0x19, 0x61, 0xc5, 0xc6, 0x67, 0xd3, 0x28, 0x44, 0x17, 0x3d, 0x87, 0xd9, 0x13,
> ++    0x74, 0x53, 0xaf, 0x4f, 0xa3, 0x7e, 0x92, 0x75, 0x9c, 0xf1, 0xca, 0x67, 0x90, 0xde, 0x42, 0x4c,
> ++    0xaf, 0x4e, 0x56, 0x1a, 0x70, 0x52, 0xe3, 0x93, 0x29, 0x24, 0x23, 0xdc, 0x32, 0x7c, 0x1c, 0xe8,
> ++    0xd6, 0x64, 0x95, 0x61, 0x0a, 0x69, 0xd4, 0xa6, 0x96, 0x57, 0x17, 0x35, 0x20, 0xc3, 0x19, 0xa1,
> ++    0x9e, 0xe0, 0x5b, 0x8c, 0x35, 0x1a, 0x8b, 0x23, 0xc9, 0xbd, 0xd9, 0xf1, 0x59, 0x4f, 0xdf, 0x86,
> ++    0x0c, 0x2f, 0x25, 0x3d, 0x21, 0x0f, 0x47, 0xd9, 0xde, 0x58, 0x8b, 0x8f, 0xa1, 0x18, 0x11, 0xa1,
> ++    0x24, 0x28, 0x86, 0x19, 0xd3, 0x58, 0xa3, 0x0f, 0x21, 0xaf, 0x28, 0x8c, 0x9e, 0x10, 0xef, 0x93,
> ++    0x4c, 0x67, 0x82, 0xc1, 0xac, 0xa0, 0x24, 0x49, 0x1e, 0x0e, 0xf3, 0x96, 0xb1, 0x06, 0x1f, 0x41,
> ++    0x4e, 0x72, 0x93, 0xa4, 0xa2, 0x19, 0x61, 0x30, 0x63, 0x4d, 0x62, 0x28, 0x84, 0xf4, 0x42, 0xbf,
> ++    0x9e, 0x9c, 0x23, 0x31, 0x36, 0x63, 0x58, 0xd3, 0x8a, 0xab, 0x8c, 0x7a, 0x01, 0x10, 0x1b, 0xea,
> ++    0x37, 0x13, 0x20, 0x3e, 0x8d, 0x9e, 0x18, 0x5f, 0x9c, 0x4d, 0x49, 0x5d, 0xfc, 0x08, 0x72, 0x72,
> ++    0x0c, 0x26, 0xc1, 0x36, 0x32, 0x2c, 0xc7, 0xc2, 0xb6, 0x07, 0x79, 0x35, 0xba, 0x92, 0x72, 0xe5,
> ++    0xe4, 0x34, 0x34, 0xae, 0x4f, 0x29, 0xad, 0x5c, 0xff, 0x01, 0x32, 0x7c, 0xe6, 0x24, 0x55, 0x61,
> ++    0x6c, 0xfe, 0x19, 0x2b, 0xd3, 0x88, 0x4a, 0xf3, 0x6b, 0xdf, 0x1d, 0xbd, 0x59, 0xba, 0xf4, 0xe7,
> ++    0x9b, 0xa5, 0x4b, 0xbf, 0xf4, 0x97, 0xb4, 0xa3, 0xfe, 0x92, 0xf6, 0x47, 0x7f, 0x49, 0xfb, 0xa7,
> ++    0xbf, 0xa4, 0x3d, 0xbb, 0xf7, 0x76, 0xff, 0x7e, 0xbc, 0x2b, 0x16, 0x4f, 0x53, 0xbb, 0x39, 0x01,
> ++    0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x55, 0xbf, 0x54, 0xc7, 0x14, 0x00, 0x00,
> + }
> +
> + // Reference imports to suppress errors if they are not otherwise used.
> +@@ -2943,6 +2949,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintTasks(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -3611,6 +3636,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovTasks(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovTasks(uint64(len(k))) + 1 + len(v) + sovTasks(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovTasks(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3991,9 +4024,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4347,10 +4391,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4452,10 +4493,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4570,10 +4608,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4643,10 +4678,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4729,10 +4761,7 @@ func (m *DeleteTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4886,10 +4915,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5004,10 +5030,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5122,10 +5145,7 @@ func (m *GetRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5212,10 +5232,7 @@ func (m *GetResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5298,10 +5315,7 @@ func (m *ListTasksRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5386,10 +5400,7 @@ func (m *ListTasksResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5543,10 +5554,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5813,10 +5821,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5867,10 +5872,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6023,10 +6025,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6161,10 +6160,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6247,10 +6243,7 @@ func (m *PauseTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6333,10 +6326,7 @@ func (m *ResumeTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6419,10 +6409,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6507,10 +6494,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6661,10 +6645,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6749,10 +6730,7 @@ func (m *CheckpointTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6865,16 +6843,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowTasks
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowTasks
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipTasks(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipTasks(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6957,10 +7059,7 @@ func (m *MetricsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7045,10 +7144,7 @@ func (m *MetricsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7163,10 +7259,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7269,10 +7362,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/ttrpc/events/v1/events.pb.go b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +index 0e61351d5..b1f275bf0 100644
> +--- a/src/import/api/services/ttrpc/events/v1/events.pb.go
> ++++ b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +@@ -474,10 +474,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -661,10 +658,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/version/v1/version.pb.go b/src/import/api/services/version/v1/version.pb.go
> +index 81b8c3395..b742c6ae6 100644
> +--- a/src/import/api/services/version/v1/version.pb.go
> ++++ b/src/import/api/services/version/v1/version.pb.go
> +@@ -374,10 +374,7 @@ func (m *VersionResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthVersion
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthVersion
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/descriptor.pb.go b/src/import/api/types/descriptor.pb.go
> +index 437d41f23..fe71dbf43 100644
> +--- a/src/import/api/types/descriptor.pb.go
> ++++ b/src/import/api/types/descriptor.pb.go
> +@@ -479,7 +479,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDescriptor
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -496,10 +496,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDescriptor
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDescriptor
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/metrics.pb.go b/src/import/api/types/metrics.pb.go
> +index 89a8d9cd6..75773e442 100644
> +--- a/src/import/api/types/metrics.pb.go
> ++++ b/src/import/api/types/metrics.pb.go
> +@@ -348,10 +348,7 @@ func (m *Metric) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMetrics
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMetrics
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/mount.pb.go b/src/import/api/types/mount.pb.go
> +index 6872e4120..d0a0bee76 100644
> +--- a/src/import/api/types/mount.pb.go
> ++++ b/src/import/api/types/mount.pb.go
> +@@ -392,10 +392,7 @@ func (m *Mount) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMount
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMount
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/platform.pb.go b/src/import/api/types/platform.pb.go
> +index c03d8b077..a0f78c8a7 100644
> +--- a/src/import/api/types/platform.pb.go
> ++++ b/src/import/api/types/platform.pb.go
> +@@ -333,10 +333,7 @@ func (m *Platform) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthPlatform
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthPlatform
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/task/task.pb.go b/src/import/api/types/task/task.pb.go
> +index ae824ff45..f511bbd05 100644
> +--- a/src/import/api/types/task/task.pb.go
> ++++ b/src/import/api/types/task/task.pb.go
> +@@ -772,10 +772,7 @@ func (m *Process) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -881,10 +878,7 @@ func (m *ProcessInfo) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/linux/runctypes/runc.pb.go b/src/import/runtime/linux/runctypes/runc.pb.go
> +index 26306e594..46d31ff59 100644
> +--- a/src/import/runtime/linux/runctypes/runc.pb.go
> ++++ b/src/import/runtime/linux/runctypes/runc.pb.go
> +@@ -978,10 +978,7 @@ func (m *RuncOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1350,10 +1347,7 @@ func (m *CreateOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1632,10 +1626,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1718,10 +1709,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v1/shim/v1/shim.pb.go b/src/import/runtime/v1/shim/v1/shim.pb.go
> +index 27f334966..dbc82599d 100644
> +--- a/src/import/runtime/v1/shim/v1/shim.pb.go
> ++++ b/src/import/runtime/v1/shim/v1/shim.pb.go
> +@@ -3262,10 +3262,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3335,10 +3332,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3460,10 +3454,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3546,10 +3537,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3784,10 +3772,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3838,10 +3823,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3962,10 +3944,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4048,10 +4027,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4372,10 +4348,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4497,10 +4470,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4603,10 +4573,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4689,10 +4656,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4777,10 +4741,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4899,10 +4860,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4972,10 +4930,7 @@ func (m *ShimInfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,10 +5017,7 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5148,10 +5100,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5253,10 +5202,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5339,10 +5285,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5445,10 +5388,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/runc/options/oci.pb.go b/src/import/runtime/v2/runc/options/oci.pb.go
> +index f298452b6..c9c44742a 100644
> +--- a/src/import/runtime/v2/runc/options/oci.pb.go
> ++++ b/src/import/runtime/v2/runc/options/oci.pb.go
> +@@ -994,10 +994,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1276,10 +1273,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1362,10 +1356,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/task/shim.pb.go b/src/import/runtime/v2/task/shim.pb.go
> +index 3cf11d8e3..6366f9c57 100644
> +--- a/src/import/runtime/v2/task/shim.pb.go
> ++++ b/src/import/runtime/v2/task/shim.pb.go
> +@@ -10,6 +10,7 @@ import (
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     github_com_containerd_ttrpc "github.com/containerd/ttrpc"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     io "io"
> +@@ -617,11 +618,12 @@ func (m *CheckpointTaskRequest) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskRequest proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ID                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ID                   string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1107,6 +1109,7 @@ func init() {
> +     proto.RegisterType((*PidsResponse)(nil), "containerd.task.v2.PidsResponse")
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.task.v2.CheckpointTaskRequest")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.task.v2.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.task.v2.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*StartRequest)(nil), "containerd.task.v2.StartRequest")
> +     proto.RegisterType((*StartResponse)(nil), "containerd.task.v2.StartResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.task.v2.WaitRequest")
> +@@ -1125,85 +1128,89 @@ func init() {
> + }
> +
> + var fileDescriptor_9202ee34bc3ad8ca = []byte{
> +-    // 1246 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x6f, 0x1b, 0x45,
> +-    0x17, 0xee, 0xfa, 0x63, 0x6d, 0x1f, 0xd7, 0x69, 0x3a, 0x6f, 0x9a, 0x77, 0xeb, 0x4a, 0xb6, 0xbb,
> +-    0xa5, 0xc1, 0x80, 0x64, 0x0b, 0x57, 0x70, 0x41, 0x24, 0x50, 0xbe, 0xa8, 0x4c, 0x0b, 0x89, 0xb6,
> +-    0x45, 0x45, 0xdc, 0x58, 0x1b, 0xef, 0xc4, 0x5e, 0xc5, 0xde, 0x59, 0x76, 0x66, 0xf3, 0x81, 0x84,
> +-    0xc4, 0x15, 0x17, 0x5c, 0xf1, 0xb3, 0x72, 0x89, 0xc4, 0x0d, 0x37, 0x04, 0xea, 0x7f, 0xc0, 0x3f,
> +-    0x40, 0xf3, 0xe1, 0x78, 0xed, 0xec, 0xda, 0x49, 0xe5, 0x9b, 0x68, 0xce, 0xce, 0x33, 0x67, 0xe6,
> +-    0x9c, 0x79, 0xce, 0x73, 0x26, 0x86, 0xcd, 0x9e, 0xcb, 0xfa, 0xe1, 0x61, 0xa3, 0x4b, 0x86, 0xcd,
> +-    0x2e, 0xf1, 0x98, 0xed, 0x7a, 0x38, 0x70, 0xa2, 0xc3, 0x20, 0xf4, 0x98, 0x3b, 0xc4, 0xcd, 0x93,
> +-    0x56, 0x93, 0xd9, 0xf4, 0xb8, 0x49, 0xfb, 0xee, 0xb0, 0xe1, 0x07, 0x84, 0x11, 0x84, 0x26, 0xb0,
> +-    0x06, 0x9f, 0x6b, 0x9c, 0xb4, 0xca, 0x0f, 0x7b, 0x84, 0xf4, 0x06, 0xb8, 0x29, 0x10, 0x87, 0xe1,
> +-    0x51, 0xd3, 0xf6, 0xce, 0x25, 0xbc, 0xfc, 0x68, 0x76, 0x0a, 0x0f, 0x7d, 0x36, 0x9e, 0x5c, 0xeb,
> +-    0x91, 0x1e, 0x11, 0xc3, 0x26, 0x1f, 0xa9, 0xaf, 0xd5, 0xd9, 0x25, 0xfc, 0x28, 0x94, 0xd9, 0x43,
> +-    0x5f, 0x01, 0x3e, 0x5d, 0x78, 0x7e, 0xdb, 0x77, 0x9b, 0xec, 0xdc, 0xc7, 0xb4, 0x39, 0x24, 0xa1,
> +-    0xc7, 0xd4, 0xba, 0xcf, 0x6e, 0xb1, 0x4e, 0x84, 0x2d, 0xe2, 0x13, 0x6b, 0xcd, 0x3f, 0x52, 0x70,
> +-    0x7f, 0x27, 0xc0, 0x36, 0xc3, 0xaf, 0x6d, 0x7a, 0x6c, 0xe1, 0x1f, 0x42, 0x4c, 0x19, 0x5a, 0x87,
> +-    0x94, 0xeb, 0x18, 0x5a, 0x4d, 0xab, 0x17, 0xb6, 0xf5, 0xd1, 0x65, 0x35, 0xd5, 0xde, 0xb5, 0x52,
> +-    0xae, 0x83, 0xd6, 0x41, 0x3f, 0x0c, 0x3d, 0x67, 0x80, 0x8d, 0x14, 0x9f, 0xb3, 0x94, 0x85, 0x9a,
> +-    0xa0, 0x07, 0x84, 0xb0, 0x23, 0x6a, 0xa4, 0x6b, 0xe9, 0x7a, 0xb1, 0xf5, 0xff, 0x46, 0x34, 0x9b,
> +-    0x7c, 0xe3, 0xc6, 0xd7, 0xfc, 0xc0, 0x96, 0x82, 0xa1, 0x32, 0xe4, 0x19, 0x0e, 0x86, 0xae, 0x67,
> +-    0x0f, 0x8c, 0x4c, 0x4d, 0xab, 0xe7, 0xad, 0x2b, 0x1b, 0xad, 0x41, 0x96, 0x32, 0xc7, 0xf5, 0x8c,
> +-    0xac, 0xd8, 0x43, 0x1a, 0x7c, 0x6b, 0xca, 0x1c, 0x12, 0x32, 0x43, 0x97, 0x5b, 0x4b, 0x4b, 0x7d,
> +-    0xc7, 0x41, 0x60, 0xe4, 0xae, 0xbe, 0xe3, 0x20, 0x40, 0x15, 0x80, 0x6e, 0x1f, 0x77, 0x8f, 0x7d,
> +-    0xe2, 0x7a, 0xcc, 0xc8, 0x8b, 0xb9, 0xc8, 0x17, 0xf4, 0x11, 0xdc, 0xf7, 0xed, 0x00, 0x7b, 0xac,
> +-    0x13, 0x81, 0x15, 0x04, 0x6c, 0x55, 0x4e, 0xec, 0x4c, 0xc0, 0x0d, 0xc8, 0x11, 0x9f, 0xb9, 0xc4,
> +-    0xa3, 0x06, 0xd4, 0xb4, 0x7a, 0xb1, 0xb5, 0xd6, 0x90, 0x97, 0xd9, 0x18, 0x5f, 0x66, 0x63, 0xcb,
> +-    0x3b, 0xb7, 0xc6, 0x20, 0x73, 0x03, 0x50, 0x34, 0xa9, 0xd4, 0x27, 0x1e, 0xc5, 0x68, 0x15, 0xd2,
> +-    0xbe, 0x4a, 0x6b, 0xc9, 0xe2, 0x43, 0xf3, 0x25, 0x94, 0x76, 0xf1, 0x00, 0x33, 0xbc, 0x28, 0xf1,
> +-    0x4f, 0x20, 0x87, 0xcf, 0x70, 0xb7, 0xe3, 0x3a, 0x32, 0xf3, 0xdb, 0x30, 0xba, 0xac, 0xea, 0x7b,
> +-    0x67, 0xb8, 0xdb, 0xde, 0xb5, 0x74, 0x3e, 0xd5, 0x76, 0xcc, 0x5f, 0x34, 0x58, 0x19, 0xbb, 0x4b,
> +-    0xda, 0x12, 0x55, 0xa1, 0x88, 0xcf, 0x5c, 0xd6, 0xa1, 0xcc, 0x66, 0x21, 0x15, 0xde, 0x4a, 0x16,
> +-    0xf0, 0x4f, 0xaf, 0xc4, 0x17, 0xb4, 0x05, 0x05, 0x6e, 0x61, 0xa7, 0x63, 0x33, 0x23, 0x2d, 0xa2,
> +-    0x2d, 0x5f, 0x8b, 0xf6, 0xf5, 0x98, 0xba, 0xdb, 0xf9, 0x8b, 0xcb, 0xea, 0x9d, 0xdf, 0xfe, 0xae,
> +-    0x6a, 0x56, 0x5e, 0x2e, 0xdb, 0x62, 0xe6, 0x5f, 0x1a, 0x20, 0x7e, 0xb6, 0x83, 0x80, 0x74, 0x31,
> +-    0xa5, 0xcb, 0x08, 0x6e, 0x8a, 0x31, 0xe9, 0x24, 0xc6, 0x64, 0xe2, 0x19, 0x93, 0x4d, 0x60, 0x8c,
> +-    0x3e, 0xc5, 0x98, 0x3a, 0x64, 0xa8, 0x8f, 0xbb, 0x82, 0x47, 0x49, 0x37, 0x2c, 0x10, 0xe6, 0x03,
> +-    0xf8, 0xdf, 0x54, 0x78, 0x32, 0xd9, 0xe6, 0x4f, 0xb0, 0x6a, 0x61, 0xea, 0xfe, 0x88, 0x0f, 0xd8,
> +-    0xf9, 0x52, 0x62, 0x5e, 0x83, 0xec, 0xa9, 0xeb, 0xb0, 0xbe, 0x08, 0xb8, 0x64, 0x49, 0x83, 0x9f,
> +-    0xbf, 0x8f, 0xdd, 0x5e, 0x9f, 0x89, 0x70, 0x4b, 0x96, 0xb2, 0xcc, 0x17, 0x70, 0x97, 0x5f, 0xe1,
> +-    0x72, 0xb8, 0xf4, 0x6f, 0x0a, 0x4a, 0xca, 0x9b, 0xa2, 0xd2, 0x6d, 0x35, 0x41, 0x51, 0x2f, 0x3d,
> +-    0xa1, 0xde, 0x33, 0x9e, 0x78, 0xc1, 0x3a, 0x7e, 0xf0, 0x95, 0xd6, 0xa3, 0xa8, 0x4a, 0x9c, 0x7c,
> +-    0xac, 0x84, 0x42, 0xd2, 0xd0, 0x52, 0xd0, 0x25, 0xa9, 0x41, 0x94, 0x3d, 0xf9, 0x19, 0xf6, 0xcc,
> +-    0x54, 0x44, 0x61, 0x7e, 0x45, 0xc0, 0xbb, 0x54, 0x44, 0x34, 0xe7, 0xc5, 0xc4, 0x9c, 0x33, 0x28,
> +-    0xbe, 0x70, 0x07, 0x83, 0xa5, 0x50, 0x87, 0x27, 0xc2, 0xed, 0x8d, 0x8b, 0xa5, 0x64, 0x29, 0x8b,
> +-    0xdf, 0x8a, 0x3d, 0x18, 0x6b, 0x2e, 0x1f, 0x9a, 0x5d, 0x58, 0xd9, 0x19, 0x10, 0x8a, 0xdb, 0xfb,
> +-    0xcb, 0xe2, 0xac, 0xbc, 0x2f, 0x59, 0xa4, 0xd2, 0x30, 0x9f, 0x42, 0xf1, 0xc0, 0x75, 0x16, 0x29,
> +-    0x81, 0xf9, 0x0d, 0xdc, 0x95, 0x30, 0xc5, 0xb9, 0xcf, 0xa1, 0xe0, 0xcb, 0x22, 0xc3, 0xd4, 0xd0,
> +-    0x44, 0x6b, 0xa9, 0xc5, 0x92, 0x46, 0x95, 0x62, 0xdb, 0x3b, 0x22, 0xd6, 0x64, 0x89, 0x49, 0xe1,
> +-    0xc1, 0x44, 0xc5, 0x6f, 0xd2, 0xe0, 0x10, 0x64, 0x7c, 0x9b, 0xf5, 0x15, 0x95, 0xc5, 0x38, 0x2a,
> +-    0xfe, 0xe9, 0x9b, 0x88, 0x7f, 0x07, 0xee, 0x7f, 0xeb, 0x3b, 0x37, 0xec, 0xa8, 0x2d, 0x28, 0x04,
> +-    0x98, 0x92, 0x30, 0xe8, 0x62, 0x29, 0xc6, 0x49, 0xee, 0x27, 0x30, 0x55, 0xe8, 0x01, 0x5b, 0x4a,
> +-    0xa1, 0x3f, 0x16, 0x75, 0xce, 0x9d, 0x25, 0x76, 0xa9, 0xaf, 0xa0, 0xf8, 0xc6, 0x76, 0x97, 0xb3,
> +-    0x5d, 0x00, 0x77, 0xa5, 0x2f, 0xb5, 0xdb, 0x4c, 0xf1, 0x69, 0xf3, 0x8b, 0x2f, 0xf5, 0x4e, 0xed,
> +-    0x68, 0x43, 0x0a, 0xe3, 0x42, 0xf6, 0x6d, 0x4a, 0xc9, 0x9b, 0xd0, 0xef, 0x43, 0xce, 0x65, 0x9b,
> +-    0xc9, 0x63, 0x25, 0x5d, 0x8c, 0x84, 0x98, 0x75, 0x58, 0xd9, 0x21, 0x9e, 0x87, 0xbb, 0x8b, 0xf2,
> +-    0x64, 0xda, 0x70, 0xef, 0x0a, 0xa9, 0x36, 0x7a, 0x08, 0x79, 0xfe, 0x14, 0xed, 0x4c, 0x12, 0x9f,
> +-    0xe3, 0xf6, 0x81, 0xeb, 0xf0, 0x29, 0xfe, 0x5c, 0x13, 0x53, 0xb2, 0x59, 0xe7, 0xb8, 0xcd, 0xa7,
> +-    0x0c, 0xc8, 0x9d, 0xe0, 0x80, 0xba, 0x44, 0x16, 0x5b, 0xc1, 0x1a, 0x9b, 0xe6, 0x26, 0xdc, 0x7b,
> +-    0xd5, 0x0f, 0x99, 0x43, 0x4e, 0xbd, 0x45, 0xb7, 0xb6, 0x0a, 0x69, 0x8f, 0x9c, 0x0a, 0xd7, 0x79,
> +-    0x8b, 0x0f, 0x79, 0xba, 0x0e, 0xec, 0x90, 0x2e, 0xea, 0x23, 0xe6, 0xfb, 0x50, 0xb2, 0x30, 0x0d,
> +-    0x87, 0x8b, 0x80, 0xad, 0x5f, 0x01, 0x32, 0xbc, 0x16, 0xd0, 0x4b, 0xc8, 0x8a, 0x9e, 0x82, 0xa6,
> +-    0x8a, 0x58, 0xbd, 0xb6, 0x1b, 0xd1, 0xe6, 0x55, 0x7e, 0x3c, 0x07, 0xa1, 0x92, 0xf6, 0x06, 0x74,
> +-    0xf9, 0xc8, 0x42, 0x4f, 0xe3, 0xc0, 0xd7, 0x5e, 0xb5, 0xe5, 0x8d, 0x45, 0x30, 0xe5, 0x58, 0x1e,
> +-    0x33, 0x60, 0x89, 0xc7, 0xbc, 0x2a, 0xbd, 0xc4, 0x63, 0x46, 0xea, 0x69, 0x1f, 0x74, 0xf9, 0x28,
> +-    0x43, 0xb1, 0xe0, 0xa9, 0xf7, 0x5f, 0xd9, 0x9c, 0x07, 0x51, 0x0e, 0xdb, 0x90, 0xe1, 0x22, 0x89,
> +-    0xaa, 0x71, 0xd8, 0x88, 0xca, 0x96, 0x6b, 0xc9, 0x00, 0xe5, 0x6a, 0x0b, 0xb2, 0xe2, 0xaa, 0xe3,
> +-    0x23, 0x8d, 0xb2, 0xa0, 0xbc, 0x7e, 0x8d, 0xfc, 0x7b, 0xfc, 0x3f, 0x1e, 0xb4, 0x03, 0xba, 0x64,
> +-    0x41, 0x7c, 0x78, 0x53, 0x0c, 0x49, 0x74, 0xb2, 0x0f, 0x10, 0x79, 0x6d, 0x7f, 0x10, 0x7b, 0x4f,
> +-    0x71, 0x3a, 0x9e, 0xe8, 0xf0, 0x0b, 0xc8, 0xf0, 0x56, 0x1a, 0x9f, 0xa3, 0x48, 0x93, 0x4d, 0x74,
> +-    0xf0, 0x25, 0x64, 0xb8, 0x72, 0xa1, 0x58, 0xce, 0x5c, 0x7f, 0xdb, 0x26, 0xfa, 0x69, 0x43, 0xe1,
> +-    0xea, 0x4d, 0x88, 0xde, 0x4b, 0xc8, 0xd0, 0xd4, 0x93, 0x31, 0xd1, 0xd5, 0x1e, 0xe4, 0x54, 0xa3,
> +-    0x46, 0xb1, 0x34, 0x99, 0xee, 0xe2, 0x89, 0x6e, 0x9e, 0x83, 0x2e, 0xdb, 0x53, 0x7c, 0xd9, 0x5c,
> +-    0x6b, 0x5d, 0x73, 0x42, 0xcb, 0x70, 0x29, 0x8f, 0xcf, 0x71, 0xa4, 0x61, 0xc4, 0xf3, 0x70, 0xaa,
> +-    0x0b, 0x28, 0x61, 0xa0, 0xc9, 0xc2, 0x40, 0x17, 0x0a, 0xc3, 0x84, 0xd5, 0x16, 0xe4, 0x94, 0xc0,
> +-    0x26, 0x24, 0x6a, 0x4a, 0xa7, 0xcb, 0x4f, 0xe6, 0x62, 0x94, 0xcf, 0xe7, 0x90, 0x1f, 0x2b, 0x2a,
> +-    0x8a, 0x5d, 0x30, 0xa3, 0xb7, 0x49, 0x59, 0xdb, 0xde, 0xbf, 0x78, 0x5b, 0xb9, 0xf3, 0xe7, 0xdb,
> +-    0xca, 0x9d, 0x9f, 0x47, 0x15, 0xed, 0x62, 0x54, 0xd1, 0x7e, 0x1f, 0x55, 0xb4, 0x7f, 0x46, 0x15,
> +-    0xed, 0xfb, 0x4f, 0x6e, 0xfb, 0xf3, 0xc5, 0x26, 0xff, 0xf3, 0x5d, 0xea, 0x50, 0x17, 0x5b, 0x3c,
> +-    0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x19, 0x17, 0x87, 0x57, 0x00, 0x11, 0x00, 0x00,
> ++    // 1306 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4d, 0x6f, 0xdb, 0x46,
> ++    0x13, 0x0e, 0xf5, 0x41, 0x49, 0xa3, 0xc8, 0x71, 0xf6, 0x75, 0xf2, 0x32, 0x0a, 0x20, 0x29, 0x4c,
> ++    0x93, 0xaa, 0x2d, 0x40, 0xa1, 0x0a, 0x1a, 0x14, 0x31, 0x90, 0xc2, 0x76, 0xdc, 0x40, 0x4d, 0x5a,
> ++    0x1b, 0x4c, 0x8a, 0x04, 0xbd, 0x18, 0xb4, 0xb8, 0x91, 0x08, 0x4b, 0x5c, 0x96, 0xbb, 0x74, 0xa2,
> ++    0x02, 0x05, 0x7a, 0xea, 0xa1, 0xa7, 0xfe, 0xac, 0x1c, 0x0b, 0xf4, 0xd2, 0x4b, 0xd3, 0x46, 0xff,
> ++    0xa0, 0xc7, 0xde, 0x8a, 0xfd, 0x90, 0x45, 0x49, 0xa4, 0x14, 0x07, 0xba, 0x18, 0x3b, 0xdc, 0x67,
> ++    0x67, 0x67, 0x67, 0x9f, 0x79, 0x66, 0x65, 0xd8, 0xee, 0x79, 0xac, 0x1f, 0x1d, 0x5b, 0x5d, 0x32,
> ++    0x6c, 0x75, 0x89, 0xcf, 0x1c, 0xcf, 0xc7, 0xa1, 0x1b, 0x1f, 0x86, 0x91, 0xcf, 0xbc, 0x21, 0x6e,
> ++    0x9d, 0xb6, 0x5b, 0xcc, 0xa1, 0x27, 0x2d, 0xda, 0xf7, 0x86, 0x56, 0x10, 0x12, 0x46, 0x10, 0x9a,
> ++    0xc2, 0x2c, 0x3e, 0x67, 0x9d, 0xb6, 0xab, 0xd7, 0x7a, 0x84, 0xf4, 0x06, 0xb8, 0x25, 0x10, 0xc7,
> ++    0xd1, 0x8b, 0x96, 0xe3, 0x8f, 0x24, 0xbc, 0x7a, 0x7d, 0x7e, 0x0a, 0x0f, 0x03, 0x36, 0x99, 0xdc,
> ++    0xea, 0x91, 0x1e, 0x11, 0xc3, 0x16, 0x1f, 0xa9, 0xaf, 0xf5, 0xf9, 0x25, 0x3c, 0x14, 0xca, 0x9c,
> ++    0x61, 0xa0, 0x00, 0x77, 0x57, 0xc6, 0xef, 0x04, 0x5e, 0x8b, 0x8d, 0x02, 0x4c, 0x5b, 0x43, 0x12,
> ++    0xf9, 0x4c, 0xad, 0xbb, 0x77, 0x8e, 0x75, 0xe2, 0xd8, 0xe2, 0x7c, 0x62, 0xad, 0xf9, 0x7b, 0x06,
> ++    0x2e, 0xef, 0x85, 0xd8, 0x61, 0xf8, 0xa9, 0x43, 0x4f, 0x6c, 0xfc, 0x7d, 0x84, 0x29, 0x43, 0x57,
> ++    0x21, 0xe3, 0xb9, 0x86, 0xd6, 0xd0, 0x9a, 0xa5, 0x5d, 0x7d, 0xfc, 0xa6, 0x9e, 0xe9, 0x3c, 0xb0,
> ++    0x33, 0x9e, 0x8b, 0xae, 0x82, 0x7e, 0x1c, 0xf9, 0xee, 0x00, 0x1b, 0x19, 0x3e, 0x67, 0x2b, 0x0b,
> ++    0xb5, 0x40, 0x0f, 0x09, 0x61, 0x2f, 0xa8, 0x91, 0x6d, 0x64, 0x9b, 0xe5, 0xf6, 0xff, 0xad, 0x78,
> ++    0x36, 0xf9, 0xc6, 0xd6, 0xd7, 0x3c, 0x60, 0x5b, 0xc1, 0x50, 0x15, 0x8a, 0x0c, 0x87, 0x43, 0xcf,
> ++    0x77, 0x06, 0x46, 0xae, 0xa1, 0x35, 0x8b, 0xf6, 0x99, 0x8d, 0xb6, 0x20, 0x4f, 0x99, 0xeb, 0xf9,
> ++    0x46, 0x5e, 0xec, 0x21, 0x0d, 0xbe, 0x35, 0x65, 0x2e, 0x89, 0x98, 0xa1, 0xcb, 0xad, 0xa5, 0xa5,
> ++    0xbe, 0xe3, 0x30, 0x34, 0x0a, 0x67, 0xdf, 0x71, 0x18, 0xa2, 0x1a, 0x40, 0xb7, 0x8f, 0xbb, 0x27,
> ++    0x01, 0xf1, 0x7c, 0x66, 0x14, 0xc5, 0x5c, 0xec, 0x0b, 0xfa, 0x04, 0x2e, 0x07, 0x4e, 0x88, 0x7d,
> ++    0x76, 0x14, 0x83, 0x95, 0x04, 0x6c, 0x53, 0x4e, 0xec, 0x4d, 0xc1, 0x16, 0x14, 0x48, 0xc0, 0x3c,
> ++    0xe2, 0x53, 0x03, 0x1a, 0x5a, 0xb3, 0xdc, 0xde, 0xb2, 0xe4, 0x65, 0x5a, 0x93, 0xcb, 0xb4, 0x76,
> ++    0xfc, 0x91, 0x3d, 0x01, 0x99, 0xb7, 0x01, 0xc5, 0x93, 0x4a, 0x03, 0xe2, 0x53, 0x8c, 0x36, 0x21,
> ++    0x1b, 0xa8, 0xb4, 0x56, 0x6c, 0x3e, 0x34, 0x1f, 0x43, 0xe5, 0x01, 0x1e, 0x60, 0x86, 0x57, 0x25,
> ++    0xfe, 0x26, 0x14, 0xf0, 0x2b, 0xdc, 0x3d, 0xf2, 0x5c, 0x99, 0xf9, 0x5d, 0x18, 0xbf, 0xa9, 0xeb,
> ++    0xfb, 0xaf, 0x70, 0xb7, 0xf3, 0xc0, 0xd6, 0xf9, 0x54, 0xc7, 0x35, 0x7f, 0xd6, 0x60, 0x63, 0xe2,
> ++    0x2e, 0x6d, 0x4b, 0x54, 0x87, 0x32, 0x7e, 0xe5, 0xb1, 0x23, 0xca, 0x1c, 0x16, 0x51, 0xe1, 0xad,
> ++    0x62, 0x03, 0xff, 0xf4, 0x44, 0x7c, 0x41, 0x3b, 0x50, 0xe2, 0x16, 0x76, 0x8f, 0x1c, 0x66, 0x64,
> ++    0xc5, 0x69, 0xab, 0x0b, 0xa7, 0x7d, 0x3a, 0xa1, 0xee, 0x6e, 0xf1, 0xf5, 0x9b, 0xfa, 0x85, 0x5f,
> ++    0xff, 0xaa, 0x6b, 0x76, 0x51, 0x2e, 0xdb, 0x61, 0xe6, 0x9f, 0x1a, 0x20, 0x1e, 0xdb, 0x61, 0x48,
> ++    0xba, 0x98, 0xd2, 0x75, 0x1c, 0x6e, 0x86, 0x31, 0xd9, 0x34, 0xc6, 0xe4, 0x92, 0x19, 0x93, 0x4f,
> ++    0x61, 0x8c, 0x3e, 0xc3, 0x98, 0x26, 0xe4, 0x68, 0x80, 0xbb, 0x82, 0x47, 0x69, 0x37, 0x2c, 0x10,
> ++    0xe6, 0x15, 0xf8, 0xdf, 0xcc, 0xf1, 0x64, 0xb2, 0xcd, 0x1f, 0x61, 0xd3, 0xc6, 0xd4, 0xfb, 0x01,
> ++    0x1f, 0xb2, 0xd1, 0x5a, 0xce, 0xbc, 0x05, 0xf9, 0x97, 0x9e, 0xcb, 0xfa, 0xe2, 0xc0, 0x15, 0x5b,
> ++    0x1a, 0x3c, 0xfe, 0x3e, 0xf6, 0x7a, 0x7d, 0x26, 0x8e, 0x5b, 0xb1, 0x95, 0x65, 0x3e, 0x82, 0x8b,
> ++    0xfc, 0x0a, 0xd7, 0xc3, 0xa5, 0x7f, 0x32, 0x50, 0x51, 0xde, 0x14, 0x95, 0xce, 0xab, 0x09, 0x8a,
> ++    0x7a, 0xd9, 0x29, 0xf5, 0xee, 0xf0, 0xc4, 0x0b, 0xd6, 0xf1, 0xc0, 0x37, 0xda, 0xd7, 0xe3, 0x2a,
> ++    0x71, 0xfa, 0xa9, 0x12, 0x0a, 0x49, 0x43, 0x5b, 0x41, 0xd7, 0xa4, 0x06, 0x71, 0xf6, 0x14, 0xe7,
> ++    0xd8, 0x33, 0x57, 0x11, 0xa5, 0xe5, 0x15, 0x01, 0xef, 0x53, 0x11, 0xf1, 0x9c, 0x97, 0x53, 0x73,
> ++    0xce, 0xa0, 0xfc, 0xc8, 0x1b, 0x0c, 0xd6, 0x42, 0x1d, 0x9e, 0x08, 0xaf, 0x37, 0x29, 0x96, 0x8a,
> ++    0xad, 0x2c, 0x7e, 0x2b, 0xce, 0x60, 0xa2, 0xb9, 0x7c, 0x68, 0x76, 0x61, 0x63, 0x6f, 0x40, 0x28,
> ++    0xee, 0x1c, 0xac, 0x8b, 0xb3, 0xf2, 0xbe, 0x64, 0x91, 0x4a, 0xc3, 0xbc, 0x05, 0xe5, 0x43, 0xcf,
> ++    0x5d, 0xa5, 0x04, 0xe6, 0x37, 0x70, 0x51, 0xc2, 0x14, 0xe7, 0xee, 0x43, 0x29, 0x90, 0x45, 0x86,
> ++    0xa9, 0xa1, 0x89, 0xd6, 0xd2, 0x48, 0x24, 0x8d, 0x2a, 0xc5, 0x8e, 0xff, 0x82, 0xd8, 0xd3, 0x25,
> ++    0x26, 0x85, 0x2b, 0x53, 0x15, 0x7f, 0x97, 0x06, 0x87, 0x20, 0x17, 0x38, 0xac, 0xaf, 0xa8, 0x2c,
> ++    0xc6, 0x71, 0xf1, 0xcf, 0xbe, 0x8b, 0xf8, 0xff, 0xab, 0xc1, 0xe5, 0x6f, 0x03, 0xf7, 0x1d, 0x5b,
> ++    0x6a, 0x1b, 0x4a, 0x21, 0xa6, 0x24, 0x0a, 0xbb, 0x58, 0xaa, 0x71, 0x9a, 0xff, 0x29, 0x0c, 0x3d,
> ++    0x87, 0xb2, 0xe3, 0xfb, 0x84, 0x39, 0x93, 0xa8, 0x78, 0x62, 0xee, 0x5a, 0x8b, 0x2f, 0x18, 0x6b,
> ++    0x21, 0x0e, 0x6b, 0x67, 0xba, 0x70, 0xdf, 0x67, 0xe1, 0xc8, 0x8e, 0xbb, 0xaa, 0xde, 0x87, 0xcd,
> ++    0x79, 0x00, 0xa7, 0xcc, 0x09, 0x1e, 0xc9, 0xd0, 0x6d, 0x3e, 0xe4, 0x77, 0x7c, 0xea, 0x0c, 0xa2,
> ++    0x49, 0xc5, 0x4b, 0xe3, 0x5e, 0xe6, 0x73, 0x4d, 0x69, 0x50, 0xc8, 0xd6, 0xa2, 0x41, 0x37, 0x84,
> ++    0x04, 0x71, 0x67, 0xa9, 0x0d, 0xf4, 0x2b, 0x28, 0x3f, 0x73, 0xbc, 0xf5, 0x6c, 0x17, 0xc2, 0x45,
> ++    0xe9, 0x4b, 0xed, 0x36, 0xa7, 0x0b, 0xda, 0x72, 0x5d, 0xc8, 0xbc, 0x57, 0xa7, 0xbc, 0x2d, 0x35,
> ++    0x7b, 0x65, 0x61, 0x6c, 0x4b, 0x35, 0x9e, 0x56, 0xc6, 0xc7, 0xbc, 0xcc, 0x1c, 0x26, 0xc3, 0x4a,
> ++    0xa3, 0x8c, 0x84, 0x98, 0x4d, 0xd8, 0xd8, 0x23, 0xbe, 0x8f, 0xbb, 0xab, 0xf2, 0x64, 0x3a, 0x70,
> ++    0xe9, 0x0c, 0xa9, 0x36, 0xba, 0x06, 0x45, 0xfe, 0x4a, 0x3e, 0x9a, 0x26, 0xbe, 0xc0, 0xed, 0x43,
> ++    0xcf, 0xe5, 0x53, 0x9c, 0x67, 0x62, 0x4a, 0xbe, 0x23, 0x0a, 0xdc, 0xe6, 0x53, 0x06, 0x14, 0x4e,
> ++    0x71, 0x48, 0x3d, 0x22, 0x75, 0xa0, 0x64, 0x4f, 0x4c, 0x73, 0x1b, 0x2e, 0x3d, 0xe9, 0x47, 0xcc,
> ++    0x25, 0x2f, 0xfd, 0x55, 0xb7, 0xb6, 0x09, 0x59, 0x9f, 0xbc, 0x14, 0xae, 0x8b, 0x36, 0x1f, 0xf2,
> ++    0x74, 0x1d, 0x3a, 0x11, 0x5d, 0xd5, 0xe2, 0xcc, 0x0f, 0xa1, 0x62, 0x63, 0x1a, 0x0d, 0x57, 0x01,
> ++    0xdb, 0xbf, 0x00, 0xe4, 0x78, 0x75, 0xa0, 0xc7, 0x90, 0x17, 0xed, 0x0e, 0x35, 0x92, 0xca, 0x28,
> ++    0xde, 0x57, 0xab, 0x37, 0x96, 0x20, 0x54, 0xd2, 0x9e, 0x81, 0x2e, 0xdf, 0x7f, 0xe8, 0x56, 0x12,
> ++    0x78, 0xe1, 0xc1, 0x5d, 0xbd, 0xbd, 0x0a, 0xa6, 0x1c, 0xcb, 0x30, 0x43, 0x96, 0x1a, 0xe6, 0x59,
> ++    0xe9, 0xa5, 0x86, 0x19, 0xab, 0xa7, 0x03, 0xd0, 0xe5, 0x7b, 0x11, 0x25, 0x82, 0x67, 0x9e, 0xa6,
> ++    0x55, 0x73, 0x19, 0x44, 0x39, 0xec, 0x40, 0x8e, 0xeb, 0x37, 0xaa, 0x27, 0x61, 0x63, 0x0d, 0xa0,
> ++    0xda, 0x48, 0x07, 0x28, 0x57, 0x3b, 0x90, 0x17, 0x57, 0x9d, 0x7c, 0xd2, 0x38, 0x0b, 0xaa, 0x57,
> ++    0x17, 0xc8, 0xbf, 0xcf, 0x7f, 0x8c, 0xa1, 0x3d, 0xd0, 0x25, 0x0b, 0x92, 0x8f, 0x37, 0xc3, 0x90,
> ++    0x54, 0x27, 0x07, 0x00, 0xb1, 0x1f, 0x02, 0x1f, 0x25, 0xde, 0x53, 0x52, 0x8b, 0x49, 0x75, 0xf8,
> ++    0x05, 0xe4, 0x78, 0x97, 0x4f, 0xce, 0x51, 0xac, 0xff, 0xa7, 0x3a, 0xf8, 0x12, 0x72, 0x5c, 0xb9,
> ++    0x50, 0x22, 0x67, 0x16, 0x9f, 0xdd, 0xa9, 0x7e, 0x3a, 0x50, 0x3a, 0x7b, 0xae, 0xa2, 0x0f, 0x52,
> ++    0x32, 0x34, 0xf3, 0x9a, 0x4d, 0x75, 0xb5, 0x0f, 0x05, 0xf5, 0x86, 0x40, 0x89, 0x34, 0x99, 0x7d,
> ++    0x60, 0xa4, 0xba, 0x79, 0x08, 0xba, 0x6c, 0x58, 0xc9, 0x65, 0xb3, 0xd0, 0xcc, 0x96, 0x1c, 0x2d,
> ++    0xc7, 0xa5, 0x3c, 0x39, 0xc7, 0xb1, 0x86, 0x91, 0xcc, 0xc3, 0x99, 0x2e, 0xa0, 0x84, 0x81, 0xa6,
> ++    0x0b, 0x03, 0x5d, 0x29, 0x0c, 0x53, 0x56, 0xdb, 0x50, 0x50, 0x02, 0x9b, 0x92, 0xa8, 0x19, 0x9d,
> ++    0xae, 0xde, 0x5c, 0x8a, 0x51, 0x3e, 0x1f, 0x42, 0x71, 0xa2, 0xa8, 0x28, 0x71, 0xc1, 0x9c, 0xde,
> ++    0xa6, 0x65, 0x6d, 0xf7, 0xe0, 0xf5, 0xdb, 0xda, 0x85, 0x3f, 0xde, 0xd6, 0x2e, 0xfc, 0x34, 0xae,
> ++    0x69, 0xaf, 0xc7, 0x35, 0xed, 0xb7, 0x71, 0x4d, 0xfb, 0x7b, 0x5c, 0xd3, 0xbe, 0xfb, 0xec, 0xbc,
> ++    0xff, 0x59, 0xd9, 0xe6, 0x7f, 0x9e, 0x67, 0x8e, 0x75, 0xb1, 0xc5, 0x9d, 0xff, 0x02, 0x00, 0x00,
> ++    0xff, 0xff, 0xd3, 0xbf, 0xc3, 0xa9, 0x9b, 0x11, 0x00, 0x00,
> + }
> +
> + func (m *CreateTaskRequest) Marshal() (dAtA []byte, err error) {
> +@@ -2000,6 +2007,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintShim(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -2826,6 +2852,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovShim(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovShim(uint64(len(k))) + 1 + len(v) + sovShim(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovShim(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3237,9 +3271,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ID:` + fmt.Sprintf("%v", this.ID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4019,10 +4064,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4092,10 +4134,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4210,10 +4249,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4335,10 +4371,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4605,10 +4638,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4659,10 +4689,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4815,10 +4842,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4933,10 +4957,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5289,10 +5310,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5446,10 +5464,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5584,10 +5599,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5670,10 +5682,7 @@ func (m *PidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5758,10 +5767,7 @@ func (m *PidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5912,10 +5918,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6028,16 +6031,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowShim
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowShim
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipShim(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipShim(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6152,10 +6279,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6225,10 +6349,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6343,10 +6464,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6449,10 +6567,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6535,10 +6650,7 @@ func (m *StatsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6625,10 +6737,7 @@ func (m *StatsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6711,10 +6820,7 @@ func (m *ConnectRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6835,10 +6941,7 @@ func (m *ConnectResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6941,10 +7044,7 @@ func (m *ShutdownRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7027,10 +7127,7 @@ func (m *PauseRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7113,10 +7210,7 @@ func (m *ResumeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +index 9a2374b56..fae67de4f 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +@@ -844,7 +844,7 @@ func (p *unmarshal) field(file *generator.FileDescriptor, msg *generator.Descrip
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1484,12 +1484,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> +-                    p.In()
> +-                    p.P(`return ErrInvalidLength`, p.localName)
> +-                    p.Out()
> +-                    p.P(`}`)
> +-                    p.P(`if (iNdEx + skippy) < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1512,12 +1507,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +             p.P(`return err`)
> +             p.Out()
> +             p.P(`}`)
> +-            p.P(`if skippy < 0 {`)
> +-            p.In()
> +-            p.P(`return ErrInvalidLength`, p.localName)
> +-            p.Out()
> +-            p.P(`}`)
> +-            p.P(`if (iNdEx + skippy) < 0 {`)
> ++            p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +             p.In()
> +             p.P(`return ErrInvalidLength`, p.localName)
> +             p.Out()
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +index 1ce0be2fa..f85c0cc81 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +@@ -318,7 +318,7 @@ func unescape(s string) (ch string, tail string, err error) {
> +             if i > utf8.MaxRune {
> +                     return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
> +             }
> +-            return string(i), s, nil
> ++            return string(rune(i)), s, nil
> +     }
> +     return "", "", fmt.Errorf(`unknown escape \%c`, r)
> + }
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +index 98e269d54..e3d4d9490 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +@@ -592,10 +592,7 @@ func (m *Any) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthAny
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthAny
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +index 58bf4b53b..83e886920 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +@@ -1677,10 +1677,7 @@ func (m *Api) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1920,10 +1917,7 @@ func (m *Method) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2038,10 +2032,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +index 3959f0669..4deafcb1c 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +@@ -415,10 +415,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDuration
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDuration
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +index 17e3aa558..9e94748b3 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +@@ -360,10 +360,7 @@ func (m *Empty) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEmpty
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEmpty
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +index 7226b57f7..6ae346d92 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +@@ -636,10 +636,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthFieldMask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthFieldMask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +index 61045ce10..8e6ce71b2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +@@ -422,10 +422,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSourceContext
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSourceContext
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +index cea553eef..c0457312e 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +@@ -1862,7 +1862,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthStruct
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1879,10 +1879,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2087,10 +2084,7 @@ func (m *Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2175,10 +2169,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +index b81875267..45db7b3bb 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +@@ -437,10 +437,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTimestamp
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTimestamp
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +index 13b7ec02f..791427bb2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +@@ -2483,10 +2483,7 @@ func (m *Type) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2795,10 +2792,7 @@ func (m *Field) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3004,10 +2998,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3143,10 +3134,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3265,10 +3253,7 @@ func (m *Option) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +index 8f1edb57d..8d415420a 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +@@ -2020,10 +2020,7 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2085,10 +2082,7 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2158,10 +2152,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2231,10 +2222,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2304,10 +2292,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2377,10 +2362,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2451,10 +2433,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2537,10 +2516,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2625,10 +2601,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +--
> +2.30.2
> +
> --
> 2.30.2
>

>
>
>





Re: [PATCH] ceph: Upgrade to 16.2.0

Saul Wold
 

Bruce

I am aware there is a 16.2.1 that was just published on the 19th, I wanted to get visibility to the base upgrade which I just completed while I work on the dot dot update.

Ceph-17 is the next major release, but has not be released yet.

Thanks

Sau!

On 4/22/21 12:32 PM, Saul Wold wrote:
This updates the Ceph version to 16.2.0 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly
Signed-off-by: Saul Wold <saul.wold@...>
---
...h-fix-build-errors-for-cross-compile.patch | 119 ++++++++++++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
recipes-extended/ceph/ceph_16.2.0.bb | 22 ++--
3 files changed, 138 insertions(+), 34 deletions(-)
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 7764a2b..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 04b53b669dbd75c9a90bf7f8ae2b47ff96176239 Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile
1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)
Upstream-Status: Inappropriate [oe specific]
@@ -14,16 +19,17 @@ Adjust context for v14.2.3
Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>
---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 1 -
- src/pybind/rados/setup.py | 1 -
- src/pybind/rbd/setup.py | 1 -
- src/pybind/rgw/setup.py | 1 -
- 7 files changed, 8 insertions(+), 27 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)
diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index ff01aaf81..18656c5a5 100644
@@ -105,50 +111,111 @@ index b53b0d944..4955711a9 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c3d40df05..87cdeb473 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -137,7 +137,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 0d1047825..feafb605d 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -131,7 +131,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 73ea4555f..b9c6a78d2 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 663604e8f..695038c0e 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_16.2.0.bb b/recipes-extended/ceph/ceph_16.2.0.bb
index 806a03f..d55e602 100644
--- a/recipes-extended/ceph/ceph_16.2.0.bb
+++ b/recipes-extended/ceph/ceph_16.2.0.bb
@@ -58,7 +58,9 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
"
-inherit cmake python3native python3-dir systemd
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.
@@ -66,14 +68,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
"
-#SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-#SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-#SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-#SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-#SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
-SRC_URI[sha256sum] = "dfeee542536607220dc2ca49f47c41127c8562dea234a886625e0f7ee1524904"
SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"
@@ -149,6 +146,13 @@ do_install_append () {
mv ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
# WITH_FUSE is set to OFF, remove ceph-fuse related units
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
}
do_install_append_class-target () {
@@ -173,7 +177,8 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
"
FILES_${PN} += " \
@@ -190,6 +195,7 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \
--
Sau!


[PATCH] ceph: Upgrade to 16.2.0

Saul Wold
 

This updates the Ceph version to 16.2.0 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly

Signed-off-by: Saul Wold <saul.wold@...>
---
...h-fix-build-errors-for-cross-compile.patch | 119 ++++++++++++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
recipes-extended/ceph/ceph_16.2.0.bb | 22 ++--
3 files changed, 138 insertions(+), 34 deletions(-)
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch

diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 7764a2b..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 04b53b669dbd75c9a90bf7f8ae2b47ff96176239 Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile

1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)

Upstream-Status: Inappropriate [oe specific]

@@ -14,16 +19,17 @@ Adjust context for v14.2.3

Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>

---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 1 -
- src/pybind/rados/setup.py | 1 -
- src/pybind/rbd/setup.py | 1 -
- src/pybind/rgw/setup.py | 1 -
- 7 files changed, 8 insertions(+), 27 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)

diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index ff01aaf81..18656c5a5 100644
@@ -105,50 +111,111 @@ index b53b0d944..4955711a9 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c3d40df05..87cdeb473 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -137,7 +137,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 0d1047825..feafb605d 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -131,7 +131,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 73ea4555f..b9c6a78d2 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 663604e8f..695038c0e 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_16.2.0.bb b/recipes-extended/ceph/ceph_16.2.0.bb
index 806a03f..d55e602 100644
--- a/recipes-extended/ceph/ceph_16.2.0.bb
+++ b/recipes-extended/ceph/ceph_16.2.0.bb
@@ -58,7 +58,9 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
"
-inherit cmake python3native python3-dir systemd
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.

@@ -66,14 +68,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
"

-#SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-#SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-#SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-#SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-#SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
-SRC_URI[sha256sum] = "dfeee542536607220dc2ca49f47c41127c8562dea234a886625e0f7ee1524904"
SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"
@@ -149,6 +146,13 @@ do_install_append () {
mv ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
# WITH_FUSE is set to OFF, remove ceph-fuse related units
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
}

do_install_append_class-target () {
@@ -173,7 +177,8 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
"

FILES_${PN} += " \
@@ -190,6 +195,7 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \
--
2.25.1


Re: [PATCH v4] libvirt: uprev v6.3 -> v7.2

Bruce Ashfield
 

v4 worked, and is now merged to master.

Bruce

On Thu, Apr 22, 2021 at 9:49 AM Xu, Yanfei <yanfei.xu@...> wrote:

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.
v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.
v3-->v4:
1.fix apply failure
2.fix compiling error of libxl when enable 'xen' distro feature
3.add else statement to remove systemd dir when use sysvinit.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 205 +++++-------------
12 files changed, 59 insertions(+), 666 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index f48ec25..0f0126b 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -67,3 +67,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd7657..0c661af 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d6..0000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5..0000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d561..0000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df..0000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b5591..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e83..0000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc773..0000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fd..0000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index eeb1bf8..24748ef 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -167,31 +109,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
virtlockd.socket \
"

-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +131,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Ddriver_qemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Ddriver_libxl=enabled,-Ddriver_libxl=disabled,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +175,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +198,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -285,6 +207,8 @@ do_install_append() {
sed -i -e 's/Type=notify/Type=forking/' \
-e '/Type=forking/a PIDFile=/run/libvirtd.pid' \
${D}/${systemd_unitdir}/system/libvirtd.service
+ else
+ rm -rf ${D}/usr/lib/systemd
fi

# The /run/libvirt directories created by the Makefile are
@@ -360,7 +284,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +300,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +311,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0



--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


[PATCH v4] libvirt: uprev v6.3 -> v7.2

Xu, Yanfei
 

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.
v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.
v3-->v4:
1.fix apply failure
2.fix compiling error of libxl when enable 'xen' distro feature
3.add else statement to remove systemd dir when use sysvinit.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 205 +++++-------------
12 files changed, 59 insertions(+), 666 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index f48ec25..0f0126b 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -67,3 +67,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd7657..0c661af 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d6..0000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5..0000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d561..0000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df..0000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b5591..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e83..0000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc773..0000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fd..0000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index eeb1bf8..24748ef 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -167,31 +109,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
virtlockd.socket \
"

-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +131,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Ddriver_qemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Ddriver_libxl=enabled,-Ddriver_libxl=disabled,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +175,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +198,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -285,6 +207,8 @@ do_install_append() {
sed -i -e 's/Type=notify/Type=forking/' \
-e '/Type=forking/a PIDFile=/run/libvirtd.pid' \
${D}/${systemd_unitdir}/system/libvirtd.service
+ else
+ rm -rf ${D}/usr/lib/systemd
fi

# The /run/libvirt directories created by the Makefile are
@@ -360,7 +284,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +300,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +311,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0


Re: devtool modify docker failure

Bruce Ashfield
 

On Thu, Apr 22, 2021 at 6:53 AM <s.anandje1@...> wrote:

Hi,



I have made my yocto setup successfully.

The layers I have included is:

$ cat conf/bblayers.conf

${TOPDIR}/../poky/meta \

${TOPDIR}/../poky/meta-poky \

${TOPDIR}/../poky/meta-yocto-bsp \

${TOPDIR}/../layers/meta-openembedded/meta-filesystems \

${TOPDIR}/../layers/meta-openembedded/meta-networking \

/${TOPDIR}/../layers/meta-openembedded/meta-oe \

${TOPDIR}/../layers/meta-openembedded/meta-perl \

${TOPDIR}/../layers/meta-openembedded/meta-python \

${TOPDIR}/../layers/meta-virtualization \



I want to work on docker source code so I thought of fetching the source code from devtool.

But while I'm using devtool I'm facing an issue.



$ devtool modify --no-same-dir --extract docker-ce workspace/sources/docker

ERROR: Command Error: 'sh -c 'PATCHFILE="0001-libnetwork-use-GO-instead-of-go.patch" git -c user.name="OpenEmbedded" -c user.email="oe.patch@oe" commit -F /tmp/tmps5pr6pui --author="Bruce Ashfield <bruce.ashfield@...>" --date="Fri, 6 Apr 2018 23:58:22 -0400"'' exited with 0 Output:

On branch devtool

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git restore <file>..." to discard changes in working directory)

(commit or discard the untracked or modified content in submodules)

modified: libnetwork (modified content)



no changes added to commit (use "git add" and/or "git commit -a")

ERROR: Logfile of failure stored in: ${TOPDIR}/build/tmp/work/core2-64-poky-linux/docker-ce/19.03.8-ce+gitafacb8b7f0d8d4f9d2a8e8736e9c993e672b41f3-r0/devtooltmp-lnnatl98/temp/log.do_patch.27786



Is there any workaround to overcome this error?
You'd be better off asking on the oe-core mailing list. We don't do
anything specific in the docker recipe that is known to break devtool,
so it would be something generally wrong with devtool .. that and
you'll get a wider audience of potential devtool users.

I've never used devtool when working with sources, so I can't offer
any specific advice.

Cheers,

Bruce



Thanks & Regards

Anand




--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Re: devtool modify docker failure

@AnandJE
 

Hi,

 

I have made my yocto setup successfully.

The layers I have included is:

$ cat conf/bblayers.conf

  ${TOPDIR}/../poky/meta \

  ${TOPDIR}/../poky/meta-poky \

  ${TOPDIR}/../poky/meta-yocto-bsp \

  ${TOPDIR}/../layers/meta-openembedded/meta-filesystems \

  ${TOPDIR}/../layers/meta-openembedded/meta-networking \

  /${TOPDIR}/../layers/meta-openembedded/meta-oe \

  ${TOPDIR}/../layers/meta-openembedded/meta-perl \

  ${TOPDIR}/../layers/meta-openembedded/meta-python \

  ${TOPDIR}/../layers/meta-virtualization \

 

I want to work on docker source code so I thought of fetching the source code from devtool.

But while I'm using devtool I'm facing an issue.

 

$ devtool modify --no-same-dir --extract docker-ce workspace/sources/docker

ERROR: Command Error: 'sh -c 'PATCHFILE="0001-libnetwork-use-GO-instead-of-go.patch" git -c user.name="OpenEmbedded" -c user.email="oe.patch@oe" commit -F /tmp/tmps5pr6pui --author="Bruce Ashfield <bruce.ashfield@...>" --date="Fri, 6 Apr 2018 23:58:22 -0400"'' exited with 0  Output:

On branch devtool

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git restore <file>..." to discard changes in working directory)

  (commit or discard the untracked or modified content in submodules)

modified:   libnetwork (modified content)

 

no changes added to commit (use "git add" and/or "git commit -a")

ERROR: Logfile of failure stored in: ${TOPDIR}/build/tmp/work/core2-64-poky-linux/docker-ce/19.03.8-ce+gitafacb8b7f0d8d4f9d2a8e8736e9c993e672b41f3-r0/devtooltmp-lnnatl98/temp/log.do_patch.27786

 

Is there any workaround to overcome this error?

 

Thanks & Regards

Anand


Re: [PATCH v3] libvirt: uprev v6.3 -> v7.2

Bruce Ashfield
 

v3 looks better!

I did have it fail to apply to my master branch, so make sure that you are
on the tip of master (I pushed what I have to master-next for your reference).

I build with the 'xen' distro feature enabled when testing, and ran into this
error:

ERROR: libvirt-7.2.0-r0 do_configure: QA Issue: libvirt: configure was
passed unrecognised options: libxl [unknown-configure-option]
ERROR: libvirt-7.2.0-r0 do_configure: Fatal QA errors found, failing task.
ERROR: Logfile of failure stored in:
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt/7.2.0-r0/temp/log.do_configure.41162
ERROR: Task (/home/bruce/poky/meta-virtualization/recipes-extended/libvirt/libvirt_7.2.0.bb:do_configure)
failed with exit code '1'

Should be an easy enough fix, either the option has been dropped, or
renamed .. I didn't actually check which it was.

I'll wait for v4, before considering it for merge.

Bruce

On Wed, Apr 21, 2021 at 5:36 AM <yanfei.xu@...> wrote:

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.

v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 204 +++++-------------
12 files changed, 57 insertions(+), 667 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index cfc735d8..894a4946 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -68,3 +68,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd76572..0c661af8 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d64..00000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5c..00000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d5610..00000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df8..00000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef6..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b55915..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e839..00000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc7736..00000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile