re attach-ns causing IO errors
Wen Xiong
wenxiong at linux.ibm.com
Mon Feb 19 14:49:06 PST 2024
Hi All,
We discussed this at the beginning of November last year.
Test team with extra ns-rescan, get new namespace back last year.
But they still ask if there is way not doing extra ns-rescan.
Consider this scenario with nguid changes:
# nvme list-subsys
nvme-subsys0 -
NQN=nqn.1994-11.com.samsung:nvme:PM1743:2.5-inch:S7DDNG0X100093
\
+- nvme0 pcie 052a:58:00.0 live
+- nvme1 pcie 058a:58:00.0 live
After system boots up:
Nvme-subsys0 -> ns_head(NSID1/NGUID1)
/dev/nvme0n1 -> ns_head(NSID1/NGUID1) ->ns(NSID1/NGUID1)
/dev/nvme1 -> ns_head(NSID1/NGUID1) ->ns(NSID1/NGUID1)
After delete-ns /dev/nvme0 -n 1 -c 0x82:
Nvme-subsy0 -> no more ns_head(EMPTY)
/dev/nvme0 -> no ns(EMPTY)
/dev/nvme1 -> no ns(EMPTY)
create-ns /dev/nvme0 -s 0x5000000 -c 0x5000000 -f 0 -d 0 -m 1:
After attach-ns /dev/nvme0 -n 1 -c 0x82: I saw calling
nvme_scan_ns_list() twice.
1st scan: nvme_queue_scan() -> nvme_scan_ns_list(), we got:
Nvme-subsy0 -> ns_head(NSID1/NGUID1) -------> Note: this is old NGUID1
/dev/nvme0 -> ns_head(NSID1/NGUID1) ->ns(NSID1/NGUID1) ----> Note: this
is old NGUID1
2nd scan: scan_work() -> nvme_scan_ns_list, we got:
Nvme-subsys0 ->ns_head(NSID1/NGUID1) ----> created this ns_head in 1st
scan.
/dev/nvme0n1 -> ns_head(NSID1/NGUID1) -> ns(NSID1/NGUID2)
Then saw: nvme nvme0: identifiers changed for nsid 1 ---> because of
NGUID changed to NGUID2
block nvme0n1: no available path - failing I/O
block nvme0n1: no available path - failing I/O
My question is:
- Looks only scan once during system boot up.
- Why scan twice when did delete-ns/create-ns/attach operation? 1st
scan: Nvme_queue_scan is called from user space or udev?
- 1st scan, NGUID1 is old one, 2nd scan, NGUID2 is new one?
Thanks for your help!
Wendy
More information about the Linux-nvme
mailing list