Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
Show First 20 Lines • Show All 2,339 Lines • ▼ Show 20 Lines | |||||
void | void | ||||
dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) | dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) | ||||
{ | { | ||||
dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; | dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; | ||||
boolean_t ismd = (level > 0 || DMU_OT_IS_METADATA(type) || | boolean_t ismd = (level > 0 || DMU_OT_IS_METADATA(type) || | ||||
(wp & WP_SPILL)); | (wp & WP_SPILL)); | ||||
enum zio_checksum checksum = os->os_checksum; | enum zio_checksum checksum = os->os_checksum; | ||||
enum zio_compress compress = os->os_compress; | enum zio_compress compress = os->os_compress; | ||||
enum zio_zstd_levels zstd_level = os->os_zstd_level; | |||||
enum zio_checksum dedup_checksum = os->os_dedup_checksum; | enum zio_checksum dedup_checksum = os->os_dedup_checksum; | ||||
boolean_t dedup = B_FALSE; | boolean_t dedup = B_FALSE; | ||||
boolean_t nopwrite = B_FALSE; | boolean_t nopwrite = B_FALSE; | ||||
boolean_t dedup_verify = os->os_dedup_verify; | boolean_t dedup_verify = os->os_dedup_verify; | ||||
int copies = os->os_copies; | int copies = os->os_copies; | ||||
/* | /* | ||||
* We maintain different write policies for each of the following | * We maintain different write policies for each of the following | ||||
▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | if (ismd) { | ||||
nopwrite = (!dedup && (zio_checksum_table[checksum].ci_flags & | nopwrite = (!dedup && (zio_checksum_table[checksum].ci_flags & | ||||
ZCHECKSUM_FLAG_NOPWRITE) && | ZCHECKSUM_FLAG_NOPWRITE) && | ||||
compress != ZIO_COMPRESS_OFF && zfs_nopwrite_enabled); | compress != ZIO_COMPRESS_OFF && zfs_nopwrite_enabled); | ||||
} | } | ||||
zp->zp_checksum = checksum; | zp->zp_checksum = checksum; | ||||
zp->zp_compress = compress; | zp->zp_compress = compress; | ||||
ASSERT3U(zp->zp_compress, !=, ZIO_COMPRESS_INHERIT); | ASSERT3U(zp->zp_compress, !=, ZIO_COMPRESS_INHERIT); | ||||
zp->zp_zstd_level = zstd_level; | |||||
ASSERT3U(zp->zp_zstd_level, !=, ZIO_ZSTDLVL_INHERIT); | |||||
zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; | zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; | ||||
zp->zp_level = level; | zp->zp_level = level; | ||||
zp->zp_copies = MIN(copies, spa_max_replication(os->os_spa)); | zp->zp_copies = MIN(copies, spa_max_replication(os->os_spa)); | ||||
zp->zp_dedup = dedup; | zp->zp_dedup = dedup; | ||||
zp->zp_dedup_verify = dedup && dedup_verify; | zp->zp_dedup_verify = dedup && dedup_verify; | ||||
zp->zp_nopwrite = nopwrite; | zp->zp_nopwrite = nopwrite; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 218 Lines • Show Last 20 Lines |