Joe Thornber
f85b7cef3f
thin_dump, thin_check: Fix bug in damage reporting
2015-07-03 13:00:13 +01:00
Joe Thornber
082491d140
thin_check: tidy up some unintuitive code
2015-06-22 11:13:19 +01:00
Joe Thornber
270c0f7041
[thin_check] factor out check_space_map_counts()
2015-04-08 14:07:38 +01:00
Joe Thornber
0fee897fda
[thin_check] A space map count being too high should be a NON_FATAL error.
2015-04-08 12:32:31 +01:00
Joe Thornber
20079f3d28
Pass tm's by reference
2015-04-07 13:31:45 +01:00
Joe Thornber
ee200ba85b
Merge branch 'master' into space-map-checking
2015-04-07 12:18:23 +01:00
Joe Thornber
7f643b7050
[thin] Use specific damage visitors to improve error messages.
...
There's now a damage visitor for dev_trees, mapping_trees and
single_mapping_trees.
2015-04-07 12:16:46 +01:00
Joe Thornber
f581f34be8
add comment explaining mtree_traits
2015-04-07 12:10:38 +01:00
Joe Thornber
cc44652cc3
[thin_delta] support metadata snapshots
2015-03-25 11:10:18 +00:00
Joe Thornber
0e72f772d0
[thin_delta] Add superblock and diff tags
2015-03-25 10:09:39 +00:00
Joe Thornber
45422dbf7a
[thin_delta] Mappings were being missed off from the tail of a device
2015-03-24 13:36:45 +00:00
Joe Thornber
c6ae25417b
Add missing include to thin_trim
2015-01-17 11:45:09 +00:00
Joe Thornber
fe64da2c7c
Fix these errors:
...
thin-provisioning/thin_pool.cc:206: error: reference to 'sector_t' is ambiguous
./thin-provisioning/metadata.h:40: error: candidates are: typedef uint64_t thin_provisioning::sector_t
./block-cache/block_cache.h:20: error: typedef uint64_t bcache::sector_t
thin-provisioning/thin_pool.cc:206: error: reference to 'sector_t' is ambiguous
./thin-provisioning/metadata.h:40: error: candidates are: typedef uint64_t thin_provisioning::sector_t
./block-cache/block_cache.h:20: error: typedef uint64_t bcache::sector_t
thin-provisioning/thin_pool.cc:206: error: 'sector_t' does not name a type
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
2015-01-16 10:14:28 +00:00
Joe Thornber
8e92158055
[thin_trim] first code drop.
...
No testing done as yet.
2014-11-18 16:03:03 +00:00
Joe Thornber
41354f10f5
provide << operator for optionals
2014-09-04 11:26:43 +01:00
Joe Thornber
6f8b7e2914
[all] Build a single executable
2014-08-27 14:01:31 +01:00
Joe Thornber
828f654800
[*_restore] Add progress bar to cache_restore and era_restore.
...
A lot of refactoring common code between the restore tools.
2014-08-26 13:05:21 +01:00
Joe Thornber
d17ad86a88
[*_restore] Use a little wrapper class for the expat XML_Parser to ensure it gets destroyed.
2014-08-26 11:23:29 +01:00
Joe Thornber
a7c96c0e1e
[everything] Fix circular shared pointer references.
...
We had a cycle from transaction_manager <-> space_map, and also from
the ref_counters back up to the tm.
This prevented objects being destroyed when various programs exited.
From now on we'll try and only use a shared ptr if ownership is
implied. Otherwise a reference will be used (eg, for up pointers).
2014-08-26 11:14:49 +01:00
Joe Thornber
936e14441f
Merge branch 'master' of github.com:jthornber/thin-provisioning-tools
2014-08-06 16:32:04 +01:00
Joe Thornber
1d38b390b5
Factor common code out of the xml_format files.
2014-08-06 15:29:02 +01:00
Joe Thornber
d00aef9219
[thini_restore] add a quiet option to turn off the progress monitor
2014-08-05 12:10:34 +01:00
Joe Thornber
fccc1dfcb0
[thin_restore] Add a progress monitor
2014-08-05 11:47:57 +01:00
Joe Thornber
8321bdcf59
Merge pull request #13 from bgilbert/fix-units
...
thin_metadata_size: Fix long names of units
2014-08-05 09:34:37 +01:00
Joe Thornber
7e870ea5a6
start removing block_manager<>::block
2014-07-25 14:46:51 +01:00
Joe Thornber
b32908d5c2
work in progress
2014-07-25 10:35:04 +01:00
Joe Thornber
d517684c95
Initial code drop for merging block_cache
2014-07-22 16:41:39 +01:00
Joe Thornber
e77e8715b0
Remove ambiguity between boost::uint64_t and ::uint64_t.
...
This has been causing people problems on uclibc builds.
2014-07-02 08:19:20 +00:00
Joe Thornber
e4d82d04bd
[thin_delta] Fix bug when detecting right_only mappings
2014-06-17 16:20:38 +01:00
Joe Thornber
c8f408ac3c
[thin_delta] Update the usage
2014-06-17 15:00:38 +01:00
Joe Thornber
bb57104542
[thin_delta] By default output a simpler format that ignores the data locations.
...
Most people will access the data via the thin device itself, so
there's really no need to output the locations of the data on pool
device. Doing this allows us to run together adjacent thin blocks
(even if they are not adjacent on the pool dev).
Simple format:
<same begin="0" length="1"/>
<different begin="1" length="4"/>
<same begin="5" length="1"/>
<different begin="6" length="6"/>
<same begin="12" length="1"/>
<different begin="13" length="9"/>
<same begin="22" length="1"/>
<different begin="23" length="4"/>
<same begin="27" length="1"/>
<different begin="28" length="3"/>
<same begin="31" length="1"/>
<different begin="32" length="1"/>
The old format is available using the --verbose switch:
<same>
<range begin="0" data_begin="0" length="1"/>
</same>
<different>
<range begin="1" left_data_begin="24576" right_data_begin="16384" length="1"/>
<range begin="2" left_data_begin="24577" right_data_begin="2" length="1"/>
<range begin="3" left_data_begin="24578" right_data_begin="16385" length="1"/>
<range begin="4" left_data_begin="24579" right_data_begin="4" length="1"/>
</different>
<same>
<range begin="5" data_begin="5" length="1"/>
</same>
<different>
<range begin="6" left_data_begin="24580" right_data_begin="16386" length="1"/>
<range begin="7" left_data_begin="7" right_data_begin="16387" length="1"/>
<range begin="8" left_data_begin="24581" right_data_begin="8" length="1"/>
<range begin="9" left_data_begin="24582" right_data_begin="16388" length="1"/>
<range begin="10" left_data_begin="10" right_data_begin="16389" length="1"/>
<range begin="11" left_data_begin="24583" right_data_begin="11" length="1"/>
</different>
<same>
<range begin="12" data_begin="12" length="1"/>
</same>
<different>
<range begin="13" left_data_begin="24584" right_data_begin="13" length="1"/>
<range begin="14" left_data_begin="24585" right_data_begin="16390" length="1"/>
<range begin="15" left_data_begin="24586" right_data_begin="15" length="1"/>
<range begin="16" left_data_begin="16" right_data_begin="16391" length="1"/>
<range begin="17" left_data_begin="24587" right_data_begin="16392" length="1"/>
<range begin="18" left_data_begin="18" right_data_begin="16393" length="3"/>
<range begin="21" left_data_begin="24588" right_data_begin="21" length="1"/>
</different>
<same>
<range begin="22" data_begin="22" length="1"/>
</same>
<different>
<range begin="23" left_data_begin="24589" right_data_begin="23" length="1"/>
<range begin="24" left_data_begin="24590" right_data_begin="16396" length="1"/>
<range begin="25" left_data_begin="24591" right_data_begin="25" length="1"/>
<range begin="26" left_data_begin="26" right_data_begin="16397" length="1"/>
</different>
<same>
<range begin="27" data_begin="27" length="1"/>
</same>
<different>
<range begin="28" left_data_begin="24592" right_data_begin="28" length="2"/>
<range begin="30" left_data_begin="30" right_data_begin="16398" length="1"/>
</different>
<same>
<range begin="31" data_begin="31" length="1"/>
</same>
<different>
<range begin="32" left_data_begin="24594" right_data_begin="32" length="1"/>
</different>
2014-06-17 14:20:33 +01:00
Joe Thornber
0e62a1c4de
[thin_delta] provide a more complete diff output.
2014-06-17 12:39:13 +01:00
Joe Thornber
f80c2dc77f
[thin_delta] Don't use endl which also flushes
2014-06-16 13:58:25 +01:00
root
72e20c2d40
remove some dead code
2014-06-16 13:41:07 +01:00
Joe Thornber
d7d293ee4f
thin_delta now works
2014-06-10 16:38:20 +01:00
Joe Thornber
d1989f4a14
whitespace
2014-06-10 16:38:10 +01:00
Joe Thornber
e851b35954
[thin_delta] read in the snaps and dev
2014-06-09 13:26:55 +01:00
Joe Thornber
b03fa373a1
[thin_delta] Print usage on unrecognised switch
2014-06-09 10:51:10 +01:00
Joe Thornber
83f2cce597
[thin_delta] -h/--help
2014-06-09 10:48:29 +01:00
Joe Thornber
87fa6dc079
[thin_delta] --version/-V
2014-06-09 10:37:46 +01:00
Benjamin Gilbert
2679e7f088
thin_metadata_size: Fix long names of units
...
Both implementations of thin_metadata_size believe units are defined
like this:
1024 == kilobyte == k
1000 == kibibyte == K
and so on. Fix the 1000/1024 confusion, while continuing to follow the
LVM convention of using lowercase letters for binary units, so that we
have:
1024 == kibibyte == k
1000 == kilobyte == K
2014-05-17 03:51:06 -04:00
Benjamin Gilbert
e7e3e93ec6
thin_metadata_size: Drop executable bit on source file
2014-05-17 03:51:03 -04:00
Joe Thornber
05b18a5b99
[thin_check] Fix bug in clear needs check logic.
...
Mixed up bools and int returns.
2014-04-02 13:43:16 +01:00
Joe Thornber
c3249ff757
[thin_check] --clear-needs-check-flag
2014-03-27 12:00:17 +00:00
Joe Thornber
50d1a3e7d2
[thin_check] inc superblock and metadata snap in space map checking
2014-02-20 16:36:03 +00:00
Joe Thornber
9f6546f621
put space map checking back in
2014-02-19 16:08:05 +00:00
Joe Thornber
38f8195a99
thin_show_blocks
2014-02-19 15:01:07 +00:00
Joe Thornber
5fe5d213b7
Merge branch 'master' of github.com:jthornber/thin-provisioning-tools into era
...
Conflicts:
Makefile.in
2014-01-31 22:35:04 +00:00
Joe Thornber
344f4b1e08
Factor out base/indented_stream.h
2014-01-31 13:43:39 +00:00
Joe Thornber
ef6066e2cd
Merge branch 'master' of github.com:jthornber/thin-provisioning-tools
2014-01-15 15:52:33 +00:00
Joe Thornber
c24fa93f2c
whitespace
2014-01-15 15:50:50 +00:00
Joe Thornber
be5fa59f90
Merge branch 'era' of github.com:jthornber/thin-provisioning-tools into era
2014-01-08 10:50:26 +00:00
Joe Thornber
8049d369a9
stuff
2013-12-11 17:28:14 +00:00
Joe Thornber
983a5e84e6
Move endian_utils to base/
2013-11-19 10:23:35 +00:00
Joe Thornber
05effffdf9
[thin-provisioning] re-write metadata_dumper.cc
2013-10-16 10:20:43 +01:00
Joe Thornber
b87742ccff
[thin-provisioning] walk_mapping_tree()
2013-10-16 10:20:15 +01:00
Joe Thornber
a06139ef9f
[thin-provisioning] walk_device_tree()
2013-10-16 10:19:29 +01:00
Joe Thornber
9dc4a97cb7
[thin_check] thin_check wasn't giving a non-zero exit code for damage in mapping trees
2013-10-15 10:40:26 +01:00
Joe Thornber
61e90998c0
[cache_dump, cache_restore] restore/dump cycle works
2013-09-19 13:45:56 +01:00
Joe Thornber
7ce306cb6d
[thin_restore] check the input file exists.
...
Previously we were hanging if it didn't
2013-09-16 13:43:06 +01:00
Joe Thornber
6615b25e4b
WIP on cache tools
2013-09-11 11:40:46 +01:00
Joe Thornber
7ada06aa77
fluff
2013-08-16 14:34:51 +01:00
Joe Thornber
be6f90f16c
[thin_restore] use full paths for includes.
2013-08-16 14:33:19 +01:00
Joe Thornber
67551d81f1
Put error_state into into it's own file.
2013-08-16 14:07:04 +01:00
Joe Thornber
94bd3aef3b
Put nested_output in it's own file
2013-08-16 13:48:25 +01:00
Joe Thornber
500e508c6d
fix up some coverity issues
2013-08-15 16:26:17 +01:00
Joe Thornber
77286e0bc7
Take out some 'typename's to support older versions of gcc (Heinz).
2013-08-15 10:35:07 +01:00
Joe Thornber
0029962f20
Give up with --std=c++11
...
There are too many distros that use old versions of g++ that don't support it adequately.
2013-08-08 10:49:59 +01:00
Joe Thornber
dd26ec76b2
[thin_repair] don't open the space maps in the old metadata, we'll regenerate.
2013-08-02 13:14:49 +01:00
Heinz Mauelshagen
13293d0640
Fix missing quote in xml output with metadata_snap=
2013-07-31 12:07:16 +02:00
Heinz Mauelshagen
bdb8d6e5cc
thin_dump: cleanup metadata snapshot support
2013-07-30 17:10:41 +02:00
Heinz Mauelshagen
78389803bc
thin_dump.cc: fix metadata snapshot logic
2013-07-30 15:31:36 +02:00
Heinz Mauelshagen
e16b7c8ea0
Fluff
2013-07-29 12:29:05 +02:00
Heinz Mauelshagen
28a8351e12
Fluff
2013-07-19 12:12:31 +02:00
Heinz Mauelshagen
d02bcbab56
Merge branch 'Work_1' of github.com:lvmguy/thin-provisioning-tools into Work_1
...
Conflicts:
Makefile.in
man8/thin_dump.8
man8/thin_metadata_size.8
thin-provisioning/thin_dump.cc
2013-07-19 12:11:28 +02:00
Heinz Mauelshagen
dd1e4c1233
thin_dump: support optional block# with --metadata-snap to allow for default snapshot stored in metadata to be used; update manual page
2013-07-19 11:48:15 +02:00
Heinz Mauelshagen
e8f9fc6dff
thin_metadata_size: use NOO_NUMBER whilst defining full bool
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
b7ca980664
thin_metadata_size: support short/long --numeric-only options; man page adjustment; change long output; stremaline
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
ce4e01d8c9
thin_metadata_size: remove superfluous array; streamline
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
03d2ca3a99
thin_metadata_size: support long unit specifiers; make sure exit_prg() is being called; update manual page
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
e4912f548c
thin_metadata_size.c: support -V option; support -n option argument for unit specifier; add input parameter set to long output
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
5a039267df
thin_dump: support --metadata-snap block#
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
ed88882007
autconf: support build of thin_metadata_size.c
2013-07-18 14:52:08 +02:00
Heinz Mauelshagen
80be0d0f54
thin_metadata_size.c: indenting
2013-07-18 14:51:09 +02:00
Heinz Mauelshagen
e1067455c4
thin_metadata_size.c: fix --maxthins unit processing
2013-07-18 14:51:09 +02:00
Heinz Mauelshagen
74cd1f6b28
thin_metadata_size.c: format output enhancements
2013-07-18 14:51:09 +02:00
Heinz Mauelshagen
65598e3132
thin_metadata_size.c: new C implementation of metadata size calculation tool
2013-07-18 14:51:09 +02:00
Heinz Mauelshagen
9fac224f25
thin_metadata_size: use NOO_NUMBER whilst defining full bool
2013-07-18 14:19:06 +02:00
Heinz Mauelshagen
3ee6985bbc
thin_metadata_size: support short/long --numeric-only options; man page adjustment; change long output; stremaline
2013-07-18 14:03:27 +02:00
Heinz Mauelshagen
175c70ecf2
thin_metadata_size: remove superfluous array; streamline
2013-07-17 17:24:55 +02:00
Heinz Mauelshagen
ffb585cbc5
thin_metadata_size: support long unit specifiers; make sure exit_prg() is being called; update manual page
2013-07-17 16:00:39 +02:00
Heinz Mauelshagen
4ba612f506
thin_metadata_size.c: support -V option; support -n option argument for unit specifier; add input parameter set to long output
2013-07-17 13:25:03 +02:00
Heinz Mauelshagen
1b6f9255a1
thin_dump: support --metadata-snap block#
2013-07-16 17:39:40 +02:00
Heinz Mauelshagen
69ff5d5513
autconf: support build of thin_metadata_size.c
2013-07-15 16:48:36 +02:00
Heinz Mauelshagen
a7e196cc3a
thin_metadata_size.c: indenting
2013-07-12 17:09:14 +02:00
Heinz Mauelshagen
931221647c
thin_metadata_size.c: fix --maxthins unit processing
2013-07-12 13:29:12 +02:00
Heinz Mauelshagen
99a1b96b2f
thin_metadata_size.c: format output enhancements
2013-07-12 12:58:53 +02:00
Heinz Mauelshagen
3a95c7f830
thin_metadata_size.c: new C implementation of metadata size calculation tool
2013-07-11 18:34:00 +02:00
Heinz Mauelshagen
7a8b223c30
create_xml_data: fix mapping variation check
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
9e32e25ac4
create_xml_data: simplify to mappings; drop all units
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
fe4776f2cb
create_xml_data: fiddling
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
f9988c7312
create_xml_data: adjust to thinp_xml output
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
cb23845c17
create_xml_data: adjust filed order to thin_dumo format; fix nr_data_blocks
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
979c479e1a
create_xml_data: remove space in dev_id ouput
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
42a1db8792
create_xml_data: support --size-variation and check for block size > 0
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
8ca0a87eda
thin_metadata_size: check for block size > 0
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
31df9b6d10
thin_metadata_size: drop signe_mapping to =
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
11cec295ce
thin_metadata_size,create_xml_data: fix units
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
2fa1ce95eb
create_xml_data: fix device and range_mapping
2013-07-10 17:15:18 +02:00
Heinz Mauelshagen
6ba44c54a3
create_xml_data: fix nr_data_blocks
2013-07-10 17:15:18 +02:00
Joe Thornber
f2fe3ba2b3
[metadata_dumper] Fix bug where ranges were appearing in all devices for small metadata.
...
Author: Teng-Feng Yang
2013-07-09 13:28:36 +01:00
Joe Thornber
e701b96642
[thin_dump] bug in last bug fix
2013-06-28 14:24:39 +01:00
Joe Thornber
fe8e1592a9
[thin_dump] Fix regression where mappings for all devices were being listed in every device.
2013-06-28 13:43:28 +01:00
Joe Thornber
2fc95b3a2d
[thin_dump] add -o switch
2013-06-28 12:17:43 +01:00
Joe Thornber
7cab21c8e7
[thin_restore] Tweak usage message.
2013-06-27 09:44:46 +01:00
Heinz Mauelshagen
4f2af9b719
create_xml_data: fix range support
2013-06-26 13:08:16 +02:00
Heinz Mauelshagen
2631d377b5
thin_metadata_size: fix units
2013-06-26 13:01:51 +02:00
Heinz Mauelshagen
63c140d26e
create_xml_data: new xml metadata creation tool
2013-06-26 12:45:19 +02:00
Joe Thornber
eb8d4c6f0b
Get tools building with g++ 4.8.1
2013-06-25 13:48:02 +01:00
Heinz Mauelshagen
2d74d47373
thin_metadata_size: allow for very small sizes
2013-06-24 13:52:46 +02:00
Heinz Mauelshagen
6ff5e418eb
thin_metadata_size: missed estimated_result() return
2013-06-24 13:21:14 +02:00
Heinz Mauelshagen
b20caae5cc
thin_metadata_size: add get_index(); streamline
2013-06-24 13:18:33 +02:00
Heinz Mauelshagen
bea157cf70
thin_metadata_size: suppurt bytes unit
2013-06-24 12:30:43 +02:00
Heinz Mauelshagen
92028bcef6
thin_metadata_size: add an index variable to init_units and fiy a message type
2013-06-21 15:46:39 +02:00
Heinz Mauelshagen
b4db483647
thin_metadata_size: avoid unit_chars variable and adjust estimated output message
2013-06-21 14:58:53 +02:00
Heinz Mauelshagen
8d2ae677ff
thin_metadata_size: algorithm corrections and output adjustments
2013-06-21 14:33:14 +02:00
Heinz Mauelshagen
0b29c22ba9
thin_metadata_size: new metadata size calculation tool
2013-06-21 12:41:53 +02:00
Heinz Mauelshagen
f376fdfb49
thin_check.cc: remove superfluous 'if (enabled)'
2013-06-21 12:35:06 +02:00
Heinz Mauelshagen
9900c91c1b
thin_check.cc: support --quiet in nested_output
2013-06-21 12:35:06 +02:00
Joe Thornber
83a09e1a2a
[btree] use a block_ref_counter for internal nodes
2013-06-20 14:29:48 +01:00
Heinz Mauelshagen
5d6a3c184b
thin_check.cc: remove superfluous 'if (enabled)'
2013-06-19 14:15:53 +02:00
Heinz Mauelshagen
41287e182f
thin_check.cc: support --quiet in nested_output
2013-06-19 14:12:44 +02:00
Heinz Mauelshagen
88f9252a03
thin_check.cc: reenable --quiet option
2013-06-19 13:41:29 +02:00
Joe Thornber
21074456ca
thin_repair
2013-06-19 12:39:28 +01:00
Joe Thornber
0938d24ea1
Take held root support out of thin_dump.
...
Temporary, just to get things building.
2013-06-19 12:11:34 +01:00
Joe Thornber
055b237126
tweaks to metadata constructor, and some updated features.
2013-06-19 11:34:01 +01:00
Joe Thornber
acd197ed6f
[thin_restore] restore_emitter now checks the mappings against the data device length.
2013-06-18 14:18:39 +01:00
Joe Thornber
8781685a10
whitespace
2013-06-14 14:32:50 +01:00
Joe Thornber
6706493304
Remove some global 'using namespace's
2013-05-28 13:48:10 +01:00
Joe Thornber
e64dda95f6
rename range<> -> run<>
2013-05-28 12:20:05 +01:00
Joe Thornber
83d6b609eb
[range.h] rename to run.h
2013-05-28 11:51:44 +01:00
Joe Thornber
82324d1d27
[thin_rmap] rmap_visitor now sorts the rmap into ascending data_block order.
2013-05-24 14:01:03 +01:00
Joe Thornber
8fab2e37af
[thin_rmap] now produces ranged output.
2013-05-24 13:43:55 +01:00
Joe Thornber
41204dceaa
[thin_rmap] rmap_visitor
2013-05-24 13:30:17 +01:00
Joe Thornber
4d17d3f7ec
[thin_rmap] finish implementing
2013-05-23 15:06:57 +01:00
Joe Thornber
25a090279f
[thin_rmap] region parsing
2013-05-23 13:57:57 +01:00
Joe Thornber
5498e0bc46
[thin_check] fluff
2013-05-23 13:57:15 +01:00
Joe Thornber
bc67fc17b1
[thin_rmap] Stub
2013-05-23 13:15:00 +01:00
Joe Thornber
063769cd12
[thin_check] we don't need to import the persistent_data namespace any more.
2013-05-23 12:00:36 +01:00
Joe Thornber
e7303a11c6
[thin_check] --ignore-non-fatal-errors
2013-05-23 11:57:02 +01:00