How to safely disconnect NBD device
Hello,
(Following up from
https://listman.redhat.com/archives/libguestfs/2022-May/028820.html)
I was experimenting with nbd, and found that running a command like:
$ nbd-client localhost /dev/nbd1 && mkfs.ext4 /dev/nbd1 && nbd-client -d
/dev/nbd1
Frequently gives me errors like this:
May 02 15:20:50 vostro.rath.org kernel: nbd1: detected capacity change from 0 to 52428800
May 02 15:20:50 vostro.rath.org kernel: block nbd1: NBD_DISCONNECT
May 02 15:20:50 vostro.rath.org kernel: block nbd1: Disconnected due to user request.
May 02 15:20:50 vostro.rath.org kernel: block nbd1: shutting down sockets
May 02 15:20:50 vostro.rath.org kernel: I/O error, dev nbd1, sector 776 op 0x0:(READ) flags 0x80700 phys_seg 29 prio class 0
May 02 15:20:50 vostro.rath.org kernel: I/O error, dev nbd1, sector 776 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
May 02 15:20:50 vostro.rath.org kernel: Buffer I/O error on dev nbd1, logical block 97, async page read
May 02 15:20:50 vostro.rath.org kernel: block nbd1: Attempted send on invalid socket
May 02 15:20:50 vostro.rath.org kernel: I/O error, dev nbd1, sector 0 op 0x1:(WRITE) flags 0x800 phys_seg 0 prio class 0
May 02 15:20:50 vostro.rath.org kernel: block nbd1: Attempted send on invalid socket
May 02 15:20:50 vostro.rath.org kernel: I/O error, dev nbd1, sector 0 op 0x1:(WRITE) flags 0x800 phys_seg 0 prio class 0
To me, this looks as if the kernel is shutting down the NBD connection
while there are still active requests and/or while there is still dirty
data that needs to be flushed.
Is this expected behavior?
If so, what is the recommended way to *safely* disconnect an NBD device?
Best,
-Nikolaus
--
GPG Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F
»Time flies like an arrow, fruit flies like a Banana.«
Reply to: