Ping. Looping linux-fsdevel@xxxxxxxxxxxxxxx as there is a VFS complaint at first. [ 6366.743147] LTP: starting dio04 (diotest4) [ 6366.763496] CIFS VFS: couldn't get user pages (cur_len=-14) iter type 0 iov_offset 0 count 4096 [ 6366.765183] CPU: 1 PID: 8618 Comm: diotest4 Not tainted 4.20.0-rc6+ #1 [ 6366.766471] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 [ 6366.767660] Call Trace: [ 6366.768310] dump_stack+0x46/0x60 [ 6366.769165] cifs_send_async_read.isra.45.cold.60+0x22/0x27 [cifs] [ 6366.770405] __cifs_readv+0x16e/0x360 [cifs] [ 6366.771293] __vfs_read+0x133/0x190 [ 6366.771990] vfs_read+0x8a/0x140 [ 6366.772618] ksys_read+0x4f/0xb0 [ 6366.773260] do_syscall_64+0x55/0x1a0 [ 6366.773990] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 6366.774991] RIP: 0033:0x7eff3e7acb52 [ 6366.775718] Code: 94 20 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b6 0f 1f 80 00 00 00 00 f3 0f 1e fa 8b 05 f6 d8 20 00 85 c0 75 12 31 c0 0f 05 <48> 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 41 54 49 89 d4 55 48 89 [ 6366.779321] RSP: 002b:00007ffd60f35458 EFLAGS: 00000246 ORIG_RAX: 0000000000000000 [ 6366.780769] RAX: ffffffffffffffda RBX: 0000000000000fff RCX: 00007eff3e7acb52 [ 6366.782129] RDX: 0000000000001000 RSI: 00007eff3e3fa000 RDI: 0000000000000006 [ 6366.783493] RBP: 00000000fffff000 R08: 000000000041178f R09: 00000000fe534d42 [ 6366.784875] R10: 0000000000000000 R11: 0000000000000246 R12: 00007eff3ebd36c0 [ 6366.786268] R13: 000000000241e000 R14: fffffffffffff000 R15: 00007ffd60f35488 On 12/14/18, Murphy Zhou <jencce.kernel@xxxxxxxxx> wrote: > Hi, > > It seems that there is a problem in the new dio functions. > > Direct IO on cifs mount is blocking on read since v4.20-rc1. It was ok on > v4.19. > > Bisect points to commit: > be4eb68 CIFS: Add direct I/O functions to file_operations > > With this commit reverted on 4.20-rc1, test is not blocking any more. > > This is easily reproducible by LTP diotest4 on cifs mount, from v4.20-rc1 > until > latest Linus tree. Ctrl-C can interrupt the blocking process. > > Sorry for the late report, > Murphy > > # gdb says it's blocking on open > diotest4 18 TFAIL : diotest4.c:180: read, write with non-aligned > buffer > 458 close(fd); > (gdb) > 465 if ((fd = open(filename, O_DIRECT | O_RDWR)) < 0) { > (gdb) > 469 if (lseek(fd, offset, SEEK_SET) < 0) { > (gdb) > 474 errno = 0; > (gdb) > 475 ret = read(fd, (char *)((ulong) ADDRESS_OF_MAIN & > pagemask), > (gdb) > > # steps to reproduce > git clone https://github.com/linux-test-project/ltp.git > cd ltp > make autotools > ./configure > make > TMPDIR=/cifsmnt ./testcases/kernel/io/direct_io/diotest4 > > /cifsmnt is the cifs mountpoint. > > # dmesg > [ 234.469584] CPU: 1 PID: 1876 Comm: diotest4 Not tainted > 4.20.0-rc1-6510223 #1 > [ 234.469807] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 > [ 234.470026] Call Trace: > [ 234.470361] dump_stack+0x46/0x60 > [ 234.470710] cifs_send_async_read.isra.47.cold.62+0x22/0x27 [cifs] > [ 234.470983] __cifs_readv+0x169/0x360 [cifs] > [ 234.471292] __vfs_read+0x12e/0x190 > [ 234.471513] vfs_read+0x85/0x130 > [ 234.471699] ksys_read+0x4a/0xb0 > [ 234.471939] do_syscall_64+0x50/0x190 > [ 234.472200] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > [ 234.472435] RIP: 0033:0x7fefecddeb52 > [ 234.472630] Code: 94 20 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b6 0f > 1f 80 00 00 00 00 f3 0f 1e fa 8b 05 f6 d8 20 00 85 c0 75 12 31 c0 0f 05 <48> > 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 41 54 49 89 d4 55 48 89 > [ 234.473075] RSP: 002b:00007ffe0bbe51f8 EFLAGS: 00000246 ORIG_RAX: > 0000000000000000 > [ 234.473319] RAX: ffffffffffffffda RBX: 0000000000000fff RCX: > 00007fefecddeb52 > [ 234.473529] RDX: 0000000000001000 RSI: 00007fefeca2c000 RDI: > 0000000000000006 > [ 234.473738] RBP: 00000000fffff000 R08: 0000000000411b4f R09: > 00000000fe534d42 > [ 234.473959] R10: 0000000000000000 R11: 0000000000000246 R12: > 00007fefed2046c0 > [ 234.474180] R13: 0000000000b9a000 R14: fffffffffffff000 R15: > 00007ffe0bbe5228 > > # ps > 1871 1876 1876 1624 pts/0 1646 D 0 0:00 \_ > diotest4 > > # mount.cifs -V > mount.cifs version: 6.8 > > # mount | grep cifs > //localhost/test on /cifsmnt type cifs > (rw,relatime,vers=3.1.1,cache=strict,username=root,uid=0,noforceuid,gid=0,noforcegid,addr=0000:0000:0000:0000:0000:0000:0000:0001,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,sfu,mfsymlinks,rsize=4194304,wsize=4194304,echo_interval=60,actimeo=1) > > # cat /etc/samba/smb.conf > [test] > path = /export/cifstest > writeable = yes > > # smbd -V > Version 4.9.1 >