Как strcut blk_plug работает с многопоточностью? - PullRequest
0 голосов
/ 30 декабря 2018

Исходный код Linux примечание скажем blk_plug - это список для каждой задачи, и в strcut:

/*
 * blk_plug permits building a queue of related requests by holding the I/O
 * fragments for a short period. This allows merging of sequential requests
 * into single larger request. As the requests are moved from a per-task list to
 * the device's request_queue in a batch, this results in improved scalability
 * as the lock contention for request_queue lock is reduced.
 *
 * It is ok not to disable preemption when adding the request to the plug list
 * or when attempting a merge, because blk_schedule_flush_list() will only flush
 * the plug list when the task sleeps by itself. For details, please see
 * schedule() where blk_schedule_flush_plug() is called.
 */
struct blk_plug {
  struct list_head list; 
  struct list_head mq_list; 
  struct list_head cb_list; 
}

как struct blk_plug нет никаких блокировокего безопасно при многопоточном процессе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...