Page MenuHomeFreeBSD

D46879.id144185.diff
No OneTemporary

D46879.id144185.diff

Index: sys/fs/tmpfs/tmpfs_vnops.c
===================================================================
--- sys/fs/tmpfs/tmpfs_vnops.c
+++ sys/fs/tmpfs/tmpfs_vnops.c
@@ -2099,7 +2099,7 @@
tmpfs_seek_data_locked(vm_object_t obj, off_t noff)
{
vm_page_t m;
- vm_pindex_t p, p_m, p_swp;
+ vm_pindex_t p, p_swp;
p = OFF_TO_IDX(noff);
m = vm_page_find_least(obj, p);
@@ -2115,8 +2115,17 @@
if (p_swp == p)
return (noff);
- p_m = m == NULL ? obj->size : m->pindex;
- return (IDX_TO_OFF(MIN(p_m, p_swp)));
+ /*
+ * Find the first resident page after p, before p_swp.
+ */
+ while (m != NULL && m->pindex < p_swp) {
+ if (vm_page_any_valid(m))
+ return (IDX_TO_OFF(m->pindex));
+ m = TAILQ_NEXT(m, listq);
+ }
+ if (p_swp == OBJ_MAX_SIZE)
+ p_swp = obj->size;
+ return (IDX_TO_OFF(p_swp));
}
static off_t

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 20, 4:00 AM (4 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31818967
Default Alt Text
D46879.id144185.diff (823 B)

Event Timeline