C.6. Tracepoint di glock
I tracepoint sono in grado di confermare il funzionamento corretto del controllo della cache combinandoli con l'output di blktrace, e utilizzando la conoscenza della disposizione del disco. È quindi possibile controllare che qualsiasi I/O dato sia stato emesso e completato con un lock corretto, al tempo stesso cerca di rilevare la presenza di eventuali corse critiche.
Il tracepoint
gfs2_glock_state_change
è quello più importante poichè lo si utilizza per il controllo di ogni modifica sullo stato di glock, dalla creazione iniziale fino al declassamento finale che termina con gfs2_glock_put
, e NL finale in transizione su unlocked. Il flag di glock l (locked) viene sempre impostato prima della modifica dello stato, e non verrà rimosso se non nella parte finale. Durante la modifica dello stato (flag del detentore di glock H) non verrà mai conferito un holder. In presenza di holder nella coda, essi avranno sempre uno stato W (waiting). Dopo la modifica dello stato sarà possibile conferire un holder, questa è l'operazione finale prima della rimozione del flag l.
Il tracepoint
gfs2_demote_rq
controlla le richieste di declassamento, sia locali che remote. In presenza di memoria sufficiente sul nodo, le richieste di declassamento locali sono visualizzate raramente, e molto spesso vengono create a causa di operazioni di smontaggio o di reclamo della memoria. Il numero delle richieste di declassamento remote misura il livello di contesa tra i nodi per un gruppo di risorse o un inode particolare.
Al conferimento di un lock per un holder verrà invocato il comando
gfs2_promote
, ciò si verifica durante la fase finale di una modifica dello stato, o a causa di una richiesta di lock che può essere conferito immediatamente a causa dello stato di glock, il quale a sua volta memorizza in cache il lock con una modalità idonea. Dopo questa operazione verrà impostato il flag f (first). I gruppi di risorse utilizzano questo processo.