Lab07 block device drivers #7
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Laborator 7
Exercițiul 1
Am înregistrat block device-ul folosind
register_blkdevcuMY_BLOCK_MAJORvaloarea240. Observăm rezultatul prin comanda:Modificând valoarea majorului cu 7, observăm că inserarea modulului eșuează.
Exercițiul 2
Am instanțiat un
block deviceși în funcția ce se ocupa de tratarea request-urilor am afișat diverse informații ale structuriirq. În cazul în care request-ul nu vine de la file system, acesta va fi ignorat.Exercițiul 3
Apelând funcția
my_block_transfervom verifica dacă prin variabiladirse indică direcția de scriere sau citire. În cazul în care aceasta are valoarea0(citire) se vor copialenbytes din zona de memorie,dev->dataînbuffer, altfel în cazul unei scrieri se va face operația inversă.Exercițiul 4
Am deschis block device-ul după numele/path-ul acestuia folosind
blkdev_get_by_path. Apoi am completat câmpurile structuriibio:REQ_OP_READ)Structura completată a fost submisa către subsistemul I/O pentru asociere cu funcția
submit_bio_waitavând garanția că procesarea structurii a fost finalizata la finalul apelului. După aceea am afișat primii trei bytes din buffer.Observăm că outputul este cel așteptat:
❗ În laborator, în ultimul paragraf al secțiunii Initialize a struct bio structure este un typo: "the size of the bufer."
Exercițiul 5
Asemănător cu exercițiul anterior, de această dată am setat direcția pe
REQ_OP_WRITEîn cazul în care parametrul formaldirindică o scriere.Exercițiul 6
Spre deosebire de implementarea trecută, acum se iterează prin toalitatea segmentelor structurii
bio. Pentru fiecare buffer se va apelamy_block_transfercare va efectua operația de citire/scriere în funcție de valoarea variabileidir.