| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dm-integrity stores checksums of the data written to an
LV, and returns an error if data read from the LV does
not match the previously saved checksum. When used on
raid images, dm-raid will correct the error by reading
the block from another image, and the device user sees
no error.
Create a linear LV with an integrity layer above it:
lvcreate --type integrity --integrity String [options]
Create a raid LV with an integrity layer over each
raid image (for raid levels 1,4,5,6):
lvcreate --type raidN --integrity y [options]
Add an integrity layer to an existing linear LV,
or to each image of an existing raid LV:
lvconvert --integrity y LV
Remove the integrity layer from a linear LV, or
from the images of a raid LV:
lvconvert --integrity n LV
Integrity metadata:
The --integrity String specifies if the dm-integrity
metadata (checksums) should be interleaved with data
blocks, or written to a separate external LV.
--integrity external (default)
Use integrity with metadata on a separate LV.
Allows removing integrity from the LV later.
--integrity y
Same as integrity external.
--integrity n
Remove integrity (external metadata only.)
--integrity internal
Use integrity with metadata interleaved with
data on the same LV.
Only allowed with new linear LVs.
Internal integrity cannot be removed from an LV.
Around 1% of the LV size is used for integrity metadata.
Command variations:
lvcreate --type integrity -n Name -L Size VG
[Uses integrity external, the default.]
lvcreate --integrity y|external -n Name -L Size VG
[Uses type integrity, which is implied.]
lvcreate --integrity internal -n Name -L Size VG
[Uses type integrity, which is implied.]
lvcreate --type raidN --integrity y -m Num -n Name -L Size VG
[Uses type integrity for each raid image.]
lvconvert --type integrity LV
[Converts linear LV to type integrity.]
lvconvert --integrity y|external LV
[Converts linear LV to type integrity, or each
image to type integrity in a raid LV.]
Options:
--integritymetadata LV|PV
Use a specified LV for external metadata, or allocate
a integrity metadata LV(s) from the named PV.
With raid, only a PV can be specified (because multiple
metadata LVs are required.)
When this option is not used, the command allocates
integrity metadata LVs using any PVs in the VG.
--integritysettings String
set dm-integrity parameters, e.g. to use a journal
instead of bitmap, --integritysettings "mode=J".
Initialization:
When a new integrity LV is created, or integrity is added
to an LV, the kernel needs to initialize the integrity
metadata/checksums for all blocks in the LV. Integrity
checks (detecting corruption) is not performed on blocks
in the LV until they have been intialized. The progress
of integrity initialization is reported by the "copypercent"
LV reporting field (and under the Cpy%Sync lvs column.)
$ lvconvert --integrity y vg/lv
$ lvs vg/lv
LV VG Attr LSize Origin Cpy%Sync
lv vg gwi-a----- 1.00g [lv_iorig] 85.16
Examples:
$ lvcreate --integrity external -n lvex -L1G vg
$ lvs -a vg
LV VG Attr LSize Origin
lvex vg gwi-a----- 1.00g [lvex_iorig]
[lvex_imeta] vg ewi-ao---- 12.00m
[lvex_iorig] vg -wi-ao---- 1.00g
$ lvcreate --integrity internal -n lvin -L1G vg
$ lvs -a vg
LV VG Attr LSize Origin
lvin vg gwi-a----- 1.00g [lvin_iorig]
[lvin_iorig] vg -wi-ao---- 1.00g
$ lvcreate --type raid1 --integrity y -m 1 -n lver -L1G vg
$ lvs -a vg
LV VG Attr LSize Origin
lver vg rwi-a-r--- 1.00g
[lver_rimage_0] vg gwi-aor--- 1.00g [lver_rimage_0_iorig]
[lver_rimage_0_imeta] vg ewi-ao---- 12.00m
[lver_rimage_0_iorig] vg -wi-ao---- 1.00g
[lver_rimage_1] vg gwi-aor--- 1.00g [lver_rimage_1_iorig]
[lver_rimage_1_imeta] vg ewi-ao---- 12.00m
[lver_rimage_1_iorig] vg -wi-ao---- 1.00g
[lver_rmeta_0] vg ewi-aor--- 4.00m
[lver_rmeta_1] vg ewi-aor--- 4.00m
integrity: allow adding and removing with active LV
integrity: lvextend
integrity: change some log message levels
integrity: remove integrity meta lv on error path
tests: integrity check sync_percent
tests: check integrity sync_percent on raid images
not on the raid lv itself
integrity: include raid10
integrity: handle adding new raid images
integrity: allocate imeta on same PV as rimage and rimage
|
| |
|
| |
|
|
|
|
|
| |
before trying to initialize it (since wipe_lv
does not return an error if it fails to write.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix the anoying kernel message reported:
device-mapper: cache: 253:2: metadata operation 'dm_cache_commit' failed: error = -5
which has been reported while cachevol has been removed.
Happened via confusing variable - so switch the variable to commonly user '_size'
which presents a value in sector units and avoid 'scaling' this as extent length
by vg extent size when placing 'error' target on removal path.
Patch shouldn't have impact on actual users data, since at this moment
of removal all date should have been already flushed to origin device.
m
|
| |
|
| |
|
|
|
|
|
|
| |
The previous patch improved read of pipe when lvm2 was looking
for default logical size, but we clearly must read pipe also
for -V case, when the logical size is already defined.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Still the place can be better to block only particular reshape
operations which ATM cause kernel problems.
We check if the new number of images is higher - and prevent to take
conversion if the volume is in use (i.e. thin-pool's data LV).
|
|
|
|
|
|
| |
there appear to be problems with taking a snapshot
of an LV with a writecache, so block it until that
is understood or fixed.
|
| |
|
| |
|
|
|
|
| |
Regen man page.
|
|
|
|
|
|
| |
clang: it's supposedly impossible path to hit, as we should always
have origin_lv defined when running this path, but adding protection
isn't a big issue to make this obvious to analyzer.
|
|
|
|
|
| |
clang: capture internal error when data_seg would not be defined.
(invalid LV with no areas)
|
|
|
|
|
|
|
| |
Since _reserve_area() may fail due to error allocation failure,
add support to report this already reported failure upward.
FIXME: it's log_error() without causing direct command failure.
|
|
|
|
|
| |
When reporting parsing error, report 'previous' argument
only when there is one.
|
|
|
|
|
|
|
| |
When _daemon_read()/_client_read() fails during the read,
ensure memory allocated withing function is also release here
(so caller does not need to care). Also improve code readbility a bit
a for same functionality use more similar code.
|
|
|
|
| |
clang: ensure r_name[] is in all possible paths defined.
|
|
|
|
|
| |
Ensure passed pointer gets predefined value (instead of random stack
value).
|
|
|
|
|
| |
To avoid logging 'errors' for no real error state (ENOENT),
move this evaluation upward in the code.
|
| |
|
|
|
|
|
|
|
| |
Although we expect min_chunk_size to be 32bit value, for
large size of caches it might be useful to do calcs 64bit.
So to avoid doing shift as signed 32bit - use unsigned 64bit
from the start.
|
|
|
|
|
|
| |
cov: unused header removed
Also ensure library header file with config settings goes first.
Move inclusion of format-text.h into layout.h
|
|
|
|
| |
clang: free io on error path.
|
|
|
|
| |
clang: no vgname buffer leak.
|
|
|
|
| |
clang: keep old buf pointer for release on failing realloc() codepath.
|
|
|
|
| |
Older kernels just show syscall stacktrace.
|
|
|
|
| |
to a different file
|
| |
|
|
|
|
|
| |
attached to a cache or writecache LV.
Ensure PVs in cachevol are moved with the main LV.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
reporting fields (-o) directly from kernel:
writecache_total_blocks
writecache_free_blocks
writecache_writeback_blocks
writecache_error
The data_percent field shows used cache blocks / total cache blocks.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Test a case where PV is readable, but fails on write updating.
Check the failure is reported only for a single PV.
|
|
|
|
|
| |
Intruduce aux function for easy simulation of disk areas,
that are 'normally' readable, but will fail on write.
|
|
|
|
|
|
| |
Do not close pipeline after 1st. line parsed from vdo_format.
Also reprint the output for a user so new messages from vdo_format
can be seen by users.
|
|
|
|
|
| |
We actually need to prohibit only reshaping cases which are
running over multiple commands.
|
| |
|
|
|
|
|
|
|
|
| |
Currently the error messages are not clear. This very easy to
guide user to execute "--removemissing --force", it is dangerous
and will make the LVs to be destroied.
Signed-off-by: Zhao Heming <heming.zhao@suse.com>
|
|
|
|
|
|
|
| |
systemctl status corosync (version: 2.4.5) report error:
parse error in config: No interfaces defined
Signed-off-by: Zhao Heming <heming.zhao@suse.com>
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Since VDO is also pool, the old if() case missed to know about this,
and executed unnecesserily initialization of cache pool variables.
This was usually harmless when using 'smaller' sizes of VDO pools,
but for big VDO pool size, we were reporting senseless messages
about big cache chunk sizes.
|