While we're on the topic of vmapbuf:
I have a kernel module that maps two 64k chunks of user memory into the kernel
using the same set of steps that cam_periph_mapmem uses. However, I inevitably
get the following panic after running the code for a bit:

Aug 30 14:55:26 testhost /kernel: panic: worklist_remove: not on list
Aug 30 14:55:26 testhost /kernel: 
Aug 30 14:55:26 testhost /kernel: syncing disks... 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 
Aug 30 14:55:26 testhost /kernel: giving up on 1 buffers

This is a panic in ffs_softdep.c, it implies to me that either the FFS code
isn't recognizing that not all buffers belong to it or getpbuf isn't doing all
the needed accounting. I notice that I am calling getpbuf(NULL), just as
cam_periph_mapmem does. But above its definition in the comment is:

 *      NOTE: pfreecnt can be NULL, but this 'feature' will be removed
 *      relatively soon when the rest of the subsystems get smart about it. XXX


Also worthy of note is that my kernel module has a lot of printfs which
obviously translate to a lot of synchronous writes by syslog, presumably putting
memory pressure on the file system.

When guessing whether Kirk is at fault or I am fault, it is usually a safe bet
that I am at fault ;-). Any insights?

                                -Kip


On Fri, 30 Aug 2002, Julian Elischer wrote:

> 
> 
> On Fri, 30 Aug 2002, Balaji, Pavan wrote:
> 
> > 
> > Thanx. It's nearly done. I just need to know two more small things.
> > 
> > physio() requires a dev_t as a parameter. What do I give in over here? I
> > can't give NULL, cause it does use it for some stuff in the function
> > definition.
> 
> I wasn't suggesting that you use physio() but that you use it and it's
> friend as a prototype for yourself when you write a function to do what
> you want. The dev_t is associated with the device this is doing
> IO from so it's not necessarily relelvant to you.
> 
> you haven't told us enough about what you want to do to allow us to
> really understand your problem.
> 
> 
> 
> 
> 
> 
> > 
> > Also, the only other parameters to physio() are the uio and the ioflag
> > (which is not used at all). So, where is the kernel virtual address mapping?
> > Do I have to do something this this dev_t thing to open a virtual device
> > which maps to the kernel virtual address. If yes, how do I do this?
> > 
> > Thanx.
> > 
> 
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-hackers" in the body of the message
> 


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to