Page MenuHomeFreeBSD

D46879.id144156.diff
No OneTemporary

D46879.id144156.diff

Index: sys/fs/tmpfs/tmpfs_vnops.c
===================================================================
--- sys/fs/tmpfs/tmpfs_vnops.c
+++ sys/fs/tmpfs/tmpfs_vnops.c
@@ -2102,20 +2102,27 @@
vm_pindex_t p, p_m, p_swp;
p = OFF_TO_IDX(noff);
- m = vm_page_find_least(obj, p);
+
+ /*
+ * Find the first resident page at or after p.
+ */
+ for (m = vm_page_find_least(obj, p); m != NULL; m = vm_page_next(m)) {
+ if (vm_page_any_valid(m))
+ break;
+ }
/*
* Microoptimize the most common case for SEEK_DATA, where
* there is no hole and the page is resident.
*/
- if (m != NULL && vm_page_any_valid(m) && m->pindex == p)
+ p_m = (m == NULL) ? obj->size : m->pindex;
+ if (p_m == p)
return (noff);
p_swp = swap_pager_find_least(obj, p);
if (p_swp == p)
return (noff);
- p_m = m == NULL ? obj->size : m->pindex;
return (IDX_TO_OFF(MIN(p_m, p_swp)));
}

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 5, 8:14 PM (20 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13672467
Default Alt Text
D46879.id144156.diff (885 B)

Event Timeline