Commit Graph

444 Commits

Author SHA1 Message Date
Robert Baldyga
61dff1f6fd Move private field to struct cas_exp_obj
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:37 +02:00
Robert Baldyga
dc390adf49 Move exported object specific properties to struct cas_exp_obj
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:37 +02:00
Robert Baldyga
72cf855355 Move openers_lock to struct cas_exp_obj
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:37 +02:00
Robert Baldyga
67ed36ae0e Remove disk kobj
Simplify disk life cycle.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:37 +02:00
Robert Baldyga
2f54aea87d Remove exported object kobj
Simplify exported object lifecycle.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:36 +02:00
Robert Baldyga
ad783917d0 Remove one-liner helper functions
Those were not very helpful. Mostly made the code harder to read.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:20:47 +02:00
Robert Baldyga
1fe83b4972 Manage lifetime of exported object in top adapter
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:20:42 +02:00
Robert Baldyga
74c17d5115
Merge pull request #1351 from live4thee/fix-compile-error
cas_cache: fix compile error when set CAS_DEBUG_IO=1
2022-09-20 16:04:56 +02:00
Robert Baldyga
8945b482ce Remove private parameter from cas_disk_open()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 15:37:58 +02:00
Robert Baldyga
6d2266f7ee Remove cas_disk_claim()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 15:37:56 +02:00
David Lee
193f2c9a3a cas_cache: fix compile error when set CAS_DEBUG_IO=1
Signed-off-by: David Lee <live4thee@gmail.com>
2022-09-19 19:21:43 +08:00
Robert Baldyga
4ed64582a6 Remove cas_disk from naming in code
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 10:38:21 +02:00
Robert Baldyga
edc293495d Remove cas_disk.h
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-16 15:16:28 +02:00
Robert Baldyga
2aae800c45 Move helpers from headers to source files
Move helper functions that are used in only one source file to that file.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-16 15:16:28 +02:00
Robert Baldyga
a7370366cb Remove unused functions
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-16 15:16:28 +02:00
Robert Baldyga
13d3decfa9 Consolidate modules
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-16 15:16:28 +02:00
Robert Baldyga
a03c577f59
Merge pull request #1319 from robertbaldyga/casdsk-remove-dead-code
Clean cas_disk out of dead code
2022-09-09 09:54:34 +02:00
Robert Baldyga
ba7f693cff Clean cas_disk_defs.h header
Move definitions used only in only one source code file to that file.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-07 10:44:45 +02:00
Robert Baldyga
320c998a1d Remove cas_disk message prefixes
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-07 10:44:37 +02:00
Robert Baldyga
f70789e127 Remove cas_disk kobject
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-31 17:55:53 +02:00
Adam Rutkowski
aaab620c8d use INIT_WORK_ONSTACK for work on stack
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2022-09-01 01:04:22 +02:00
Robert Baldyga
4881e6c0f0 Remove casdsk_disk mode
The mode is no longer needed. Remove remaining dead code.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 13:02:25 +02:00
Robert Baldyga
8eb512a743 Remove cas_disk symbol lookup
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 13:02:25 +02:00
Robert Baldyga
16576c7a95 Remove "mode" sysfs property of casdsk_disk
After removal of PT mode this property is meaningless.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 13:02:25 +02:00
Robert Baldyga
563aeb0058 Remove casdsk_disk_shutdown_all()
As we no longer have in flight upgrade, all exported objects are guaranteed
to be destroyed before cas_cache module is unloaded, so this deinit
mechanism is not needed anymore.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 13:02:25 +02:00
Robert Baldyga
10910d1a65 Remove PT mode from cas_disk
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 12:34:59 +02:00
Robert Baldyga
3102856025 Remove unused exported symbols from cas_disk
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 12:33:51 +02:00
Karolina Rogowska
4fc0c4f8bb
Merge pull request #1310 from pdebski21/fix_standby_detach_error_msg
Fix error message when CAS already is in standby detach state
2022-08-19 15:01:24 +02:00
Piotr Debski
9273b39d5d Fix error message for cache already in standby detach state
Signed-off-by: Piotr Debski <piotr.debski@intel.com>
2022-08-19 12:36:22 +02:00
Krzysztof Majzerowicz-Jaszcz
e997f768b0 Rework for RHEL8.5
Rework for RHEL8.5 compatibility to avoid potential bug of exiting queue
after IO completion on a different CPU.

Targeted RHEL kernel version corrected.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-16 13:50:59 +02:00
Krzysztof Majzerowicz-Jaszcz
b983eeb751 RHEL8.5 kernel 4.18 support fix
This patch adds support for RHEL8.5 with kernel 4.18.0.348.2.1.el8 and
later.

