Date: Sat, 15 Apr 2000 18:09:56 -0400 (EDT) From: Brian Fundakowski Feldman <green@FreeBSD.org> To: Alan Cox <alc@cs.rice.edu> Cc: Matthew Dillon <dillon@apollo.backplane.com>, Alfred Perlstein <bright@wintelcom.net>, Michael Reifenberger <root@nihil.plaut.de>, current@freebsd.org, alc@freebsd.org Subject: Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set. Message-ID: <Pine.BSF.4.21.0004151801140.17351-100000@green.dyndns.org> In-Reply-To: <20000415140945.B3462@cs.rice.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 15 Apr 2000, Alan Cox wrote: > > It is totally legal for OBJ_ONEMAPPING to be set even if the ref_count > > is greater then 1. > > Agreed. OBJ_ONEMAPPING actually means that *each page* within the object > is mapped at most once. The object itself may be mapped many times, > as long as the previous rule isn't violated. In other words, none > of the mappings map an overlapping set of pages. Alright, this makes sense to me. > > ... The ref_count has no bearing on the shareability > > of the object any more. The tests were there before due to all sorts > > of crud that had been hacked in in the 2.2.x and 3.x era to get around > > serious bugs in the OBJ_ONEMAPPING flag and elsewhere in the VM system. > > > > Note that the ref_count == 1 test in the vm_object_shadow optimization > > should be left intact. This optimization requires a much stricter set > > of tests because we do not want to assume sharability of an object > > if someone else (the 'else' being 'someone unknown to us') has a reference > > on it, even if OBJ_ONEMAPPING is set. > > > > Here's what troubles me about the state of the OBJ_ONEMAPPING management > code: When we clear the OBJ_ONEMAPPING attribute on an object, we don't > touch any of its backing objects. Specifically, we don't guarantee > that they don't have OBJ_ONEMAPPING set. I think we should, if only > because it makes reasoning about the system's behavior a lot easier. > > If we cleared OBJ_ONEMAPPING recursively, then the rationale for > this assertion would go away. I'm still trying to understand this: if you know that the object may have pages mapped elsewhere, the backing objects recursively inherit the assumption that it may have parts mapped elsewhere? So, when you set OBJ_ONEMAPPING, should you check upward recursively to check if those objects can have OBJ_ONEMAPPING set? I assume that you mean that a backing object itself should have OBJ_ONEMAPPING cleared if any of the children have it cleared. > Brian, if you'd like to try this, I'll be happy to review it. I'm going to research the VM a bit more now that you and Matt have gotten me on track again, and soon wouldn't mind doing that :) > Alan -- Brian Fundakowski Feldman \ FreeBSD: The Power to Serve! / green@FreeBSD.org `------------------------------' To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0004151801140.17351-100000>