Kei te whakawhanake a WD i tetahi taraiwa NVMe i Rust. Te whakamatautau me te Rust i runga i FreeBSD

I te huihuinga Linux Plumbers 2022 e tu ana i enei ra, i tukuna e tetahi miihini mai i Western Digital tetahi whakaaturanga mo te whakawhanaketanga o te taraiwa whakamatautau mo nga puku SSD me te atanga NVM-Express (NVMe), i tuhia ki te reo Rust me te rere ki te koo Linux. taumata. Ahakoa te mea kei te waahi tonu te kaupapa o te whakawhanaketanga, kua whakaatuhia e te whakamatautau ko te mahi a te taraiwa NVMe i roto i te reo Rust e rite ana ki te taraiwa NVMe i tuhia ki te reo C e wātea ana i roto i te kernel.

Kei te whakawhanake a WD i tetahi taraiwa NVMe i Rust. Te whakamatautau me te Rust i runga i FreeBSD
Kei te whakawhanake a WD i tetahi taraiwa NVMe i Rust. Te whakamatautau me te Rust i runga i FreeBSD

E kii ana te ripoata ko te taraiwa NVMe o naianei i C he tino pai mo nga kaiwhakawhanake, engari ko te NVMe subsystem he papa pai mo te torotoro i te whaihua o te whakawhanake taraiwa i roto i te Rust, na te mea he maamaa noa, he whanui te whakamahi, he nui nga whakaritenga mahi, a he he whakatinanatanga tohutoro mo te whakataurite me te tautoko i nga momo atanga (dev, pci, dma, blk-mq, gendisk, sysfs).

Kei te tohuhia ko te taraiwa PCI NVMe mo Rust kua whakarato i nga mahi e tika ana mo te mahi, engari kaore ano kia rite mo te whakamahinga whanui, na te mea e hiahia ana kia whakapai ake i te takitahi. Ko nga mahere a meake nei ko te whakakore i te waehere o nga poraka haumaru o naianei, te tautoko i te tango taputapu me nga mahi tango taraiwa, te tautoko i te atanga sysfs, te whakatinana i te arataki mangere, te hanga taraiwa mo te blk-mq, me te whakamatautau ki te whakamahi i te tauira hotaka tukutahi mo queue_rq.

I tua atu, ka taea e tatou te kite i nga whakamatautau i whakahaerehia e te Rōpū NCC ki te whakawhanake i nga taraiwa i te reo Rust mo te pata FreeBSD. Hei tauira, ka tirotirohia e matou tetahi taraiwa paoro ngawari e whakahoki ana i nga raraunga kua tuhia ki te konae /dev/rustmodule. I te waahanga whakamatautau e whai ake nei, kei te whakaaro te Rōpū NCC ki te mahi ano i nga waahanga matua o te kernel i roto i te reo Rust hei whakapai ake i te haumarutanga o nga mahi whatunga me nga konae.

Heoi, ahakoa kua whakaatuhia ka taea te hanga i nga waahanga ngawari i roto i te reo Rust, ka kaha ake te whakauru o Rust ki te pata FreeBSD me mahi ano. Hei tauira, ka whakahuahia e ratou te hiahia ki te hanga i tetahi huinga paparanga tangohanga i runga i nga punaha iti me nga hanganga kernel, he rite ki nga taapiri kua whakaritea e te kaupapa Rust mo Linux. I te wa kei te heke mai, ka whakamahere matou ki te whakahaere i nga whakamatautau rite ki te kakano Illumos me te tautuhi i nga tangohanga noa i roto i te Rust ka taea te whakamahi i nga taraiwa kua tuhia ki te Rust mo Linux, BSD me Illumos.

E ai ki a Microsoft me Google, tata ki te 70% o nga whakaraeraetanga i roto i o raatau hua rorohiko i puta mai i te kore haumaru o te whakahaere mahara. Ko te whakaaro ma te whakamahi i te reo Rust ka whakaiti i te tupono o nga whakaraeraetanga i puta mai i te mahi kino me te mahara, me te whakakore i te puta o nga hapa penei i te uru ki tetahi waahi mahara i muri i tana wetewete me te kaha o te paera.

Ka whakaratohia te haumaru mahara i roto i te Rust i te wa whakahiato ma te tirotiro tohutoro, te pupuri i te mana o te ahanoa me te oranga o te ahanoa (whanui), tae atu ki te arotake i te tika o te uru mahara i te wa e mahia ana te waehere. Ko te waikura hoki he whakamarumaru mai i nga puhaketanga integer, me whakahau kia tiimata nga uara taurangi i mua i te whakamahi, ka pai ake te hapai i nga hapa i roto i te whare pukapuka paerewa, te whakamahi i te kaupapa o nga tohutoro koretake me nga taurangi ma te taunoa, e tuku ana i te patopato pateko kaha hei whakaiti i nga hapa arorau.

Source: opennet.ru

Tāpiri i te kōrero