Additional request queue operations added for these kernels.
Configure scripts added/updated.

Fixes #1278

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-12 08:52:36 +02:00
Krzysztof Majzerowicz-Jaszcz
bd9548cff4 Potential double IO completion fix
In specific circumstances, IO could be completed twice.
This patch fixes this problem.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-10 11:28:43 +02:00
Piotr Debski
dd95c8be4d Add core, try-add script missing core-id parameter fix
Signed-off-by: Piotr Debski <piotr.debski@intel.com>
2022-07-12 11:14:44 +02:00
Adam Rutkowski
738a07c821 avoid overflow in disk openers counter
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2022-06-27 16:21:44 +02:00
Robert Baldyga
c3f5a209c0
Merge pull request #1246 from robertbaldyga/dev-conf-lifecycle-fix
Fix device config life cycle management
2022-06-27 12:04:23 +02:00
Krzysztof Majzerowicz-Jaszcz
2739d83bec Fix for null pointer dereference bug
Null pointer dereference occurs when terminating cache is standby detached state.
This fixes this problem.

Fixes #1235

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-06-24 06:06:49 -04:00
Robert Baldyga
f2adc702e7 Fix device config life cycle management
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-06-24 08:52:32 +02:00
Michal Mielewczyk
d9e643a41a Leave space for terminating buffers with null
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-06-24 08:05:11 +02:00
Robert Baldyga
7e6c8b97d7 Fix required memory check in the fallback path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-06-22 20:41:27 +02:00
Jan Musial
6771f54b69 Use new OCF volume API
Signed-off-by: Jan Musial <jan.musial@intel.com>
2022-06-09 12:54:32 +02:00
Krzysztof Majzerowicz-Jaszcz
12ddca1cf3 OpenCAS Linux kernel 5.15 adaptation
This patch adapts OpenCAS Linux to compile and work with kernel v5.15

Commit id's from the kernel affecting OpenCAS:

commit 0e0ccdecb3cff95a350b4364e7ebbaa754d0e47d
    block: remove bdget_disk

commit 9c2b9dbafc067e173db30c4fd0636392d27944e8
    block: remove alloc_disk and alloc_disk_node

commit a8698707a1835be3abd12a3b28079a80999f8dee
    block: move bd_mutex to struct gendisk

commit 2cece3778475abc855084d897a3cf61249798ad9
    scsi: scsi_ioctl: Remove scsi_req_init()

commit 2f4731dcd0bb73379fbb9e3eb07ae7324125caef
    block: remove bdput

commit 14cf1dbb55bb07427babee425fd2a8a9300737cc
    block: remove bdgrab

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-06-09 08:49:32 +02:00
Piotr Debski
f773d7fff3 standard error message for each disallowed management operation in standby mode
Signed-off-by: Piotr Debski <piotr.debski@intel.com>
2022-04-25 23:47:52 +02:00
Robert Baldyga
8fae9e2476 Destroy exp obj workqueue properly
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-04-08 17:16:04 +02:00
Adam Rutkowski
5bcba78e7f Make sure classifier string is null terminated
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2022-04-08 16:42:25 +02:00
Michal Mielewczyk
531c7856bd Prevent uninitialized value
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-04-08 16:42:25 +02:00
Michal Mielewczyk
68cadd90f8 Destroy volume if it couldn't be opened
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-04-08 16:42:25 +02:00
Robert Baldyga
737d19f00d Wait for cleaner thread completion before destroying priv
_cas_stop_thread() function synchronizes with cleaner thread, so after
that we can be sure that there are no more ongoing cleaning requests.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-04-07 14:07:06 +02:00
Robert Baldyga
df36c027a6 Do not destroy expobj_wq if destroying exporting object failed
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-31 21:36:27 +02:00
Michal Mielewczyk
fb97333688 Don't remove core exported objects on standby stop
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-03-29 09:40:28 +02:00
Robert Baldyga
eae8bf92e5
Merge pull request #1134 from rafalste/permissions_cleanup
Packages and permissions improvements
2022-03-28 21:34:56 +02:00
Robert Baldyga
f73ab567ee
Merge pull request #1136 from robertbaldyga/cache-mode-standby-error
Return error on cache mode change in standby mode
2022-03-28 14:33:08 +02:00
Robert Baldyga
4ca0eb0530
Merge pull request #1135 from robertbaldyga/core-remove-fixes
Core remove fixes
2022-03-28 13:51:44 +02:00
Rafal Stefanowski
d19fc94d14 Improve package creation
- ddiskit related modifications
- fix for resolving weak-modules symlinks

Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2022-03-28 12:05:59 +02:00
Rafal Stefanowski
cb8d1cffae Fix files/dirs permissions
- change modes to proper values
- replace 'mkdir' with 'install'
- remove unused files and dirs

Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2022-03-28 11:49:38 +02:00
Robert Baldyga
fd1b2dc121 Do not print exported object path if it was removed
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-28 09:01:57 +02:00
Robert Baldyga
4c431bf71c Return error on cache mode change in standby mode
Changing cache mode to the same mode is a special case that in OCL is
handled on the kernel level, without calling an OCF API. In result it
seemed to succeed even in standby mode, which should return an error.

