2b69930f08
Just issue a readahead near the end of the vnode and enqueue an async read. Now let nfs_setattr() truncate the vnode, set its new size and nfs_vinvalbuf() waits for the pages from the readahead to become unbusy. The async read gets processed and returns with uio_resid > 0 because there is a hole and no write after the hole has been pushed yet. As the vnode size already got truncated to the new size the KASSERT() incorrectly fires. |
||
---|---|---|
.. | ||
Makefile | ||
files.nfs | ||
krpc.h | ||
krpc_subr.c | ||
nfs.h | ||
nfs_bio.c | ||
nfs_boot.c | ||
nfs_bootdhcp.c | ||
nfs_bootparam.c | ||
nfs_bootstatic.c | ||
nfs_clntsocket.c | ||
nfs_clntsubs.c | ||
nfs_export.c | ||
nfs_iod.c | ||
nfs_kq.c | ||
nfs_node.c | ||
nfs_serv.c | ||
nfs_socket.c | ||
nfs_srvcache.c | ||
nfs_srvsocket.c | ||
nfs_srvsubs.c | ||
nfs_subs.c | ||
nfs_syscalls.c | ||
nfs_var.h | ||
nfs_vfsops.c | ||
nfs_vnops.c | ||
nfsdiskless.h | ||
nfsm_subs.h | ||
nfsmount.h | ||
nfsnode.h | ||
nfsproto.h | ||
nfsrtt.h | ||
nfsrvcache.h | ||
rpcv2.h | ||
xdr_subs.h |