Description
Currently all nvme create's will not populate past the first.
The reason being is that the resource-agent responsible for creating the port and linking the subsystems to that port never will reach its code due to "nvmet_port_monitor()".
https://github.com/ClusterLabs/resource-agents/blob/main/heartbeat/nvmet-port#L137
The health check only checks the existence of the directory and if so, doesn't iterate over the nqns:
https://github.com/ClusterLabs/resource-agents/blob/main/heartbeat/nvmet-port#L148
nvmet_port_start() {
nvmet_port_monitor
if [ $? = $OCF_SUCCESS ]; then
return $OCF_SUCCESS
fi
mkdir ${portdir}
echo ${OCF_RESKEY_addr} > ${portdir}/addr_traddr
echo ${OCF_RESKEY_type} > ${portdir}/addr_trtype
echo ${OCF_RESKEY_svcid} > ${portdir}/addr_trsvcid
echo ${OCF_RESKEY_addr_fam} > ${portdir}/addr_adrfam
for subsystem in ${OCF_RESKEY_nqns}; do
ln -s /sys/kernel/config/nvmet/subsystems/${subsystem} \
${portdir}/subsystems/${subsystem}
done
nvmet_port_monitor
}
nvmet_port_monitor() {
[ -d ${portdir} ] || return $OCF_NOT_RUNNING
return $OCF_SUCCESS
}
I noticed that we don't populate port_id in "/etc/drbd-reactor.d/linstor-gateway-nvmeof-$name.toml"
We only populate:
"ocf:heartbeat:nvmet-port port addr=10.91.230.214 nqns=linbit:nvme:zoo type=tcp"
Desired behavior?
If the user provides a different service address it probably should just automatically take the next available port. This probably should be fixed in linstor-gateway.
If the user provides the same service address it should link it in. This probably should be fixed in resource-agents.
Potentially port_id could be exposed to a user, but probably not necessary.
Activity