aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Wilson <[email protected]>2016-01-09 17:19:10 +0100
committerBrian Behlendorf <[email protected]>2016-01-12 13:51:27 -0800
commita6fb32b85acb2245260aa1cbe396aea1f16b9dd3 (patch)
tree0d996816f76868167ad59e1df47558f22414b9e4
parentfe467e06fd700707501e7e53cf0292149e308684 (diff)
Illumos 6281 - prefetching should apply to 1MB reads
6281 prefetching should apply to 1MB reads Reviewed by: Matthew Ahrens <[email protected]> Reviewed by: Paul Dagnelie <[email protected]> Reviewed by: Alexander Motin <[email protected]> Reviewed by: Dan McDonald <[email protected]> Reviewed by: Justin Gibbs <[email protected]> Reviewed by: Xin Li <[email protected]> Approved by: Gordon Ross <[email protected]> References: https://www.illumos.org/issues/6281 https://github.com/illumos/illumos-gate/commit/6328027 Ported-by: kernelOfTruth [email protected] Signed-off-by: Brian Behlendorf <[email protected]>
-rw-r--r--module/zfs/dmu.c2
-rw-r--r--module/zfs/dmu_zfetch.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c
index 1bf108bfe..f48c0e977 100644
--- a/module/zfs/dmu.c
+++ b/module/zfs/dmu.c
@@ -442,7 +442,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length,
}
if ((flags & DMU_READ_NO_PREFETCH) == 0 && read &&
- length < zfetch_array_rd_sz) {
+ length <= zfetch_array_rd_sz) {
dmu_zfetch(&dn->dn_zfetch, blkid, nblks);
}
rw_exit(&dn->dn_struct_rwlock);
diff --git a/module/zfs/dmu_zfetch.c b/module/zfs/dmu_zfetch.c
index b25b0e007..9064b2614 100644
--- a/module/zfs/dmu_zfetch.c
+++ b/module/zfs/dmu_zfetch.c
@@ -24,7 +24,7 @@
*/
/*
- * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -50,7 +50,7 @@ unsigned int zfetch_max_streams = 8;
unsigned int zfetch_min_sec_reap = 2;
/* max bytes to prefetch per stream (default 8MB) */
unsigned int zfetch_max_distance = 8 * 1024 * 1024;
-/* number of bytes in a array_read at which we stop prefetching (1MB) */
+/* max number of bytes in an array_read in which we allow prefetching (1MB) */
unsigned long zfetch_array_rd_sz = 1024 * 1024;
typedef struct zfetch_stats {