Page MenuHomeFreeBSD

D45558.diff
No OneTemporary

D45558.diff

diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -2289,22 +2289,17 @@
VM_OBJECT_ASSERT_LOCKED(object);
MPASS((object->flags & OBJ_SWAP) != 0);
- if (pctrie_is_empty(&object->un_pager.swp.swp_blks))
- return (object->size);
sb = SWAP_PCTRIE_LOOKUP_GE(&object->un_pager.swp.swp_blks,
rounddown(pindex, SWAP_META_PAGES));
if (sb == NULL)
return (object->size);
- if (sb->p < pindex) {
- for (i = pindex % SWAP_META_PAGES; i < SWAP_META_PAGES; i++) {
- if (sb->d[i] != SWAPBLK_NONE)
- return (sb->p + i);
- }
- sb = SWAP_PCTRIE_LOOKUP_GE(&object->un_pager.swp.swp_blks,
- roundup(pindex, SWAP_META_PAGES));
- if (sb == NULL)
- return (object->size);
+ for (i = pindex - sb->p; i < SWAP_META_PAGES; i++) {
+ if (sb->d[i] != SWAPBLK_NONE)
+ return (sb->p + i);
}
+ sb = SWAP_PCTRIE_LOOKUP_GE(&object->un_pager.swp.swp_blks, pindex);
+ if (sb == NULL)
+ return (object->size);
for (i = 0; i < SWAP_META_PAGES; i++) {
if (sb->d[i] != SWAPBLK_NONE)
return (sb->p + i);
@@ -2314,7 +2309,7 @@
* We get here if a swblk is present in the trie but it
* doesn't map any blocks.
*/
- MPASS(0);
+ __unreachable();
return (object->size);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 7, 6:29 AM (21 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14506121
Default Alt Text
D45558.diff (1 KB)

Event Timeline