Hi Tom, Steve, Could you take a look at the attached and see if you can tell me why it's going wrong? It's a server-side packet capture of: # rdma link add siw0 type siw netdev enp6s0 # andromeda, softIWarp # mount //192.168.6.1/test /xfstest.test -o user=shares,pass=foobar,rdma # fallocate -l 1M /xfstest.test/hello fallocate: fallocate failed: Resource temporarily unavailable # dd if=/dev/zero of=/xfstest.test/hello2 bs=16k count=1 oflag=direct conv=notrunc seek=2 1+0 records in 1+0 records out 16384 bytes (16 kB, 16 KiB) copied, 0.108858 s, 151 kB/s # umount /xfstest.test I altered the code to only send 16K of data at a time during the fallocate so that each block should fit within one message, but it fails whilst sending the first write. The fallocate starts at frame 74. There's an Ioctl exchange and then it starts using "DDP/RDMA Send" to shovel data across (the data looks right), but the server sends a Terminate packet in frame 90 before the client's Send is complete. The Send completes in frame 92 and the wireshark decoder seems to like it. For comparison I also did a DIO write with dd. That starts in frame 125 and uses a different mechanism (DDP/RDMA Read Request and Read Response) to shovel the data - and that completes successfully. I've switched the encryption back to auto, so it's not doing transport encryption. Thanks, David
Attachment:
cifs-iwarp-falloc.pcap.gz
Description: application/gzip