Member 13589269 Ответов: 0

Есть ли какой-либо способ для ioctl() в linux указать идентификатор очереди отправки для запроса ввода-вывода nvme


Я работаю над тестовым инструментом для nvme-cli(написанным на c и может работать на linux).

Для целей проверки SSD мы фактически ищем отправку команд ввода-вывода в определенную очередь отправки(пару очередей ввода-вывода). Нам это было нужно, потому что мы хотели потоковой передачи, но для того, чтобы потоковая передача произошла, нам нужно отправить запросы ввода-вывода в разные очереди, иначе запросы ввода-вывода будут обрабатываться последовательно.

Итак, есть ли какой-нибудь способ в ioctl (), где мы можем указать идентификаторы очереди отправки?

ОПЕРАЦИОННАЯ

Есть ли еще один API, подобный ioctl (), где мы можем указать идентификаторы очереди отправки(Дополнительные параметры)?

Что я уже пробовал:

Вот как запрашивается nvme IO с помощью ioctl()

ioctl(fd, NVME_IOCTL_SUBMIT_IO, &io);
Это вызывает функцию nvme_ioctl() в драйвере здесь

стажер nvme_ioctl() вызывает функцию nvme_submit_io() здесь

nvme_submit_io() имеет параметр struct nvme_ns *ns, где структура имеет представление очереди имени поля здесьздесь

Я хотел бы знать, можем ли мы вызвать ioctl() с дополнительным новым параметром queue_id, который должен быть назначен полю очереди структуры nvme_ns *ns в функции nvme_submit_io ().

Могу я узнать, можем ли мы так поступить?

Если да, пожалуйста, дайте мне несколько кратких шагов. Если нет, пожалуйста, предложите мне любое возможное решение.

Поскольку я новичок в nvme или ioctl, пожалуйста, поправьте меня, если я ошибаюсь.

0 Ответов