Project: LINSTOR (Runtime / Cloud Native Storage)
File: CHANGELOG.md

All notable changes to Linstor will be documented in this file starting from version 1.19.0, for older version see github releases. The format is based on , and this project adheres to . Support for java-21 Freespace calc: Snapshots only reserve allocated size now instead of volume size resource-definition modify now, only warns if a satellite is offline AutoVerifyAlgo: allow to use algorithm name additionally to the specific implementation ZFS: try to determine default volblocksize Deleting a remote can now be safely done even if there are active shippings to said remote MakeAvail: trigger update satellite if only FLAGS changed Resource delete: Don't check user set verify-algo if last resource deleted. If mkfs failed, resources have not been demoted(secondary) and couldn't easily be deleted afterward Fixed incorrect least common multiple call when calculating AllocationGranularity Allow users to provide their own encryption passphrase for volumes Allow users to provide their own encryption passphrase after cloning Allow users to change the passphrase for a luks volume definition Backup ship, restore and scheduled backups now have a --force-restore option Added more info logging Added "DrbdOptions/ExactSize" for migration purposes Default configuration directory for linstor-database utility (export-db and import-db) is now "/etc/linstor" Make-available will no longer return an error if an involved node is offline (warn instead) rscDfn-props are no longer reset through --download-only backup restore or if it has rscs deployed Fixed snapshot-rollback more than once on a resource Fixed re-/ordering issues within the AutoSnapshotTask Fixed backup restore not working if one of the backup-parts already existed on the cluster Fixed K8s migrations to use correct generated DB table instances Deleted invalid SpaceHistory entries from K8s. Fixed left-over tiebreaker after evacuation of single DRBD resource Fixed negative result of an allocation granularity calculation Fixed infinite loop and limited range of power-of-2 calculations Workaround for connections where the attached peer object is missing Only show warnings of missing cgroup (v1) if the user actually tries to use it Fixed undelete resources (also remove volume DELETE and DRBD_DELETE flags) Snapshots and resources are processed independently of each other Luks: Properly cleanup LVs when deleting without having entered the passphrase LVM: Removed trailing 'a|.*|' from LVM filter Do not write/check drbd resource files if nothing changed RG spawn: No longer display "TransactionList" when spawn fails Sp,Props: Do not trigger a DevMgrRun for certain property changes Tiebreaker: Allow in all even-numbered (>0) diskful and 0 diskless setups Improved error message when FullSync fails due to missing external tools SOS-report: add more information output (lvs, zfs list, client output....) ProblemReports now also get added to the error-database (i.e. will show in up "err list") Snapshots: allow taking snapshot if at least one diskfull node is online Do not update satellites that are evicted Node/Restore: Fixed resource kept in inactive state until controller restart Node/Restore: Fixed node not connected on node restore Luks: Allow deletion without entered master-passphrase SysFs: Warn if /sys/fs/cgroup/blkio does not exist When evacuating or migrating an InUse resources, wait until the resource is no longer in-use to remove

Restoring a pre-SP-mixing-backup into an SP mixing scenario SpMixing: ZFS <-> ZFS_THIN is no longer considered as mixed SP Encryption: don't create error-reports for user errors ResourceDefinition/VolumeDefinition to prometheus /metrics Added PeerSlots to ResourceGroups (create, modify and spawn) Added additional oversubscription calculation Added new oversubscription ratios to QSI result Prometheus/metrics added storage_pool to volume labels Added BalanceResourcesTask that in the first version tries to keep the resource-group place-count for resources Added MathUtils methods for integer-based square root, exponentiation, prime factorization, LCM and GCD calculation Added new checkExtFiles-API Schedule enable and snapshot restore now have a --storpool-rename option /metrics/scrape-target endpoint with drbd-reactor scrape targets Added copy of GenDbTables to GenCrdV* classes for migrations Escape executed commands in logs, making them paste-able Oversubscription now takes minimum of old and of new calculation Autoplace API answer now contains object refs to nodes and storagepools Make-Available will now retry auto-place with no restrictions on diskless resources StoragePoolMixing is now based on extent-sizes and thin/thick. Also changed implementation Autoplacer now also allows for mixed storage pools if the corresponding property allows Backup ship now uses the --target-storpool as a default storpool name ZFS and ZFS_THIN provider now report REFER for thin-volumes and snapshots and VOLSIZE for thick-volumes Remember node-ids for a later "forget-peer" when SkipDisk is enabled Do not allow setting resource-groups with place-count 0 Small DB resource leak in health check Fixed unrecoverable state with failed rollback of deleting snapshot Fixed race condition between node lost and backup queue cleanup NetCom SSL reimplementation: Fixed buffer handling, SSL handshake/negotiation/renegotiation Prohibit disk accesses in DrbdLayer while SkipDisk is set Support for EXOS Support for OpenFlex Fixed version mismatch check between new satellites and a pre v1.25.0 controller Fixed "node restore" to try to (re-) create tiebreaker resources if needed Fixed "node evacuate" no longer keeps diskless resource as a tiebreaker (in evacuating, but never deleting state) Fixed "sp l" showing spurious warning that a diskless SP is offline (due to caching bug) Fixed potential null pointer exception in AutoDiskfulTask Fixed "r c --drbd-diskless" falsely requiring free peer-slot Fixed bug where FILE/-THIN provider did not properly find existing snapshots (thus also not deleting them properly) Added ErrorReport when sending a ping request fails Sos-report's tar command no longer use --verbose ErrorReports list now works with paging and a default

