FreeBSD Bugzilla – Attachment 179917 Details for
Bug 216178
ZFS ARC and L2ARC are unrealistically large, maybe after r307265
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
the local patch
file_216178.txt (text/plain), 2.66 KB, created by
Andriy Gapon
on 2017-02-12 20:12:56 UTC
(
hide
)
Description:
the local patch
Filename:
MIME Type:
Creator:
Andriy Gapon
Created:
2017-02-12 20:12:56 UTC
Size:
2.66 KB
patch
obsolete
>commit 5d6b9255ccf3f190ad1f2fe0c3fbfba718b33175 >Author: Andriy Gapon <avg@icyb.net.ua> >Date: Mon Feb 6 20:57:10 2017 +0200 > > l2arc: try to fix write size calculation broken by compressed arc > >diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c >index bd2204737af4d..c46ba94f4680c 100644 >--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c >+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c >@@ -6911,7 +6911,7 @@ top: > } > > if (!all && HDR_HAS_L2HDR(hdr) && >- (hdr->b_l2hdr.b_daddr > taddr || >+ (hdr->b_l2hdr.b_daddr >= taddr || > hdr->b_l2hdr.b_daddr < dev->l2ad_hand)) { > /* > * We've evicted to the target address, >@@ -7045,7 +7045,22 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) > continue; > } > >- if ((write_asize + HDR_GET_LSIZE(hdr)) > target_sz) { >+ /* >+ * We rely on the L1 portion of the header below, so >+ * it's invalid for this header to have been evicted out >+ * of the ghost cache, prior to being written out. The >+ * ARC_FLAG_L2_WRITING bit ensures this won't happen. >+ */ >+ ASSERT(HDR_HAS_L1HDR(hdr)); >+ >+ ASSERT3U(HDR_GET_PSIZE(hdr), >, 0); >+ ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); >+ ASSERT3U(arc_hdr_size(hdr), >, 0); >+ uint64_t size = arc_hdr_size(hdr); >+ uint64_t asize = vdev_psize_to_asize(dev->l2ad_vdev, >+ size); >+ >+ if ((write_psize + asize) > target_sz) { > full = B_TRUE; > mutex_exit(hash_lock); > ARCSTAT_BUMP(arcstat_l2_write_full); >@@ -7080,21 +7095,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) > list_insert_head(&dev->l2ad_buflist, hdr); > mutex_exit(&dev->l2ad_mtx); > >- /* >- * We rely on the L1 portion of the header below, so >- * it's invalid for this header to have been evicted out >- * of the ghost cache, prior to being written out. The >- * ARC_FLAG_L2_WRITING bit ensures this won't happen. >- */ >- ASSERT(HDR_HAS_L1HDR(hdr)); >- >- ASSERT3U(HDR_GET_PSIZE(hdr), >, 0); >- ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); >- ASSERT3U(arc_hdr_size(hdr), >, 0); >- uint64_t size = arc_hdr_size(hdr); >- uint64_t asize = vdev_psize_to_asize(dev->l2ad_vdev, >- size); >- > (void) refcount_add_many(&dev->l2ad_alloc, size, hdr); > > /* >@@ -7156,7 +7156,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) > return (0); > } > >- ASSERT3U(write_asize, <=, target_sz); >+ ASSERT3U(write_psize, <=, target_sz); > ARCSTAT_BUMP(arcstat_l2_writes_sent); > ARCSTAT_INCR(arcstat_l2_write_bytes, write_asize); > ARCSTAT_INCR(arcstat_l2_size, write_sz);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 216178
:
179917
|
180167
|
180235