:Now uobj is allocated by swap_pager. Is it possible to use swap_pager object in :the capacity of vnode's object to get swapping working or it may interfere with :buffer cache?
The vnode's VM object has to use the vnode pager, it cannot be backed by swap. Theoretically one can stack a swap object behind the vnode but it probably would not work... the VM code was never designed to support swap-backed vnode objects. Hmm. If the uobj is backed by swap it should be possible to move (rename) VM pages from the uobj to the vnode object in the VOP_READ op, prior to instantiating the buffer cache buffer. A dirty VM page would remain dirty and cause the related buffer cache buffer to be automatically marked dirty as well. Once the VM pages are moved a getblk()/bread() etc will automatically incorporate them into the buffer cache buffer. Some care would have to be taken not to instantiate the buffer cache buffer until all related VM pages have been moved (so there is no duplication), but it should work. Getting the VM pages from the vnode object back to the uobj might be a bit more difficult. You can probably hook-in at the VOP_STRATEGY function but the only way to rip-out the buffer cache buffer's VM page backing store safely would be ONLY if the buffer cache buffer is marked B_RELBUF at the time the strategy function is called. I think it is doable. You would have to check whether the page exists in the uobj and destroy it if it does before you can rename the VM page in the buffer cache back to the uobj. You seem to be making really good progress, I recommend getting tmpfs 100% working before tackling the buffer cache efficiency issues. Also, if you need a leaf.dragonflybsd.org shell account to work with (e.g. to run vkernels to test with), just send me a private email with your desired username and ssh public key and I will set it up. -- Dion also expressed an interest in doing a tmpfs port. It kinda looks like Nikita got ahead of the game there, sorry Dion! It happens sometimes :-) -Matt Matthew Dillon <dil...@backplane.com>