| blk_start_plug(9) - phpMan
BLK_START_PLUG(9) Block Devices BLK_START_PLUG(9)
NAME
blk_start_plug - initialize blk_plug and track it inside the task_struct
SYNOPSIS
void blk_start_plug(struct blk_plug * plug);
ARGUMENTS
plug
The struct blk_plug that needs to be initialized
DESCRIPTION
Tracking blk_plug inside the task_struct will help with auto-flushing the pending I/O
should the task end up blocking between blk_start_plug and blk_finish_plug. This is
important from a performance perspective, but also ensures that we don't deadlock. For
instance, if the task is blocking for a memory allocation, memory reclaim could end up
wanting to free a page belonging to that request that is currently residing in our private
plug. By flushing the pending I/O when the process goes to sleep, we avoid this kind of
deadlock.
COPYRIGHT
Kernel Hackers Manual 4.8. January 2017 BLK_START_PLUG(9)
|