From: Pawel Jakub Dawidek Date: Tue, 30 Nov 2021 18:32:38 +0000 (-0800) Subject: Code cleanups X-Git-Tag: zfs-2.2.0~1621 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=547df816418f67ddef958bc0f44ae956e45014f1;p=mirror_zfs.git Code cleanups - Allocate ve_search on the stack, so we avoid allocating memory for every I/O even if the VDEV cache is disabled. - Reduce lock scope. - Avoid locking in vdev_cache_read() when the VDEV cache is disabled. - Sort file names properly. - Correct comment. Reviewed-by: Allan Jude Reviewed-by: Ryan Moeller Reviewed-by: Matthew Ahrens Reviewed-by: Brian Behlendorf Signed-off-by: Pawel Jakub Dawidek Closes #12749 --- diff --git a/lib/libzpool/Makefile.am b/lib/libzpool/Makefile.am index 3cc0c2f2e..dce3f81b8 100644 --- a/lib/libzpool/Makefile.am +++ b/lib/libzpool/Makefile.am @@ -58,8 +58,8 @@ KERNEL_C = \ bplist.c \ bpobj.c \ bptree.c \ - btree.c \ bqueue.c \ + btree.c \ cityhash.c \ dbuf.c \ dbuf_stats.c \ @@ -78,23 +78,23 @@ KERNEL_C = \ dnode.c \ dnode_sync.c \ dsl_bookmark.c \ + dsl_crypt.c \ dsl_dataset.c \ dsl_deadlist.c \ dsl_deleg.c \ + dsl_destroy.c \ dsl_dir.c \ - dsl_crypt.c \ dsl_pool.c \ dsl_prop.c \ dsl_scan.c \ dsl_synctask.c \ - dsl_destroy.c \ dsl_userhold.c \ edonr_zfs.c \ - hkdf.c \ fm.c \ gzip.c \ - lzjb.c \ + hkdf.c \ lz4.c \ + lzjb.c \ metaslab.c \ mmp.c \ multilist.c \ @@ -117,8 +117,8 @@ KERNEL_C = \ spa_stats.c \ space_map.c \ space_reftree.c \ - txg.c \ trace.c \ + txg.c \ uberblock.c \ unique.c \ vdev.c \ @@ -126,8 +126,8 @@ KERNEL_C = \ vdev_draid.c \ vdev_draid_rand.c \ vdev_file.c \ - vdev_indirect_births.c \ vdev_indirect.c \ + vdev_indirect_births.c \ vdev_indirect_mapping.c \ vdev_initialize.c \ vdev_label.c \ @@ -135,16 +135,16 @@ KERNEL_C = \ vdev_missing.c \ vdev_queue.c \ vdev_raidz.c \ + vdev_raidz_math.c \ vdev_raidz_math_aarch64_neon.c \ vdev_raidz_math_aarch64_neonx2.c \ vdev_raidz_math_avx2.c \ vdev_raidz_math_avx512bw.c \ vdev_raidz_math_avx512f.c \ - vdev_raidz_math.c \ + vdev_raidz_math_powerpc_altivec.c \ vdev_raidz_math_scalar.c \ vdev_raidz_math_sse2.c \ vdev_raidz_math_ssse3.c \ - vdev_raidz_math_powerpc_altivec.c \ vdev_rebuild.c \ vdev_removal.c \ vdev_root.c \ @@ -165,9 +165,9 @@ KERNEL_C = \ zfs_fuid.c \ zfs_racct.c \ zfs_sa.c \ - zfs_znode.c \ zfs_ratelimit.c \ zfs_rlock.c \ + zfs_znode.c \ zil.c \ zio.c \ zio_checksum.c \ diff --git a/module/Makefile.bsd b/module/Makefile.bsd index 63aacb04b..315be2808 100644 --- a/module/Makefile.bsd +++ b/module/Makefile.bsd @@ -268,12 +268,12 @@ SRCS+= abd.c \ vdev_raidz.c \ vdev_raidz_math.c \ vdev_raidz_math_scalar.c \ - vdev_rebuild.c \ vdev_raidz_math_avx2.c \ vdev_raidz_math_avx512bw.c \ vdev_raidz_math_avx512f.c \ vdev_raidz_math_sse2.c \ vdev_raidz_math_ssse3.c \ + vdev_rebuild.c \ vdev_removal.c \ vdev_root.c \ vdev_trim.c \ diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c index fe54da425..1a298deb1 100644 --- a/module/zfs/dbuf.c +++ b/module/zfs/dbuf.c @@ -1997,8 +1997,8 @@ dbuf_free_range(dnode_t *dn, uint64_t start_blkid, uint64_t end_blkid, mutex_exit(&db->db_mtx); } - kmem_free(db_search, sizeof (dmu_buf_impl_t)); mutex_exit(&dn->dn_dbufs_mtx); + kmem_free(db_search, sizeof (dmu_buf_impl_t)); } void diff --git a/module/zfs/vdev_cache.c b/module/zfs/vdev_cache.c index 6e82184b8..35ed1a335 100644 --- a/module/zfs/vdev_cache.c +++ b/module/zfs/vdev_cache.c @@ -251,13 +251,16 @@ boolean_t vdev_cache_read(zio_t *zio) { vdev_cache_t *vc = &zio->io_vd->vdev_cache; - vdev_cache_entry_t *ve, *ve_search; + vdev_cache_entry_t *ve, ve_search; uint64_t cache_offset = P2ALIGN(zio->io_offset, VCBS); zio_t *fio; uint64_t cache_phase __maybe_unused = P2PHASE(zio->io_offset, VCBS); ASSERT3U(zio->io_type, ==, ZIO_TYPE_READ); + if (zfs_vdev_cache_size == 0) + return (B_FALSE); + if (zio->io_flags & ZIO_FLAG_DONT_CACHE) return (B_FALSE); @@ -274,10 +277,8 @@ vdev_cache_read(zio_t *zio) mutex_enter(&vc->vc_lock); - ve_search = kmem_alloc(sizeof (vdev_cache_entry_t), KM_SLEEP); - ve_search->ve_offset = cache_offset; - ve = avl_find(&vc->vc_offset_tree, ve_search, NULL); - kmem_free(ve_search, sizeof (vdev_cache_entry_t)); + ve_search.ve_offset = cache_offset; + ve = avl_find(&vc->vc_offset_tree, &ve_search, NULL); if (ve != NULL) { if (ve->ve_missed_update) { diff --git a/module/zfs/vdev_queue.c b/module/zfs/vdev_queue.c index cc5b15b8c..af612ba9c 100644 --- a/module/zfs/vdev_queue.c +++ b/module/zfs/vdev_queue.c @@ -408,7 +408,7 @@ vdev_queue_class_max_active(spa_t *spa, vdev_queue_t *vq, zio_priority_t p) } /* - * Return the i/o class to issue from, or ZIO_PRIORITY_MAX_QUEUEABLE if + * Return the i/o class to issue from, or ZIO_PRIORITY_NUM_QUEUEABLE if * there is no eligible class. */ static zio_priority_t