]>
git.proxmox.com Git - proxmox-backup.git/log
Dietmar Maurer [Thu, 9 Jul 2020 11:55:15 +0000 (13:55 +0200)]
bump version to 0.8.3-1
Dominik Csapak [Wed, 8 Jul 2020 12:59:19 +0000 (14:59 +0200)]
get_disks: don't fail on zfs_devices
zfs does not have to be installed, so simply log an error and
continue, users still get an error when clicking directly on
ZFS
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Wed, 8 Jul 2020 12:59:18 +0000 (14:59 +0200)]
disks/zpool_status: add test for pool with special character
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Wed, 8 Jul 2020 12:59:17 +0000 (14:59 +0200)]
disks/zpool_list: allow some more characters for pool list
not exhaustive of what zfs allows (space is missing), but this
can be done easily without problems
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Wed, 8 Jul 2020 12:59:16 +0000 (14:59 +0200)]
zpool_list: add tests for special pool names
those names are allowed for zpools
these will fail for now, but it will be fixed in the next commit
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Wed, 8 Jul 2020 12:59:15 +0000 (14:59 +0200)]
api: add ZPOOL_NAME_SCHEMA and regex
poolnames can containe spaces and some other special characters
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Wolfgang Bumiller [Thu, 9 Jul 2020 10:08:00 +0000 (12:08 +0200)]
minor optimization to 'to_canonical_json'
* don't clone hash keys, just use references
* we don't need a String, stick to Vec<u8> and use
serde_json::to_writer to avoid a temporary strings
altogether
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dominik Csapak [Wed, 8 Jul 2020 11:32:20 +0000 (13:32 +0200)]
ui: adapt for new sign-only crypt mode
we can now show 'none', 'encprypted', 'signed' or 'mixed' for
the crypt mode
also adds a different icon for signed files, and adds a hint that
signatures cannot be verified on the server
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dietmar Maurer [Thu, 9 Jul 2020 11:25:38 +0000 (13:25 +0200)]
src/backup/manifest.rs: add default toömake it compatible with older backus
Dietmar Maurer [Thu, 9 Jul 2020 09:59:10 +0000 (11:59 +0200)]
bump version toö 0.8.2-1
Thomas Lamprecht [Thu, 9 Jul 2020 09:39:07 +0000 (11:39 +0200)]
buildsys: also upload debug packages
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Dietmar Maurer [Thu, 9 Jul 2020 09:28:05 +0000 (11:28 +0200)]
src/backup/manifest.rs: rename into_string -> to_string
And do not consume self.
Dietmar Maurer [Thu, 9 Jul 2020 08:01:31 +0000 (10:01 +0200)]
bump version to 0.8.1-1
Dietmar Maurer [Thu, 9 Jul 2020 07:48:30 +0000 (09:48 +0200)]
src/backup/manifest.rs: use serde_json::from_value() to deserialize data
Also modified from_data compute signature ditectly from json.
Wolfgang Bumiller [Thu, 9 Jul 2020 07:34:58 +0000 (09:34 +0200)]
typos
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Thu, 9 Jul 2020 07:20:49 +0000 (09:20 +0200)]
src/backup/manifest.rs: cleanup signature generation
Dietmar Maurer [Thu, 9 Jul 2020 07:15:15 +0000 (09:15 +0200)]
tests/blob_writer.rs: make it work again
Thomas Lamprecht [Wed, 8 Jul 2020 17:08:16 +0000 (19:08 +0200)]
ship pbstest repo as sources.list.d file for beta
NOTE: the repo url is not yet working at time of commit, this is a
preparatory step.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Wed, 8 Jul 2020 16:17:52 +0000 (18:17 +0200)]
docs: package repos: drop non-tests for now
they won't work and thus just confuse people, re-add them once we're
releasing final.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Wed, 8 Jul 2020 16:15:33 +0000 (18:15 +0200)]
docs: move host sysadmin out to own chapter, fix ZFS one
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Wed, 8 Jul 2020 16:14:17 +0000 (18:14 +0200)]
docs: add missing todos
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Oguz Bektas [Wed, 8 Jul 2020 12:41:48 +0000 (14:41 +0200)]
add local-zfs.rst
content is > 90% same as local-zfs.adoc in pve-docs.
adapted the format for .rst
fixed some typos and wrote some parts slightly different (wording).
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
Dietmar Maurer [Wed, 8 Jul 2020 14:07:14 +0000 (16:07 +0200)]
src/backup/manifest.rs: include signature inside the manifest
This is more flexible, because we can choose what fileds we want to sign.
Dietmar Maurer [Wed, 8 Jul 2020 12:06:50 +0000 (14:06 +0200)]
src/backup/file_formats.rs: remove signed chunks
We can include signature in the manifest instead (patch will follow).
Thomas Lamprecht [Wed, 8 Jul 2020 13:41:09 +0000 (15:41 +0200)]
docs: fix repo paths
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Oguz Bektas [Wed, 8 Jul 2020 11:25:46 +0000 (13:25 +0200)]
improve administration guide
fixing some typos and grammar errors.
added example file layout for datastores.
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 11:52:17 +0000 (13:52 +0200)]
client: introduce --keyfd parameter
This is a more convenient way to pass along the key when
creating encrypted backups of unprivileged containers in PVE
where the unprivileged user namespace cannot access
`/etc/pve/priv`.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Wed, 8 Jul 2020 10:49:21 +0000 (12:49 +0200)]
src/backup/crypt_config.rs - compute_digest: make it more secure
Thomas Lamprecht [Wed, 8 Jul 2020 10:21:56 +0000 (12:21 +0200)]
ui: ds/content: disable some button for in-progress backup
We cannot verify, download, file-browse backups which are currently
in progress.
'Forget' could work but is probably not desirable?
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Wed, 8 Jul 2020 10:09:09 +0000 (12:09 +0200)]
ui: ds/content: do not count in-progress backups for last made one
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Wed, 8 Jul 2020 10:08:02 +0000 (12:08 +0200)]
ui: ds/content: show spinner for backups in progress
use the fact that they do not have a size property at all
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 08:56:16 +0000 (10:56 +0200)]
more xdg cleanup and encryption parameter improvements
Have a single common function to get the BaseDirectories
instance and a wrapper for `find()` and `place()` which
wrap the error with some context.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 08:42:05 +0000 (10:42 +0200)]
client: xdg usage: place() vs find()
place() is used when creating a file, as it will create
intermediate directories, only use it when actually placing
a new file.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Wed, 8 Jul 2020 08:42:20 +0000 (10:42 +0200)]
src/client/backup_writer.rs - upload_stream: add crypt_mode
Wolfgang Bumiller [Wed, 8 Jul 2020 08:09:15 +0000 (10:09 +0200)]
client: fix schema to include --crypt-mode parameter
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 07:58:29 +0000 (09:58 +0200)]
pxar: less confusing logic
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 07:19:24 +0000 (09:19 +0200)]
DataStore::load_manifest: also return CryptMode
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 07:18:44 +0000 (09:18 +0200)]
add DataBlob::crypt_mode
and move use statements up
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Wed, 8 Jul 2020 07:18:13 +0000 (09:18 +0200)]
remove CryptMode::sign_only special method
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Wed, 8 Jul 2020 06:52:27 +0000 (08:52 +0200)]
src/backup/manifest.rs: support old encrypted property
Just to avoid confusion.
Wolfgang Bumiller [Tue, 7 Jul 2020 13:20:20 +0000 (15:20 +0200)]
introduce a CryptMode enum
This also replaces the recently introduced --encryption
parameter on the client with a --crypt-mode parameter.
This can be "none", "encrypt" or "sign-only".
Note that this introduces various changes in the API types
which previously did not take the above distinction into
account properly:
Both `BackupContent` and the manifest's `FileInfo`:
lose `encryption: Option<bool>`
gain `crypt_mode: Option<CryptMode>`
Within the backup manifest itself, the "crypt-mode" property
will always be set.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Thomas Lamprecht [Tue, 7 Jul 2020 11:24:39 +0000 (13:24 +0200)]
docs: add getting help section
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Tue, 7 Jul 2020 11:23:17 +0000 (13:23 +0200)]
docs: features: minor wording
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Tue, 7 Jul 2020 11:22:02 +0000 (13:22 +0200)]
docs: drop initial out of context sentence
the footer mentions sphinx and this feels weird to read as user
(which doesn't really cares what language/format the source of the
docs are in)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Dietmar Maurer [Tue, 7 Jul 2020 08:15:44 +0000 (10:15 +0200)]
bump version to 0.8.0-1
Dietmar Maurer [Tue, 7 Jul 2020 08:11:04 +0000 (10:11 +0200)]
src/tools/runtime.rs: implement get_runtime_with_builder
Dietmar Maurer [Tue, 7 Jul 2020 05:40:22 +0000 (07:40 +0200)]
bump version to 0.7.0-1
Dietmar Maurer [Tue, 7 Jul 2020 05:34:58 +0000 (07:34 +0200)]
src/client/remote_chunk_reader.rs: implement clone for RemoteChunkReader
Thomas Lamprecht [Mon, 6 Jul 2020 12:40:58 +0000 (14:40 +0200)]
docs: move todolist to own document, don't link in release build
It is always build for html, but not linked if the devbuild tag isn't
set. This tag is set in the Makefile if the $(BUILD_MODE) variable
isn't "release".
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Wolfgang Bumiller [Mon, 6 Jul 2020 12:35:28 +0000 (14:35 +0200)]
client: add --encryption boolen parameter
This can be used to explicitly disable encryption even if a
default key file exists in ~/.config.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Mon, 6 Jul 2020 10:07:50 +0000 (12:07 +0200)]
client: use default encryption key if it is available
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Mon, 6 Jul 2020 09:39:24 +0000 (11:39 +0200)]
client: move key management into separate module
and use api macro for methods and Kdf type
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Fri, 3 Jul 2020 07:45:25 +0000 (09:45 +0200)]
minor style & whitespace fixups
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Thomas Lamprecht [Sat, 4 Jul 2020 15:57:47 +0000 (17:57 +0200)]
docs: sync up copyright years
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Sat, 4 Jul 2020 15:53:58 +0000 (17:53 +0200)]
docs: todo: avoid leaking build details, link only
One can just search for them... If really wanted, we could set it to
true for dev builds (i.e., no DEB_VERSION defined)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Sat, 4 Jul 2020 15:53:01 +0000 (17:53 +0200)]
d/rules: do not compress .pdf files
as else the docs .pdf is a PITA to use for some endusers..
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Sat, 4 Jul 2020 15:51:56 +0000 (17:51 +0200)]
docs: do not hardcode version
use the debian package ones, if not defined we're doing a dev build
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 17:37:43 +0000 (19:37 +0200)]
d/control: add missing dependencies for lvm, smartmontools and ZFS
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 16:58:14 +0000 (18:58 +0200)]
docs: rework and add a bit to introduction
Contributed-by: Daniela Häsler <daniela@proxmox.com>
[ discussed and edited some parts live with me, Thomas ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 16:57:01 +0000 (18:57 +0200)]
docs: fix index title
Contributed-by: Daniela Häsler <daniela@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 16:03:51 +0000 (18:03 +0200)]
ui: ZFS create: set name-field minLength to 3 to match backend
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 15:59:58 +0000 (17:59 +0200)]
ui: ZFS create: use correct typeParameter name for disk selector
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 15:59:30 +0000 (17:59 +0200)]
api: disks: indentation fixup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 15:20:33 +0000 (17:20 +0200)]
ui: ZFS list: fix details top-bar button handler
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Fri, 3 Jul 2020 15:19:59 +0000 (17:19 +0200)]
ui: buildsys: actually include PBS.window.ZFSCreate component in source
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Dietmar Maurer [Fri, 3 Jul 2020 14:45:47 +0000 (16:45 +0200)]
src/bin/proxmox_backup_client/catalog.rs: split out catalog code
Dominik Csapak [Fri, 3 Jul 2020 10:48:50 +0000 (12:48 +0200)]
ui: fix glitch on some zoom steps
if the baseCls is not 'x-plain' the background of the flex
element is white, and on some zoom steps it gets taller
than one pixel and appears as a white line
making it have the plain baseCls, so it does not get any
background color and is always invisible
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Fri, 3 Jul 2020 10:48:49 +0000 (12:48 +0200)]
add beta text with link to bugtracker
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dietmar Maurer [Fri, 3 Jul 2020 07:46:19 +0000 (09:46 +0200)]
bump version to 0.6.0-1
Dietmar Maurer [Fri, 3 Jul 2020 05:36:23 +0000 (07:36 +0200)]
make ReadChunk not require mutable self.
That way we can reduce lock contentions because we lock for much shorter
times.
Dominik Csapak [Wed, 1 Jul 2020 11:46:00 +0000 (13:46 +0200)]
ui: increase timeout for snapshot listing
the api call can take a very long time (for now), until we can
improve that, increase the timeout from the default of 30s
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dietmar Maurer [Thu, 2 Jul 2020 16:04:29 +0000 (18:04 +0200)]
src/bin/proxmox_backup_client/task.rs: split out task command
Dietmar Maurer [Thu, 2 Jul 2020 15:49:08 +0000 (17:49 +0200)]
src/bin/proxmox_backup_client/mount.rs: split out mount code
Thomas Lamprecht [Thu, 2 Jul 2020 15:20:38 +0000 (17:20 +0200)]
ui: consistently spell Datastore without space between words
Not even hard feeling on 'Datastore' vs. 'Data Store' but consistency
is desired in such names.
Talked shortly with Dominik, which also slightly favored the one
without space - so just go for that one.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Thu, 2 Jul 2020 15:05:58 +0000 (17:05 +0200)]
ui: disk create: sync and improve 'add-datastore' checkbox label
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Dietmar Maurer [Thu, 2 Jul 2020 12:00:32 +0000 (14:00 +0200)]
proxmox-backup-client: add benchmark command
This is just a start, We need to add more useful things here...
Wolfgang Bumiller [Tue, 30 Jun 2020 12:41:42 +0000 (14:41 +0200)]
pxar: fixup 'vanished-file' logic a bit
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Wolfgang Bumiller [Tue, 30 Jun 2020 12:37:20 +0000 (14:37 +0200)]
pxar: fix missing newlines in warnings
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Tue, 30 Jun 2020 11:28:42 +0000 (13:28 +0200)]
DataStoreConfig.js: add verify button
Dietmar Maurer [Tue, 30 Jun 2020 11:22:02 +0000 (13:22 +0200)]
DataStoreContent.js: add verify button
Dietmar Maurer [Tue, 30 Jun 2020 11:11:22 +0000 (13:11 +0200)]
src/api2/admin/datastore.rs: avoid slash in UPID strings
Dietmar Maurer [Mon, 29 Jun 2020 11:01:11 +0000 (13:01 +0200)]
bump version to 0.5.0-1
Dietmar Maurer [Mon, 29 Jun 2020 10:59:25 +0000 (12:59 +0200)]
fix typo
Dietmar Maurer [Mon, 29 Jun 2020 10:44:45 +0000 (12:44 +0200)]
partially revert commit
1f82f9b7b5d231da22a541432d5617cb303c0000
do it backwards compatible. Also, code was wrong because FixedIndexWriter
still computed old style csums...
Dietmar Maurer [Fri, 26 Jun 2020 13:58:06 +0000 (15:58 +0200)]
ui: allow to Forget (delete) backup snapshots.
Wolfgang Bumiller [Fri, 26 Jun 2020 09:49:51 +0000 (11:49 +0200)]
pxar: deal with files changing size during archiving
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Dietmar Maurer [Fri, 26 Jun 2020 08:43:52 +0000 (10:43 +0200)]
bump version to 0.4.0-1
Dietmar Maurer [Fri, 26 Jun 2020 08:40:47 +0000 (10:40 +0200)]
depend on proxmox 0.1.41
Dominik Csapak [Thu, 25 Jun 2020 12:53:05 +0000 (14:53 +0200)]
ui: add ZFS management
adds a ZFSList and ZFSCreate class, modeled after the one in pve
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 12:53:00 +0000 (14:53 +0200)]
fix test output
field separator for pools is always a tab when using -H
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dietmar Maurer [Fri, 26 Jun 2020 07:45:59 +0000 (09:45 +0200)]
src/backup/verify.rs: do not stop on server shutdown
This is a read-only task, so there is no need to stop.
Dominik Csapak [Wed, 24 Jun 2020 07:04:35 +0000 (09:04 +0200)]
WorkerTask: add warnings and count them
so that we have one level more between errors and OK
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:52 +0000 (10:45 +0200)]
ui: dashboard: remove 'wobbling' of tasks that have the same duration
by sorting them by upid after sorting by duration
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:51 +0000 (10:45 +0200)]
ui: dashboard: use last value for holes in history graph
it is only designed to be a quick overview, so having holes there
is not really pretty and since we do not even show any date
for the points, we can simply reuse the last value for holes
the 'real' graph with holes is still available on the
DataStoreStatistics panel
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:50 +0000 (10:45 +0200)]
fix typo
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:49 +0000 (10:45 +0200)]
improve 'debug' parameter
instead of checking on '1' or 'true', check that it is there and not
'0' and 'false'. this allows using simply
https://foo:8007/?debug
instead of
https://foo:8007/?debug=1
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:48 +0000 (10:45 +0200)]
ui: automatically add 'localhost' as nodename for all panels
this will make refactoring easier for panels that are reused from pve
(where we always have a hostname)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dominik Csapak [Thu, 25 Jun 2020 08:45:47 +0000 (10:45 +0200)]
ui: show proper loadMask for DataStoreContent
we have to use the correct store, and we have to manually show the
error (since monStoreErrors only works for Proxmox Proxies)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Dietmar Maurer [Fri, 26 Jun 2020 07:00:34 +0000 (09:00 +0200)]
src/backup/index.rs: add compute_csum
And use it for fixed and dynamic index. Please note that this
changes checksums for fixed indexes, so restore older backups
will fails now (not backward compatible).
Dietmar Maurer [Fri, 26 Jun 2020 06:59:51 +0000 (08:59 +0200)]
examples/upload-speed.rs: fix compile error