Page MenuHomeFreeBSD

D27607.diff
No OneTemporary

D27607.diff

diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -882,7 +882,7 @@
* It is assumed that a reference to the object is already
* held by the callers.
*/
- obj = m->object;
+ obj = atomic_load_ptr(&m->object);
for (;;) {
if (vm_page_tryacquire(m, allocflags))
return (true);
@@ -4386,8 +4386,8 @@
if (locked && (allocflags & VM_ALLOC_NOCREAT) == 0)
vm_page_reference(m);
- if (_vm_page_busy_sleep(object, m, m->pindex, wmesg, allocflags,
- locked) && locked)
+ if (_vm_page_busy_sleep(object, m, pindex, wmesg, allocflags, locked) &&
+ locked)
VM_OBJECT_WLOCK(object);
if ((allocflags & VM_ALLOC_WAITFAIL) != 0)
return (false);
@@ -4780,7 +4780,7 @@
for (; i < count; i++) {
if (m != NULL) {
if (!vm_page_tryacquire(m, allocflags)) {
- if (vm_page_grab_sleep(object, m, pindex,
+ if (vm_page_grab_sleep(object, m, pindex + i,
"grbmaw", allocflags, true))
goto retrylookup;
break;

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 26, 8:45 PM (11 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30395320
Default Alt Text
D27607.diff (1002 B)

Event Timeline