Explicitly check for standby to return an appropriate error code.


Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-27 21:31:29 +02:00
Robert Baldyga
59f2a86db0
Merge pull request #1085 from hammerg/bio_max_vecs
configure/bio_max_vecs: adapt to kernel 5.12
2022-03-25 22:21:45 +01:00
Robert Baldyga
76db828e4c Skip already removed exported objects on cache stop
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-25 21:35:07 +01:00
Robert Baldyga
f7fa4ae140 Add missing ioctl codes to the index
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-25 21:34:22 +01:00
Michal Mielewczyk
3f525179e4 Put module in case of failing to finalize activate
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-03-24 09:16:50 +01:00
Michal Mielewczyk
387e22eaaa Remain in standby in case of minor activate error
Instead of stopping passive instance in case of every possible error, allow it
to remain in standby mode if the error was handleable

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-03-24 09:16:50 +01:00
Michal Mielewczyk
d9d8062f7c Mark cache priv as inited during activate
Cache priv is being allocated on starting cache instance and is freed only when
stopping cache. This cachnge allows to properly handle rollback if activate has
failed. Without setting this flag managment queue is not being stopped despite
its cache doesn't exist.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-03-24 09:16:50 +01:00
Michal Mielewczyk
8a8420be2a Fix error message about not enough amount of RAM
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-03-22 09:22:55 +01:00
Robert Baldyga
a185a6e595 Propagate io->dir flags when submitting flush bio in bottom volume
When dir is ignored, and 0 is passed instead, each flush request will
appear as READ request, which is not supported by some block device
drivers.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-17 20:43:15 +01:00
Robert Baldyga
e4d4750f96 Don't propagate bio flags to OCF for discard I/O
One of the steps of discarding data in cache is invalidating OCF metadata.
If a cache line which is supposed to be discarded is dirty, invalidating
it will require flushing metadata. Unfortunately, OCF allocates flushing
requests with the exactly the same flags as the original IO (in this case
discard flag is set) so the page on the disk is discarded instead of being
flushed. In case of power failure occurring before the metadata is flushed
to the disk, the data may be corrupted even if recovery will succeed.

Disabling propagation of original I/O flags for discard requests solves
this problem.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-16 13:44:44 +01:00
Robert Baldyga
430d971bb9
Merge pull request #1088 from robertbaldyga/activate-ignore-part-check
Ignore partitions check on standby activate
2022-03-10 21:32:44 +01:00
Robert Baldyga
be328691af Remove extra whitespace
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-09 15:52:47 +01:00
Robert Baldyga
91508af014 Remove unused error code
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-09 15:52:47 +01:00
Robert Baldyga
8cd28d13ae Ignore partitions check on standby activate
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-09 12:02:06 +01:00
Robert Baldyga
7ba87f767d
Merge pull request #1082 from pdebski21/complete_reinit_fix
initializing completion twice replaced with reinit
2022-03-08 16:49:04 +01:00
Gal Hammer
4ed8a59402 configure/bio_max_vecs: adapt to kernel 5.12
The bio_alloc_bioset() function now BUG() if trying to allocate a bio
with more than BIO_MAX_VECS vectors.

A no-limit value (-1) is defined in order not to change old kernels'
behaviour.

Signed-off-by: Gal Hammer <gal.hammer@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
2022-03-08 16:06:03 +02:00
Robert Baldyga
759338e742 Remove "metadata_layout" module parameter
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-08 08:53:47 +01:00
Robert Baldyga
1f15724b88
Merge pull request #1053 from hammerg/fix_kernel_5.12_v2
Add a support for kernel 5.12
2022-03-08 08:25:58 +01:00
Gal Hammer
4bb435555f configure/bd_part_count: adapt to kernel 5.12
Moved cas_blk_get_part_count function to configure section after the
the disk's partitions table was changed to xarray.

Signed-off-by: Gal Hammer <gal.hammer@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
2022-03-07 09:44:35 +01:00
Gal Hammer
fea5e72d8c configure/module_mutex: adapt to kernel 5.12
The module_mutex is internal to the module loader since kernel
commit 922f2a7c.

