Proces szeregowania żądań do urządzeń blokowych


Funkcja submit_bh ustawia pewne pola w przekazanej jej, strukturze bufora, i wywołuje funkcję generic_make_request.

Funkcja generic_make_request:
Parametry wejściowe: czytanie czy pisanie, bufor

początek funkcji

	sprawdzanie czy nie wyjdziemy poza urządzenie
	
	pobierz kolejkę żądań, funkcją blk_get_queue

	wywołaj funkcję make_request_fn przypisaną tej kolejce

koniec funkcji

Funkcja blk_get_queue, na podstawie numeru głównego urządzenia, znajduje w tablicy blk_dev, strukturę blk_dev_struct. W niej zapisana jest kolejka żądań do tego urządzenie, oraz funkcja do pobierania kolejki. Jeśli funkcja ta jest zdefiniowana, wówczas jej rezultat jest przekazywany jako rezultat funkcji blk_get_queue, w.p.p. zwracana jest kolejka z blk_dev_struct.
Natomiast funkcja make_request_fn jest polem struktury request_queue, czyli kolejki żądań. Jest ona odpowiedzialna za tworzenie i dodawanie struktur request.
Wartości domyślne dla kolejki żądań, ustawiane są w funkcji blk_init_queue. Jedyną funkcją, ze struktury request_queue, której nie zostaje przypisana wartość domyślna, jest request_fn. Przypisywana jest jej funkcja przekazana jako parametr funkcji blk_init_queue. Funkcja request_fn jest odpowiedzialna za przetwarzanie żądań z kolejki i musi uwzględniać szczegóły techniczne urządzenia blokowego.

Wstecz Tomasz Wadowski Dalej