C.7. Bmap-Tracepoints
Die Blockzuweisung ist eine Aufgabe von zentraler Bedeutung für jedes Dateisystem. GFS2 verwendet ein herkömmliches Bitmap-basiertes System mit zwei Bits pro Block. Der Hauptzweck der Tracepoints in diesem Subsystem besteht darin, die Zeit zu überwachen, die das Zuweisen und Eintragen der Blöcke in Anspruch nimmt.
Der Tracepoint
gfs2_bmap
wird zweimal für jede bmap-Operation aufgerufen: einmal zu Beginn, um die bmap-Anforderung anzuzeigen, und einmal am Ende, um das Ergebnis anzuzeigen. Dies macht es einfach, die Anforderungen und Ergebnisse einander zuzuordnen und die Zeit zu messen, die benötigt wurde, um Blöcke in verschiedenen Teilen des Dateisystems, in verschiedenen Datei-Offsets oder sogar in verschiedenen Dateien zuzuweisen. Es ist auch möglich festzustellen, welche Größen physischer Extents durchschnittlich zurückgegeben wird im Vergleich zu denen, die angefordert werden.
Um den Überblick über die zugewiesenen Blöcke zu behalten, wird
gfs2_block_alloc
nicht nur bei Zuweisungen, sondern auch bei der Freigabe von Blöcken aufgerufen. Da die Zuweisungen anhand des Inodes referenziert werden, für den der Block beabsichtigt ist, kann dies dazu verwendet werden, um nachzuverfolgen, welche physischen Blöcke zu welchen Dateien in einem aktiven Dateisystem gehören. Dies ist besonders in Kombination mit blktrace
nützlich, was problematische I/O-Muster zeigen kann, die dann den jeweiligen Inodes zugeordnet werden können, die über diesen Tracepoint herausgefunden werden können.