HomeFreeBSD

bhyve blockif: fix blockif_candelete with Capsicum

Description

bhyve blockif: fix blockif_candelete with Capsicum

NVMe conformance tests for the Format command failed if the
backing-storage for the bhyve device was a file instead of a Zvol. The
tests (and the specification) expect a Format to destroy all previously
written data. The bhyve NVMe emulation implements this by trimming /
deallocating all data from the backing-storage.

The blockif_candelete() function indicated the file did not support
deallocation (i.e. fpathconf(..., _PC_DEALLOC_PRESENT) returned FALSE)
even though the kernel supported file hole punching. This occurs on
builds with Capsicum enabled because blockif did not allow the
fpathconf(2) right.

Fix is to add CAP_FPATHCONF to the cap_rights_init(3) call.

PR: 260081
Reviewed by: allanjude, markj, jhb
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D33203

Details

Provenance
chuckAuthored on Dec 1 2021, 5:07 AM
Reviewer
allanjude
Differential Revision
D33203: bhyve blockif: fix blockif_candelete with Capsicum
Parents
rG3846662dab2c: cam: Initialize wired to false
Branches
Unknown
Tags
Unknown