summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/vm/vm_usage.c
diff options
context:
space:
mode:
authoraguzovsk <none@none>2007-06-08 18:58:50 -0700
committeraguzovsk <none@none>2007-06-08 18:58:50 -0700
commit2cb27123907a098a777e39eebc349d73e99a518f (patch)
treec95bccd47a25fb4e5c193a71cfa32f4747f03032 /usr/src/uts/common/vm/vm_usage.c
parent01e689ccb14727455003b77ee332005223497875 (diff)
downloadillumos-joyent-2cb27123907a098a777e39eebc349d73e99a518f.tar.gz
6544121 Implement text replication
Diffstat (limited to 'usr/src/uts/common/vm/vm_usage.c')
-rw-r--r--usr/src/uts/common/vm/vm_usage.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/usr/src/uts/common/vm/vm_usage.c b/usr/src/uts/common/vm/vm_usage.c
index f25cf4c9ae..e10b0aede9 100644
--- a/usr/src/uts/common/vm/vm_usage.c
+++ b/usr/src/uts/common/vm/vm_usage.c
@@ -1110,11 +1110,20 @@ vmu_calculate_seg(vmu_entity_t *vmu_entities, struct seg *seg)
if (svd->amp->swresv == 0)
incore = B_TRUE;
}
- if (svd->amp != NULL && svd->type == MAP_PRIVATE) {
+ SEGVN_LOCK_ENTER(seg->s_as, &svd->lock, RW_READER);
+ /*
+ * Text replication anon maps can be shared across all zones.
+ * Space used for text replication is typically capped as
+ * small % of memory. To keep it simple for now we don't
+ * account for swap and memory space used for text replication.
+ */
+ if (svd->tr_state == SEGVN_TR_OFF && svd->amp != NULL &&
+ svd->type == MAP_PRIVATE) {
private_amp = svd->amp;
p_start = svd->anon_index;
p_end = svd->anon_index + btop(seg->s_size) - 1;
}
+ SEGVN_LOCK_EXIT(seg->s_as, &svd->lock);
} else if (seg->s_ops == &segspt_shmops) {
shared = B_TRUE;
shmd = (struct shm_data *)seg->s_data;