8.5. Suportes de Glock
Tabela 8.5, “Bandeiras porta-bandeiras Glock” mostra os significados das diferentes bandeiras porta-glock.
Bandeira | Nome | Significado |
---|---|---|
a | Async | Não espere pelo resultado da glock (pesquisará o resultado mais tarde) |
A | Qualquer | Qualquer modo de bloqueio compatível é aceitável |
c | Sem cache | Quando desbloqueado, destravar imediatamente a fechadura DLM |
e | Não expira | Ignorar pedidos subsequentes de cancelamento de bloqueio |
E | Exato | Deve ter o modo de bloqueio exato |
F | Primeiro | Definido quando o titular é o primeiro a ser concedido para esta fechadura |
H | Titular | Indica que o bloqueio solicitado é concedido |
p | Prioridade | Titular da fila de espera à frente da fila |
t | Tente | Uma fechadura "try |
T | Experimente 1CB | Uma fechadura "try" que envia uma chamada de retorno |
W | Aguarde | Definido enquanto se aguarda a solicitação para completar |
As bandeiras mais importantes são H (suporte) e W (espera), como mencionado anteriormente, uma vez que elas são colocadas em pedidos de fechaduras concedidas e em fila de espera, respectivamente. A ordenação dos detentores na lista é importante. Se houver algum detentor concedido, ele estará sempre à frente da fila, seguido por qualquer detentor em fila de espera.
Se não houver titulares concedidos, então o primeiro titular na lista será aquele que desencadeará a próxima mudança de estado. Como os pedidos de demote são sempre considerados mais prioritários que os pedidos do sistema de arquivos, isso pode nem sempre resultar diretamente em uma mudança no estado solicitado.
O subsistema glock suporta dois tipos de fechadura "try". Estes são úteis tanto porque permitem a retirada de bloqueios fora da ordem normal (com recuo e tentativa adequados) e porque podem ser usados para ajudar a evitar recursos em uso por outros nós. A fechadura t (try) normal é exatamente o que seu nome indica; é uma fechadura "try" que não faz nada de especial. A fechadura T (try 1CB
), por outro lado, é idêntica à fechadura t, exceto que a DLM enviará uma única chamada de retorno para os atuais porta-fechaduras incompatíveis. Um uso da fechadura T (try 1CB
) é com as fechaduras iopen
, que são usadas para arbitrar entre os nós quando a contagem do inode i_nlink
é zero, e determinar qual dos nós será responsável pela desalocação do inode. A glock iopen
é normalmente mantida no estado compartilhado, mas quando a contagem de i_nlink
se torna zero e →evict_inode
() é chamada, ela solicitará uma fechadura exclusiva com o conjunto T (try 1CB
). Ela continuará a desalocar o inode se a fechadura for concedida. Se a eclusa não for concedida, resultará no(s) nó(s) que estava(m) impedindo a concessão da eclusa marcando seu(s) glock(s) com a bandeira D (demote), que é verificada em →drop_inode
() tempo, a fim de garantir que a desalocação não seja esquecida.
Isto significa que os nós que têm contagem zero de ligações, mas ainda estão abertos, serão desalocados pelo nó em que o final close
() ocorre. Além disso, ao mesmo tempo em que a contagem de links do inodo é decretada a zero, o inodo é marcado como estando no estado especial de ter contagem zero de links, mas ainda em uso no bitmap do grupo de recursos. Isto funciona como a lista de órfãos do sistema de arquivos ext3, pois permite que qualquer leitor subseqüente do bitmap saiba que existe um espaço potencial que pode ser recuperado, e tente recuperá-lo.