https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235708
Jason A. Harmening <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|[email protected] |[email protected] CC| |[email protected] --- Comment #1 from Jason A. Harmening <[email protected]> --- It looks like FFS is still using the generic pager for its getpages_async VNOP, which doesn't work with block sizes larger than the system page size. The synchronous variant uses vfs_bio_getpages() to handle larger blocksizes, but since that iteratively calls bread() it is a fundamentally synchronous operation. I need to do more digging, but right now it seems like trying to implement an asynchronous-ish variant of vfs_bio_getpages() might be too much work for little real benefit in a not-common use case. It seems like it might be acceptable to implement an ffs_getpages_async() which still uses the asynchronous generic pager when possible, but if blocksize > pagesize will fall back to synchronous vfs_bio_getpages() and then immediately call iodone. In fact, vop_stdgetpages_async() is implemented as a call to synchronous VOP_GETPAGES() followed by iodone. This would allow sendfile(2) to work with larger blocksizes while still preserving the performance benefit of asynchronous completion for the majority (blocksize <= pagesize) case. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "[email protected]"
