Page MenuHomeFreeBSD

D26597.id77656.diff
No OneTemporary

D26597.id77656.diff

Index: sys/kern/vfs_bio.c
===================================================================
--- sys/kern/vfs_bio.c
+++ sys/kern/vfs_bio.c
@@ -3609,23 +3609,25 @@
size = vp->v_mount->mnt_stat.f_iosize;
off = (vm_ooffset_t)blkno * (vm_ooffset_t)vp->v_mount->mnt_stat.f_iosize;
- VM_OBJECT_RLOCK(obj);
for (toff = 0; toff < vp->v_mount->mnt_stat.f_iosize; toff += tinc) {
- m = vm_page_lookup(obj, OFF_TO_IDX(off + toff));
+ m = vm_page_grab_unlocked(obj, OFF_TO_IDX(off + toff),
+ VM_ALLOC_NORMAL | VM_ALLOC_SBUSY | VM_ALLOC_IGN_SBUSY |
+ VM_ALLOC_NOCREAT);
if (!m)
goto notinmem;
tinc = size;
if (tinc > PAGE_SIZE - ((toff + off) & PAGE_MASK))
tinc = PAGE_SIZE - ((toff + off) & PAGE_MASK);
if (vm_page_is_valid(m,
- (vm_offset_t) ((toff + off) & PAGE_MASK), tinc) == 0)
+ (vm_offset_t) ((toff + off) & PAGE_MASK), tinc) == 0) {
+ vm_page_sunbusy(m);
goto notinmem;
+ }
+ vm_page_sunbusy(m);
}
- VM_OBJECT_RUNLOCK(obj);
return 1;
notinmem:
- VM_OBJECT_RUNLOCK(obj);
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Wed, May 20, 9:47 AM (11 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33343278
Default Alt Text
D26597.id77656.diff (1 KB)

Event Timeline