Durante a configuração de uma conexão infinita ponto-a-ponto entre dois servidores, executei o comando ibportstate -G [my port GUID] disable
. Agora, quando tento obter o polling de porta ou faço qualquer coisa com o dispositivo, recebo o seguinte erro.
[user@server1 ~]$ perfquery -vvv -ddd
ibwarn: [16059] umad_init: umad_init
ibwarn: [16059] umad_open_port: ca (null) port 0
ibwarn: [16059] umad_get_cas_names: max 32
ibwarn: [16059] umad_get_cas_names: return 1 cas
ibwarn: [16059] resolve_ca_name: checking ca 'qib0'
ibwarn: [16059] resolve_ca_port: checking ca 'qib0'
ibwarn: [16059] umad_get_ca: ca_name qib0
ibwarn: [16059] umad_get_ca: opened qib0
ibwarn: [16059] resolve_ca_port: checking port 0
ibwarn: [16059] resolve_ca_port: checking port 1
ibwarn: [16059] resolve_ca_port: checking port 0
ibwarn: [16059] resolve_ca_port: checking port 1
ibwarn: [16059] resolve_ca_name: phys found -1 on (null) port 0
ibwarn: [16059] umad_open_port: opening mthca0 port 1
ibwarn: [16059] mad_rpc_open_port: can't open UMAD port ((null):0)
perfquery: iberror: [pid 16059] main: failed: Failed to open '(null)' port '0'
Qualquer comando que interaja com o dispositivo infiniband responde com a mesma saída exata, sem exceções. O estado físico da porta está apenas preso.
[user@server1 ~]$ cat /sys/class/infiniband/qib0/ports/1/phys_state
3: Disabled
E aqui está o estado no outro servidor, então sei que pelo menos está tentando.
[user@server0 ~]$ cat /sys/class/infiniband/qib0/ports/1/phys_state
2: Polling
Eu reiniciei, reiniciei o opensm e até mesmo puxei e substituí o cartão. A segunda máquina do par é a hospedagem de serviços que não posso levar off-line tão cedo, então não posso alternar os HCAs.
Eu li alguns outros tópicos em vários sites descrevendo um problema semelhante, mas nenhum deles foi resolvido no tópico.
QLogic IBA7322
CentOS 7, Kernel 3.10.0-514.26.2.el7.x86_64
infiniband-diags 1.6.5