Trace actions

C - complete
A previously issued request has been completed. The output will detail the sector and size of that request, as well as the success or failure of it.

D - issued
A request that previously resided on the block layer queue or in the io scheduler has been sent to the driver.

I - inserted
A request is being sent to the io scheduler for addition to the internal queue and later service by the driver. The request is fully formed at this time.

Q - queued
This notes intent to queue io at the given location. No real requests exists yet.

B - bounced
The data pages attached to this bio are not reachable by the hardware and must be bounced to a lower memory location. This causes a big slowdown in io performance, since the data must be copied to/from kernel buffers. Usually this can be fixed with using better hardware - either a better io controller, or a platform with an IOMMU.

M - back merge
A previously inserted request exists that ends on the boundary of where this io begins, so the io scheduler can merge them together.

F - front merge
Same as the back merge, except this io ends where a previously inserted requests starts.

G - get request
To send any type of request to a block device, a struct request container must be allocated first.

S - sleep
No available request structures were available, so the issuer has to wait for one to be freed.

P - plug
When io is queued to a previously empty block device queue, Linux will plug the queue in anticipation of future ios being added before this data is needed.

U - unplug
Some request data already queued in the device, start sending requests to the driver. This may happen automatically if a timeout period has passed (see next entry) or if a number of requests have been added to the queue.

T - unplug due to timer
If nobody requests the io that was queued after plugging the queue, Linux will automatically unplug it after a defined period has passed.

X - split
On raid or device mapper setups, an incoming io may straddle a device or internal zone and needs to be chopped up into smaller pieces for service. This may indicate a performance problem due to a bad setup of that raid/dm device, but may also just be part of normal boundary conditions. dm is notably bad at this and will clone lots of io.

A - remap
For stacked devices, incoming io is remapped to device below it in the io stack. The remap action details what exactly is being remapped to what.

krzysiek 2007-01-30