[openib-general] RHEL 4 U3 - lost completions

glebn at voltaire.com glebn at voltaire.com
Mon Oct 2 23:56:57 PDT 2006


On Tue, Oct 03, 2006 at 07:58:50AM +0200, Or Gerlitz wrote:
> Bill Hartner wrote:
> > 
> > Roland Dreier wrote:
> >>     Bill> At 1st, I thought that was the case, a fork, however, I do
> >>     Bill> not think get_user_pages(), and the increment of the ref
> >>     Bill> count, will guarantee the page struct does not change for
> >>     Bill> RHEL 4 U3, I need to verify that though.
> >>
> >> Are you doing a fork()?  If so then, yes, you will not be able to make
> >> your app work on a RHEL4 kernel.  After get_user_pages(), if you do a
> >> fork() then a copy-on-write will still happen, which will cause the
> >> physical page to move as you have discovered.
> > 
> > There is no fork that I am aware of in the code.  The pthread that
> > created the EVD and any other thread in the process that executes the
> > debug code sees the changed page struct.  I will try to recreate this in
> > a test app.
> 
AFAIR there is a bug in kernel 2.6.9 that makes it possible for page to
be changed in process's VM even though it is locked by get_user_pages().
That is why Mellanox driver used mlock() in addition to
get_user_pages(). I think this bug was fixed somewhere around 2.6.11.

--
			Gleb.




More information about the general mailing list