Есть ли какой-либо способ для 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, пожалуйста, поправьте меня, если я ошибаюсь.