Index: /trunk/src/VBox/Devices/Storage/DevAHCI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 44137)
+++ /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 44138)
@@ -58,4 +58,15 @@
 #include "ATAPIPassthrough.h"
 #include "VBoxDD.h"
+
+#if   defined(VBOX_WITH_DTRACE) \
+   && defined(IN_RING3) \
+   && !defined(VBOX_DEVICE_STRUCT_TESTCASE)
+# include "dtrace/VBoxDD.h"
+#else
+# define VBOXDD_AHCI_REQ_SUBMIT(a,b,c,d)           do { } while (0)
+# define VBOXDD_AHCI_REQ_SUBMIT_TIMESTAMP(a,b)     do { } while (0)
+# define VBOXDD_AHCI_REQ_COMPLETED(a,b,c,d,e)      do { } while (0)
+# define VBOXDD_AHCI_REQ_COMPLETED_TIMESTAMP(a,b)  do { } while (0)
+#endif
 
 /** Maximum number of ports available.
@@ -5617,4 +5628,9 @@
     bool fCanceled = false;
     uint64_t tsNow = RTTimeMilliTS();
+    AHCITXDIR enmTxDir = AHCITXDIR_NONE;
+
+    ASMAtomicReadSize(&pAhciReq->enmTxState, &enmTxDir);
+    VBOXDD_AHCI_REQ_COMPLETED(pAhciReq, rcReq, enmTxDir, pAhciReq->uOffset, pAhciReq->cbTransfer);
+    VBOXDD_AHCI_REQ_COMPLETED_TIMESTAMP(pAhciReq, tsNow);
 
     /*
@@ -6323,4 +6339,6 @@
                     if (!(pAhciReq->fFlags & AHCI_REQ_OVERFLOW))
                     {
+                        VBOXDD_AHCI_REQ_SUBMIT(pAhciReq, enmTxDir, pAhciReq->uOffset, pAhciReq->cbTransfer);
+                        VBOXDD_AHCI_REQ_SUBMIT_TIMESTAMP(pAhciReq, pAhciReq->tsStart);
                         if (enmTxDir == AHCITXDIR_FLUSH)
                         {
Index: /trunk/src/VBox/Devices/build/VBoxDD.d
===================================================================
--- /trunk/src/VBox/Devices/build/VBoxDD.d	(revision 44137)
+++ /trunk/src/VBox/Devices/build/VBoxDD.d	(revision 44138)
@@ -22,4 +22,9 @@
     probe hgcmcall__completed__emt(void *pvCmd, int rc);
     probe hgcmcall__completed__done(void *pvCmd, unsigned int idFunction, unsigned int idClient, int rc);
+
+    probe ahci__req__submit(void *pvReq, int iTxDir, uint64_t offStart, uint32_t cbXfer);
+    probe ahci__req__submit__timestamp(void *pvReq, uint64_t tsStart);
+    probe ahci__req__completed(void *pvReq, int rcReq, int iState, uint64_t offStart, uint32_t cbXfer);
+    probe ahci__req__completed__timestamp(void *pvReq, uint64_t tsEnd);
 };
 
