probe::ioblock_trace.bounce(3stap) [centos man page]
PROBE::IOBLOCK_TRACE(3stap) IO Scheduler and block IO Taps PROBE::IOBLOCK_TRACE(3stap)NAME
probe::ioblock_trace.bounce - Fires whenever a buffer bounce is needed for at least one page of a block IO request.
SYNOPSIS
ioblock_trace.bounce
VALUES
None
DESCRIPTION
name - name of the probe point q - request queue on which this bio was queued. devname - device for which a buffer bounce was needed. ino
- i-node number of the mapped file bytes_done - number of bytes transferred sector - beginning sector for the entire bio flags - see below
BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID
3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7
not supported rw - binary trace for read/write request vcnt - bio vector count which represents number of array element (page, offset,
length) which makes up this I/O request idx - offset into the bio vector array phys_segments - number of segments in this bio after
physical address coalescing is performed. size - total size in bytes bdev - target block device bdev_contains - points to the device
object which contains the partition (when bio structure represents a partition) p_start_sect - points to the start sector of the partition
structure of the device
CONTEXT
The process creating a block IO request.
SystemTap Tapset Reference June 2014 PROBE::IOBLOCK_TRACE(3stap)
Check Out this Related Man Page
BLK_MAKE_REQUEST(9) Block Devices BLK_MAKE_REQUEST(9)NAME
blk_make_request - given a bio, allocate a corresponding struct request.
SYNOPSIS
struct request * blk_make_request(struct request_queue * q, struct bio * bio, gfp_t gfp_mask);
ARGUMENTS
q
target request queue
bio
The bio describing the memory mappings that will be submitted for IO. It may be a chained-bio properly constructed by block/bio layer.
gfp_mask
gfp flags to be used for memory allocation
DESCRIPTION
blk_make_request is the parallel of generic_make_request for BLOCK_PC type commands. Where the struct request needs to be farther
initialized by the caller. It is passed a struct bio, which describes the memory info of the I/O transfer.
The caller of blk_make_request must make sure that bi_io_vec are set to describe the memory buffers. That bio_data_dir will return the
needed direction of the request. (And all bio's in the passed bio-chain are properly set accordingly)
If called under none-sleepable conditions, mapped bio buffers must not need bouncing, by calling the appropriate masked or flagged
allocator, suitable for the target device. Otherwise the call to blk_queue_bounce will BUG.
WARNING
When allocating/cloning a bio-chain, careful consideration should be given to how you allocate bios. In particular, you cannot use
__GFP_WAIT for anything but the first bio in the chain. Otherwise you risk waiting for IO completion of a bio that hasn't been submitted
yet, thus resulting in a deadlock. Alternatively bios should be allocated using bio_kmalloc instead of bio_alloc, as that avoids the
mempool deadlock. If possible a big IO should be split into smaller parts when allocation fails. Partial allocation should not be an error,
or you risk a live-lock.
COPYRIGHT Kernel Hackers Manual 3.10 June 2014 BLK_MAKE_REQUEST(9)