Fixing node timeouts on large error-reports Resource-group adjust warns now for placement count needs to be reduced (instead of error) Fixed setting 'on-no-quorum' to 'suspend-io' at the resource-group level does not propagate down to existing resources Fixed logic in setLogLevel to prevent error log if no error happened Fixed possible 'Access to deleted Resource' in the AutoDiskfulTask Fixed possible left over during AutoDiskfulTask's cleanup of excess resources Added automated addition of --skip-disk to drbdadm adjust when a disk failure is detected Added first version of "effective_props" (currently only used for "DrbdOptions/SkipDisk", other props will follow) Added attempt in setting IPTOS to LOWDELAY (works in java11 or with forced IPv4) Added creation time to ApiCallRc Improved checks for "OtherController" response Do not send fetchFreeSpaces to diskless-only nodes Improved responses during tiebreaker takeover Fixed possible FileWatch leak Fixed toggle-disk now properly setting StorPoolName Delete node-connection when last property gets deleted Properly delete DRBD_DELETE flag during undelete ('r c' on a DELETING resource) Fixed regex-pattern for parsing "dmsetup ls [--target TARGET]" command Fixed typo in /v1/action[s]/snapshot/multi Fixed incorrectly documented return type of "snapshot create-multi" Fixed NPE in schedules etcd driver Improve wrapped DelayedApiException error reporting Improve logging on deleting for volumes/snapshots Increase timeout for sos create tar command Fix "attempt to replace active transMgr" due to unclean core-maps Reassigning resource-definition to new resource-group had no effect on satellite Use correct java-11 on sles based systems Fixed node reconnect scope already entered bug Do not create error reports for no connection to satellite errors Use timeout 0, to workaround missing setsid -w on old systems Backup: Fix possible NPE on non-DRBD resources AutoEvict only warn about offline node Fix hanging controller on multiple parallel snapshots ETCD: fixed exporting empty tables K8s,Crd: limit number of entries in rollback resource gradle: on rhel based systems force to use java-11 jre ETCD,import: Convert Date to long Restore invisible key-value stores, after an old broken migration Cleanup orphaned ACL's in database Remove java.xml.bind dependency, that didn't work with java-17 BCache suspend is not supported and wait for device to be created Schedules: use correct DB driver for maxretries field /metrics: error-report fetching exceptions always handled as timeouts RscDfn, peer-slots: fix incorrect cast of peer-slots when modifying resource definitions Volume: fix NPE on getApiData if no volumeProvider and no compatStorpool Force all database DATA objects to be comparable Added support for Microsoft Windows (storagespaces) Added queues for backup shipping Added linstor-database tool to migrate from/to different database types Allow drbd-option properties for node-connections Added support for java-17 Update of nearly all 3rd party libraries Minimal required java version is now java-11 Improved suspend-io "downtime" for snapshots Improved default INFO logging level Fixed UID-mismatch when creating rollback entries in K8s/CRD Resync-After: Update entries after vlm definition delete Resync-After: Ignore diskless resources Enforce s3-remotes for backup create and linstor-remotes for backup ship Allow node-connection drbd options Several fixes in backup-shipping Storpools can only be deleted without snapshots in addition to without volumes Evacuating nodes no longer create snapshots Resources can not be created within a resource-definition that is currently restoring a backup query-all-size-info API to query-size-info for all currently available resource groups SOS-Report has now a parent directory in the tgz file SharedSPName have now a less strict name checking Improved error handling with broken storage pools MakeAvailable: Fix incorrect deletion of TIE_BREAKER flag SOS-Report missing some rolling .log.zip files Offline satellite: Fixed handling of offline satellites Rsc,Delete,Takeover: Fix possible double tiebreaker scenarios Fixed DRBD config for nodes with purely numerical host names Remove/ignore auto-verify-algo property if disabled on controller NodeCon: Fixed compareTo() causing node connection paths loaded incorrectly. LinstorScope not always enter and exit correctly. Make-Available API not correctly upgrading a tiebreaker to a diskless

