Page MenuHomeFreeBSD

D19340.id54390.diff
No OneTemporary

D19340.id54390.diff

Index: head/sys/ufs/ffs/ffs_vnops.c
===================================================================
--- head/sys/ufs/ffs/ffs_vnops.c
+++ head/sys/ufs/ffs/ffs_vnops.c
@@ -111,6 +111,7 @@
static vop_fdatasync_t ffs_fdatasync;
static vop_fsync_t ffs_fsync;
static vop_getpages_t ffs_getpages;
+static vop_getpages_async_t ffs_getpages_async;
static vop_lock1_t ffs_lock;
static vop_read_t ffs_read;
static vop_write_t ffs_write;
@@ -132,7 +133,7 @@
.vop_fsync = ffs_fsync,
.vop_fdatasync = ffs_fdatasync,
.vop_getpages = ffs_getpages,
- .vop_getpages_async = vnode_pager_local_getpages_async,
+ .vop_getpages_async = ffs_getpages_async,
.vop_lock1 = ffs_lock,
.vop_read = ffs_read,
.vop_reallocblks = ffs_reallocblks,
@@ -154,7 +155,7 @@
.vop_fsync = ffs_fsync,
.vop_fdatasync = ffs_fdatasync,
.vop_getpages = ffs_getpages,
- .vop_getpages_async = vnode_pager_local_getpages_async,
+ .vop_getpages_async = ffs_getpages_async,
.vop_lock1 = ffs_lock,
.vop_read = ffs_read,
.vop_reallocblks = ffs_reallocblks,
@@ -1742,3 +1743,25 @@
return (vfs_bio_getpages(vp, ap->a_m, ap->a_count, ap->a_rbehind,
ap->a_rahead, ffs_gbp_getblkno, ffs_gbp_getblksz));
}
+
+static int
+ffs_getpages_async(struct vop_getpages_async_args *ap)
+{
+ struct vnode *vp;
+ struct ufsmount *um;
+ int error;
+
+ vp = ap->a_vp;
+ um = VFSTOUFS(vp->v_mount);
+
+ if (um->um_devvp->v_bufobj.bo_bsize <= PAGE_SIZE)
+ return (vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count,
+ ap->a_rbehind, ap->a_rahead, ap->a_iodone, ap->a_arg));
+
+ error = vfs_bio_getpages(vp, ap->a_m, ap->a_count, ap->a_rbehind,
+ ap->a_rahead, ffs_gbp_getblkno, ffs_gbp_getblksz);
+ ap->a_iodone(ap->a_arg, ap->a_m, ap->a_count, error);
+
+ return (error);
+}
+

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 12, 10:49 PM (2 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28671178
Default Alt Text
D19340.id54390.diff (1 KB)

Event Timeline