2018-05-12 21:24 GMT+02:00 Chuck Silvers <c...@chuq.com>: > the problem with keeping the pages locked (ie. PG_BUSY) while accessing > the user address space is that it can lead to deadlock if the page > we are accessing via the kernel mapping is the same page that we are > accessing via the user mapping.
The pages marked PG_BUSY for the UBC transfer are part of page cache. I sincerely hope it's impossible to have any user mapping for it. Is there are any other scenario for the deadlock in this context? That said, the PG_BUSY is at least a scalability problem, since it restricts the copy operation within the UBC window to only one at a time. Old code holds PG_BUSY only during the fault - with exception of the UBC_FAULTBUSY branch, which still keeps the lock during the whole operation. Jaromir