Re: Anyone able to verify the fix for (was Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.)

2000-04-19 Thread Matthew Dillon


:
:I'll remove (or change) the assertion later this evening
:unless I hear protests to the contrary.
:
:Alan
:

Sounds like a plan.  When you get it committed I'll bring it
up on one of my test boxes and run it through the gauntlet.

-Matt
Matthew Dillon 
<[EMAIL PROTECTED]>


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



Re: Anyone able to verify the fix for (was Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.)

2000-04-18 Thread Alan Cox

I'll remove (or change) the assertion later this evening
unless I hear protests to the contrary.

Alan


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



Re: Anyone able to verify the fix for (was Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.)

2000-04-18 Thread Matthew Dillon


:
:This patch introduces a new bug.  While it does guarantee that
:the assertion in vm_object_shadow isn't tripped over, it doesn't
:clear the OBJ_ONEMAPPING flag on the newly created shadow object.
:(New objects are created with OBJ_ONEMAPPING set.)  Consequently,
:we'll have two overlapping mappings to the same shadow object
:that has OBJ_ONEMAPPING set.  That's bad.
:
:Alan

Ach.  I'll just clear in both places.  I really don't have
time to go through the code and 'do it right', but if
someone else wants to I'll be happy to review their code.

-Matt


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



Re: Anyone able to verify the fix for (was Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.)

2000-04-18 Thread Alan Cox

This patch introduces a new bug.  While it does guarantee that
the assertion in vm_object_shadow isn't tripped over, it doesn't
clear the OBJ_ONEMAPPING flag on the newly created shadow object.
(New objects are created with OBJ_ONEMAPPING set.)  Consequently,
we'll have two overlapping mappings to the same shadow object
that has OBJ_ONEMAPPING set.  That's bad.

The real problem is that the assertion is just plain wrong, not
the code around it.  It needs to be corrected or removed.

Alan


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



Anyone able to verify the fix for (was Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.)

2000-04-18 Thread Matthew Dillon

Has Brian or Michael or anyone been able to verify whether my patch
below fixes the reported vm_object_shadow panics yet?  I'd like to get 
it committed (or scrapped).

-Matt


Index: vm_map.c
===
RCS file: /home/ncvs/src/sys/vm/vm_map.c,v
retrieving revision 1.187
diff -u -r1.187 vm_map.c
--- vm_map.c2000/02/28 04:10:35 1.187
+++ vm_map.c2000/04/15 18:02:06
@@ -2119,10 +2119,14 @@
}
 
/*
-* Add the reference before calling vm_object_shadow
-* to insure that a shadow object is created.
+* Clear OBJ_ONEMAPPING before calling vm_object_shadow
+* to ensure that a shadow object is created.  Add a
+* reference to cover the new vm_map_entry being
+* associated with the object.
 */
vm_object_reference(object);
+   vm_object_clear_flag(object, OBJ_ONEMAPPING);
+
if (old_entry->eflags & MAP_ENTRY_NEEDS_COPY) {
vm_object_shadow(&old_entry->object.vm_object,
&old_entry->offset,
@@ -2130,7 +2134,6 @@
old_entry->eflags &= ~MAP_ENTRY_NEEDS_COPY;
object = old_entry->object.vm_object;
}
-   vm_object_clear_flag(object, OBJ_ONEMAPPING);
 
/*
 * Clone the entry, referencing the shared object.
Index: vm_object.c
===
RCS file: /home/ncvs/src/sys/vm/vm_object.c,v
retrieving revision 1.171.2.1
diff -u -r1.171.2.1 vm_object.c
--- vm_object.c 2000/03/17 10:47:35 1.171.2.1
+++ vm_object.c 2000/04/15 18:13:58
@@ -900,7 +900,13 @@
source = *object;
 
/*
-* Don't create the new object if the old object isn't shared.
+* If the old object is not shared we may be able to simply use it
+* as the shadow rather then have to create a new object.  Only
+* objects that we can guarentee this case can be optimized - that is,
+* only objects with no handles that other processes can get a hold
+* of which are otherwise unassociated, have only one mapping, and
+* only one reference count.  XXX do we need the reference count check
+* any more? XXX
 */
 
if (source != NULL &&




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