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

Reply via email to