Bug 1765608

Summary: [Hyper-V][RHEL7.8] Running 'systemctl isolate' on any target stops hyperv-daemon services
Product: Red Hat Enterprise Linux 7 Reporter: Kai Meyer <kai.meyer>
Component: hyperv-daemonsAssignee: Vitaly Kuznetsov <vkuznets>
Status: CLOSED WONTFIX QA Contact: xuli <xuli>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.7CC: cavery, hhei, huzhao, mmorsy, ribarry, vkuznets, xiaofwan, xuli, yacao, yujiang, yuxisun
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1769920 (view as bug list) Environment:
Last Closed: 2020-06-25 09:48:32 UTC 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: 1769920    

Description Kai Meyer 2019-10-25 14:55:55 UTC
Description of problem:
Isolating systemd targets like 'multi-user.target' and 'graphical.target' will stop the hyperv-daemon services.

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

How reproducible:
Isolate any systemd target.

Steps to Reproduce:
1. systemctl isolate multi-user.target

Actual results:
All three hyperv-daemon services are stopped:
hypervfcopyd.service
hypervkvpd.service  
hypervvssd.service  

Expected results:
All three hyperv-daemons should continue to run.

Additional info:
The only time that systemd will start these three services is when their associated devices devices are created by udev. These .device units "Want" their companion .service units, and the .service units "BindsTo" the .device units. However, isolating systemd targets does not add or remove the devices, nor does the target "Want" or "Require", so systemd thinks that the isolated state should not include these services, and gracefully shuts them down.

There should be tighter coupling between the .device units and their .service units such that isolating targets shouldn't stop these services.

Comment 2 Kai Meyer 2019-10-25 17:08:56 UTC
Adding a systemd drop-in with:
[Unit]
IgnoreOnIsolate=1

Seems to resolve this issue very directly.

Comment 6 Vitaly Kuznetsov 2020-06-25 09:48:32 UTC
We have no current plans to address this issue in RHEL7. As a workaround,
fixed services files can be placed to /etc/systemd/system and this will
override what's in /usr/lib/systemd/system/.

Also, the same issue was addressed in RHEL8:
https://bugzilla.redhat.com/show_bug.cgi?id=1769920