More robust device status checking with fuser¶
https://blueprints.launchpad.net/ironic/+spec/device-status-check-with-fuser
Implement a more robust device status checking with fuser to avoid “device is busy” issues after partitioning.
Problem description¶
Right after partitioning, we have a sleep(3) call to avoid the “device is busy” problem. A less error-prone solution is to check with fuser, whether there is any process currently using the disk.
Proposed change¶
Replace the sleep call with a check of the mounted device with fuser. fuser returns with exit code 0 if at least one access has been found and it lists the processes. In case there’s no access, it returns with exit code 1 with no output.
Alternatives¶
lsof can also be used for checking for open files. There isn’t any advantage or disadvantage in this use-case.
Data model impact¶
None
REST API impact¶
None
Driver API impact¶
None
Nova driver impact¶
None
Security impact¶
None
Other end user impact¶
The deployment can raise InstanceDeployFailure after partitioning if the device is not available after a configurable number of retries.
Scalability impact¶
None
Performance Impact¶
Instead of sleeping every time for 3 seconds, fuser will check the status immediately after the partitioning is done. This can result in an shorter deployment time.
Other deployer impact¶
New config options in the disk_partitioner
group:
- check_device_interval: After Ironic has completed creating the partition
table, it continues to check for activity on the attached iSCSI device status at this interval prior to copying the image to the node. Default is 1 second.
- check_device_max_retries: Number of retries for checking the device status.
Default is 20.
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
ifarkas
- Other contributors:
None
Work Items¶
Add config options to
disk_partitioner
group.Implement the device status check with LoopingCall.
Dependencies¶
This patch requires fuser to be installed.
Testing¶
Unit tests
Documentation Impact¶
Documentation should include instructions on how to configure the device status check.
References¶
None