Bug 1505394

Summary: [RFE] Better support for suspend of out-of-space old snapshots
Product: [Community] LVM and device-mapper Reporter: Zdenek Kabelac <zkabelac>
Component: lvm2Assignee: LVM Team <lvm-team>
lvm2 sub component: Snapshots QA Contact: cluster-qe <cluster-qe>
Status: NEW --- Docs Contact:
Severity: unspecified    
Priority: medium CC: agk, cmarthal, heinzm, jbrassow, msnitzer, prajnoha, zkabelac
Version: 2.02.176Flags: rule-engine: lvm-technical-solution?
rule-engine: lvm-test-coverage?
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1155196    

Description Zdenek Kabelac 2017-10-23 13:49:20 UTC
Description of problem:

Original bug 1155196  pointed out to a problem where lvm2 cannot nicely handle the case where one or more snapshots of origin LV are or will become full because of suspend with fsfreeze.

Existing problem can be quickly summarized as a problem - where lvm2 calls suspend on a snapshot which either already is or could become invalid.
In the 1st. case call fsfreeze is already pointless in the later one, such and error is also not a reason to abort whole operation - since out-of-space/invalid snapshot is 'expected' behavior as it may happen anytime during the life of snapshot.

Currently such fsfreeze error cause abort of whole origin+snapshot tree thus in case there is already out-of-space snapshot (or there will be, because of needed  writes) user cannot easily create a new snapshot.



Version-Release number of selected component (if applicable):
2.02.175

How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Corey Marthaler 2018-04-23 21:03:19 UTC
Adding the left over failures from bug 1155196 here so we know why we still can't run this scenario w/ 7.5 code.

SCENARIO - [additional_snap_attempt_w_existing_suspended_snap]
Attempt to create an additional snapshot with existing suspended full snapshot
Making origin volume
lvcreate -L 300M snapper -n origin
Placing an EXT filesystem on origin volume
mke2fs 1.42.9 (28-Dec-2013)
Making snapshot of origin volume
lvcreate -s /dev/snapper/origin -c 16 -n suspended_snap -L 50M
Mounting snapshot and origin volume

Filling snapshot by writting to origin volume, while holding open the snapshot device mnt point
qarsh root@host-086 dd if=/dev/zero of=/mnt/origin/fill_file bs=1M count=60 oflag=direct
60+0 records in
60+0 records out
62914560 bytes (63 MB) copied, 1.57702 s, 39.9 MB/s
Verify snapshot was auto-unmounted due to corruption
pvscan --cache
  /dev/snapper/suspended_snap: read failed after 0 of 1024 at 0: Input/output error
  /dev/snapper/suspended_snap: read failed after 0 of 1024 at 314507264: Input/output error
  /dev/snapper/suspended_snap: read failed after 0 of 1024 at 314564608: Input/output error
  /dev/snapper/suspended_snap: read failed after 0 of 1024 at 4096: Input/output error
  /dev/snapper/suspended_snap: read failed after 0 of 2048 at 0: Input/output error
lvcreate -s /dev/snapper/origin -c 16 -n suspended_snap2 -L 50M
  Rounding up size to full physical extent 52.00 MiB
  device-mapper: suspend ioctl on  (253:5) failed: Input/output error
  Unable to suspend snapper-suspended_snap (253:5)
  Failed to lock logical volume snapper/origin.
  Aborting. Manual intervention required.
couldn't create snapshot suspended_snap2
additional snap attempt failed, possible regression of bug 1155196


3.10.0-862.el7.x86_64

lvm2-2.02.177-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
lvm2-libs-2.02.177-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
lvm2-cluster-2.02.177-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
lvm2-lockd-2.02.177-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
lvm2-python-boom-0.8.5-4.el7    BUILT: Fri Feb 16 13:37:10 CET 2018
cmirror-2.02.177-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
device-mapper-1.02.146-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
device-mapper-libs-1.02.146-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
device-mapper-event-1.02.146-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
device-mapper-event-libs-1.02.146-4.el7    BUILT: Fri Feb 16 13:22:31 CET 2018
device-mapper-persistent-data-0.7.3-3.el7    BUILT: Tue Nov 14 12:07:18 CET 2017