Author: mav
Date: Wed May 11 12:38:07 2016
New Revision: 299435
URL: https://svnweb.freebsd.org/changeset/base/299435

Log:
  MFV r299434: 6841 Undirty freed spill blocks
  
  Reviewed by: Brian Behlendorf <behlendo...@llnl.gov>
  Reviewed by: Dan McDonald <dan...@omniti.com>
  Reviewed by: Matthew Ahrens <mahr...@delphix.com>
  Approved by: Robert Mustacchi <r...@joyent.com>
  Author: Tim Chase <t...@chase2k.com>
  
  openzfs/openzfs@445e67805dd2ca6c3a2363b2ec9e163c62370233

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
Directory Properties:
  head/sys/cddl/contrib/opensolaris/   (props changed)

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c  Wed May 11 
12:36:19 2016        (r299434)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c  Wed May 11 
12:38:07 2016        (r299435)
@@ -908,8 +908,10 @@ dbuf_free_range(dnode_t *dn, uint64_t st
        dmu_buf_impl_t *db, *db_next;
        uint64_t txg = tx->tx_txg;
        avl_index_t where;
+       boolean_t freespill =
+           (start_blkid == DMU_SPILL_BLKID || end_blkid == DMU_SPILL_BLKID);
 
-       if (end_blkid > dn->dn_maxblkid && (end_blkid != DMU_SPILL_BLKID))
+       if (end_blkid > dn->dn_maxblkid && !freespill)
                end_blkid = dn->dn_maxblkid;
        dprintf_dnode(dn, "start=%llu end=%llu\n", start_blkid, end_blkid);
 
@@ -918,7 +920,7 @@ dbuf_free_range(dnode_t *dn, uint64_t st
        db_search.db_state = DB_SEARCH;
 
        mutex_enter(&dn->dn_dbufs_mtx);
-       if (start_blkid >= dn->dn_unlisted_l0_blkid) {
+       if (start_blkid >= dn->dn_unlisted_l0_blkid && !freespill) {
                /* There can't be any dbufs in this range; no need to search. */
 #ifdef DEBUG
                db = avl_find(&dn->dn_dbufs, &db_search, &where);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to