orig_object->type can change from DEFAULT to SWAP while
vm_object_split() is sleeping. In this case some pages in new_object
may be left unbusied, but vm_object_split() attempts to unbusy all of
them. Track the beginning of the busied range and take care to
unbusy only the pages observed while the source object is of type
OBJT_SWAP.
Details
Details
- Reviewers
alc kib dougm - Commits
- rS365437: vm_object_split(): Handle orig_object type changes.
Diff Detail
Diff Detail
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 33235 Build 30575: arc lint + arc unit
Event Timeline
sys/vm/vm_object.c | ||
---|---|---|
1601 | Regardless of your patch, wouldn't we self-deadlock if this goto occurs and type is OBJT_SWAP ? |
sys/vm/vm_object.c | ||
---|---|---|
1635–1637 | Why do you use "find least" instead of vm_page_lookup() or keeping a pointer to the first page that was left busy above? Using "find least" seems to imply that elsewhere in the kernel someone might be removing from the new object one of the pages left busy above. |
sys/vm/vm_object.c | ||
---|---|---|
1635–1637 | I don't think there is any reason not to just maintain a pointer to the first busy page. |
sys/vm/vm_object.c | ||
---|---|---|
1559 | Shouldn't this be? idx = 0; |