| blk_attempt_plug_merge(9) - phpMan
BLK_ATTEMPT_PLUG_MER(9) Block Devices BLK_ATTEMPT_PLUG_MER(9)
NAME
blk_attempt_plug_merge - try to merge with current's plugged list
SYNOPSIS
bool blk_attempt_plug_merge(struct request_queue * q, struct bio * bio,
unsigned int * request_count,
struct request ** same_queue_rq);
ARGUMENTS
q
request_queue new bio is being queued at
bio
new bio being queued
request_count
out parameter for number of traversed plugged requests
same_queue_rq
pointer to struct request that gets filled in when another request associated with q
is found on the plug list (optional, may be NULL)
DESCRIPTION
Determine whether bio being queued on q can be merged with a request on current's plugged
list. Returns true if merge was successful, otherwise false.
Plugging coalesces IOs from the same issuer for the same purpose without going through
q->queue_lock. As such it's more of an issuing mechanism than scheduling, and the request,
while may have elvpriv data, is not added on the elevator at this point. In addition, we
don't have reliable access to the elevator outside queue lock. Only check basic merging
parameters without querying the elevator.
Caller must ensure !blk_queue_nomerges(q) beforehand.
COPYRIGHT
Kernel Hackers Manual 4.8. January 2017 BLK_ATTEMPT_PLUG_MER(9)
|