"StorDriver/LvcreateSnapshotOptions" and "StorDriver/ZfsSnapshotOptions" properties "FileSystem/User" and "FileSystem/Group" properties for root-owner of newly created FS Support to do multiple snapshots within one device manager run Autoplacer now ignores occupied values from evicted or evacuating nodes DrbdLayer skips processChildren when DRBD_DELETE flag is set Backup list can now handle more than 1000 entries in bucket (truncation/continuation was handled wrong before) NodeConnection path can now be deleted NodeConnections no longer cause NPE on satellites Database loading causing ClassCastException with drbd,luks,storage during toggle disk Aborted snapshot now always should resume-io auto-resync-after for DRBD will be disabled by default (because it can triggers a DRBD bug) Fixed available size reported by query-size-info API Added more details (primary keys) for database-loading exceptions ZFS tool checker now uses `zfs -?` Fixed apparent ETCD corruption / database-loading bug Run resync-after manager on every controller startup query-size-info API as a better version of query-max-value-size API Linstor now automatically sets the resync-after property for drbd resources, grouped by storage pools Added automatic rs-discard-granularity management based on lsblk's DISC-GRAN Added `zfs list` check for ZFS support to ensure that the zfs-utils are also installed, not just the kmod Use recommended command sequence for SED initialization and improve error recover Fixed DRBD size calculations with non-default peer slots Fixed aborting Snapshot procedure (make sure resume-io is executed) Fixed AutoSnapshot scheduling bug Fixed rollback after clearing entire PropsContainers Fixed that too many concurrent Snapshots led to unnecessarily long suspend-io state Fixed resource getting activated instead of deactivated in shared-sp pvdisplay now ignores drbd devices(lvm filter) Volume definition setSize checks now for out of bounds sizes Fixed typo in VDO slab size commandline argument Fixed peerslot check also counting diskless resources Fixed storage pool definition delete not checking if there are still other storage pools Fixed resource definition create showing real exception because of a followup exception Fixed resetting resource flags to now incompatible drbd resource flags Can now use snapshot restore on a snapshot created by a backup create Fixed migration of orphan objects Added NodeConnection API. Currently only used for path settings (similar to rscCon, but on node level) Only delete DRBD resource files after successful Controller connection (before on startup) MKFS: always skip discard on ZFS backed volumes Client resource DRBD ready state as soon as 2 nodes are connected (before it waited for all) ResourceGroup-Spawn: Always assume partial mode if resource group doesn't have any volume groups Upgraded okhttp 3rd party library, to fix a IPv6 TLS bug Satellite now only deletes old .res files after controller established connection (instead of after startup) Orphan StorPooDfn, KeyValueStores and SnapDfn are now deleted with all their child objects ErrorReports delete ignored since parameter if no other was specified Added SnapshotVolumeNode as part of SnapshotNode to include a snapshot state Status of EBS volumes and snapshots are now queried periodically Added property DrbdOptions/ForceInitialSync that forces thin resources to do an initial full sync Snapshots and SnapshotVolumes now properly delete their properties + cleanup migration existing DB entries Randomized Cluster/LocalId for CRD setups since all installations had the same ID Backup restore now creates new DRBD metadata and forces the initial sync to be a full sync Added basic support for Added support for Amazon EBS storage Added ignore reason for storage layers. Used to skip processing resource which would fail anyway. Improved DB-update-logging ZFS: only scan datasets used by Linstor Improved auto-diskful mechanic, also removing exceeding replicas Fixed backup with mixing internal and external metadata Fixed storage-pool size-check on snapshot restore Fixed several issues with backup-shipping (NPE, failed shippings, ...) Fixed auto snapshot not working after controller restart Fixed "LinStor" spelling errors Fixed