Arun Sharma said: > bread > ffs_read > ffs_getpages > vnode_pager_getpages > vm_fault > --- > slow_copyin > ffs_write > vn_write > dofilewrite > write > syscall > > getblk finds that the buffer is marked B_BUSY and sleeps on it. But I > can't figure out who marked it busy. > This looks like the historical problem of doing I/O to an mmap'ed region. There are two facets to the problem: One where the I/O is to the same vn, and the other is where the I/O is to a different vn. The case where the I/O is to the same vn had a (short term) fix previously in the code, by allowing for recursive usage of a vn under certain circumstances. The problem of different vn's can be fixed by proper resource handling in vfs_bio (and perhaps other places.) (My memory isn't 100% clear on the code anymore, but you have shown alot of info with your backtrace.)
-- John | Never try to teach a pig to sing, dy...@iquest.net | it makes one look stupid jdy...@nc.com | and it irritates the pig. To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message