Signed-off-by: Gal Hammer <gal.hammer@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-07 09:41:59 +01:00
Piotr Debski
e7a9f29d36 initializing completion twice replaced with reinit
Signed-off-by: Piotr Debski <piotr.debski@intel.com>
2022-02-27 02:50:20 +01:00
Piotr Debski
7b304d9f48 When core exported object name exists activation fails and cache is stopped
Signed-off-by: Piotr Debski <piotr.debski@intel.com>
2022-02-25 23:06:17 +01:00
Jan Musial
9da912e485 Forbid using load with other options in cas_cache
Signed-off-by: Jan Musial <jan.musial@intel.com>
2022-02-10 12:06:37 +01:00
Jan Musial
2ff055d689 Don't generate cache_id's on casadm side and use loaded cache params
Signed-off-by: Jan Musial <jan.musial@intel.com>
2022-02-10 12:06:37 +01:00
Robert Baldyga
7041517bf4
Merge pull request #1040 from robertbaldyga/fix-core-add-bug
Protect core config preparation function against non-existing cache
2022-01-12 12:29:54 +01:00
Robert Baldyga
05e0590fbc Protect core config preparation function against non-existing cache
It is legal to call KCAS_IOCTL_INSERT_CORE against non-existing cache
(in try_add mode), however in that case core_id has to be provded.
Return error code in case when given cache id does not exist and core_id
is set to OCF_CORE_MAX.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-01-10 20:03:50 +01:00
Robert Baldyga
63bab9584c Redesign failover standby management
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-01-05 16:17:52 +01:00
Robert Baldyga
b0a3c9cd45
Merge pull request #982 from robertbaldyga/remove-redundant-io-get-put
Remove redundant ocf_io_get()/ocf_io_put() from bottom volume
2021-12-27 15:21:32 +01:00
Adam Rutkowski
0f6a024025 Make device parameter obligatory in failover activate
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2021-12-01 00:58:09 +01:00
Robert Baldyga
990f55d250 Fix error mapping
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-26 09:29:37 +01:00
Robert Baldyga
d28881588d Map OCF error codes to errno in io path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-25 17:11:07 +01:00
Robert Baldyga
57a3938872 Improve error mapping code
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-25 17:11:07 +01:00
Robert Baldyga
73461fc26d Add missing error mappings
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-25 16:27:08 +01:00
Robert Baldyga
6743c02033 Return kernel error codes on I/O path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-22 14:35:24 +01:00
Robert Baldyga
b189a7147e Update OCF - dynamic metadata update in standby mode
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-19 17:02:32 +01:00
Rafal Stefanowski
2097f8029b Set promote_on_threshold sequential cutoff flag
Due to linux thread scheduling nature, we prefer to promote streams
as early as we reasonably can. One way to achieve that is to set
promotion count really low, which unfortunately significantly increases
number of accesses to shared structures. The other way is to promote
streams which reach cutoff threshold, as we can reasonably assume that
they are likely be continued after thread is rescheduled to another CPU.

Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2021-11-09 13:41:49 +01:00
Robert Baldyga
f909b21276 Remove redundant ocf_io_get()/ocf_io_put() from bottom volume
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-05 12:49:44 +01:00
Robert Baldyga
5431f83273
Merge pull request #962 from Open-CAS/passive_api
Passive state - API changes
2021-11-03 10:11:08 +01:00
Krzysztof Majzerowicz-Jaszcz
3185564869 Standby state API changes
Don't print statistics for a cache in passive state
Passive cache - casadm set/get cache param disabled in passive state
Obsolete "cache_get_param" function removed
Error in layer_cache_management.c fixed
Flushing cache/core disabled with error for passive mode
Core addition disabled in passive mode
IO class setting disabled for passive mode
Counters reset disabled for passive mode
Ioctl handling changes to reflect OCF API changes

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2021-10-29 12:34:33 +02:00
Rafal Stefanowski
acec05060d Fix license
Change license to BSD-3-Clause

Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2021-10-28 12:46:42 +02:00
Adam Rutkowski
90d8584bd7 failover detach
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2021-10-08 15:20:52 +02:00
Robert Baldyga
6792c1b455
Merge pull request #930 from robertbaldyga/cache-passive-state
Add cache passive state
2021-09-10 13:09:23 +02:00
Robert Baldyga
f8e39fa104 Introduce activate operation
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-09-10 08:56:59 +02:00
Robert Baldyga
17aa424319 Introduce cache bind operation
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-09-10 08:56:54 +02:00
Robert Baldyga
c0110a4d01 Introduce cache exported object
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-09-09 22:34:56 +02:00