Lines Matching defs:ps

385 	paging_segment_t	ps;
391 ps = paging_segments[i];
392 if (ps == PAGING_SEGMENT_NULL)
400 pages_total += ps->ps_pgnum;
401 pages_free += ps->ps_clcount << ps->ps_clshift;
404 i, ps->ps_pgnum, ps->ps_clcount << ps->ps_clshift));
646 paging_segment_t ps;
672 ps = paging_segments[i];
673 if (ps != PAGING_SEGMENT_NULL && ps->ps_bs == bs) {
674 PS_LOCK(ps);
675 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
676 PS_UNLOCK(ps);
699 paging_segment_t ps)
779 vs, ps, upl);
843 paging_segment_t ps;
855 ps = paging_segments[i];
856 if (ps != PAGING_SEGMENT_NULL &&
857 ps->ps_bs == bs &&
858 ! IS_PS_GOING_AWAY(ps)) {
859 PS_LOCK(ps);
861 if( IS_PS_GOING_AWAY(ps) || !IS_PS_OK_TO_USE(ps)) {
868 PS_UNLOCK(ps);
873 ps->ps_state &= ~PS_CAN_USE;
874 ps->ps_state |= PS_GOING_AWAY;
875 PS_UNLOCK(ps);
877 * The "ps" segment is "off-line" now,
881 + ps->ps_pgcount)) {
891 dp_pages_free -= ps->ps_pgcount;
892 interim_pages_removed += ps->ps_pgcount;
894 error = ps_delete(ps);
912 ps = paging_segments[i];
913 if (ps != PAGING_SEGMENT_NULL &&
914 ps->ps_bs == bs &&
915 IS_PS_GOING_AWAY(ps)) {
916 PS_LOCK(ps);
918 if( !IS_PS_GOING_AWAY(ps)) {
919 PS_UNLOCK(ps);
923 if( ps->ps_special_clusters) {
924 dp_pages_free += ps->ps_special_clusters << ps->ps_clshift;
925 ps->ps_pgcount += ps->ps_special_clusters << ps->ps_clshift;
926 ps->ps_clcount += ps->ps_special_clusters;
927 if ( ps_select_array[ps->ps_bs->bs_priority] == BS_FULLPRI) {
928 ps_select_array[ps->ps_bs->bs_priority] = 0;
930 ps->ps_special_clusters = 0;
933 ps->ps_state &= ~PS_GOING_AWAY;
934 ps->ps_state |= PS_CAN_USE;
935 PS_UNLOCK(ps);
945 ps = paging_segments[i];
946 if (ps != PAGING_SEGMENT_NULL &&
947 ps->ps_bs == bs) {
948 if(IS_PS_GOING_AWAY(ps)) {
949 if(IS_PS_EMERGENCY_SEGMENT(ps)) {
950 PS_LOCK(ps);
951 ps->ps_state &= ~PS_GOING_AWAY;
952 ps->ps_special_clusters = 0;
953 ps->ps_pgcount = ps->ps_pgnum;
954 ps->ps_clcount = ps->ps_ncls = ps->ps_pgcount >> ps->ps_clshift;
955 dp_pages_reserve += ps->ps_pgcount;
956 PS_UNLOCK(ps);
960 PS_LOCK(ps);
961 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
962 kfree(ps, sizeof *ps);
968 /* Scan the entire ps array separately to make certain we find the */
1028 paging_segment_t ps)
1040 paging_segments[i] = ps;
1044 if ((ps_select_array[ps->ps_bs->bs_priority] == BS_NOPRI) ||
1045 (ps_select_array[ps->ps_bs->bs_priority] == BS_FULLPRI))
1046 ps_select_array[ps->ps_bs->bs_priority] = 0;
1067 paging_segment_t ps;
1077 ps = paging_segments[i];
1078 if (ps == PAGING_SEGMENT_NULL)
1084 if (!(ps->ps_device != device
1085 || offset >= ps->ps_offset + ps->ps_recnum
1086 || offset + count <= ps->ps_offset)) {
1097 ps = (paging_segment_t) kalloc(sizeof (struct paging_segment));
1098 if (ps == PAGING_SEGMENT_NULL) {
1103 ps->ps_segtype = PS_PARTITION;
1104 ps->ps_device = device;
1105 ps->ps_offset = offset;
1106 ps->ps_record_shift = local_log2(vm_page_size / record_size);
1107 ps->ps_recnum = count;
1108 ps->ps_pgnum = count >> ps->ps_record_shift;
1110 ps->ps_pgcount = ps->ps_pgnum;
1111 ps->ps_clshift = local_log2(bs->bs_clsize);
1112 ps->ps_clcount = ps->ps_ncls = ps->ps_pgcount >> ps->ps_clshift;
1113 ps->ps_hint = 0;
1115 PS_LOCK_INIT(ps);
1116 ps->ps_bmap = (unsigned char *) kalloc(RMAPSIZE(ps->ps_ncls));
1117 if (!ps->ps_bmap) {
1118 PS_LOCK_DESTROY(ps);
1119 kfree(ps, sizeof *ps);
1123 for (i = 0; i < ps->ps_ncls; i++) {
1124 clrbit(ps->ps_bmap, i);
1128 ps->ps_state = PS_EMERGENCY_SEGMENT;
1130 ps->ps_state |= PS_CAN_USE;
1133 ps->ps_state = PS_CAN_USE;
1136 ps->ps_bs = bs;
1138 if ((error = ps_enter(ps)) != 0) {
1139 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
1141 PS_LOCK_DESTROY(ps);
1142 kfree(ps, sizeof *ps);
1147 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
1148 bs->bs_pages_total += ps->ps_clcount << ps->ps_clshift;
1152 if(IS_PS_OK_TO_USE(ps)) {
1153 dp_pages_free += ps->ps_pgcount;
1155 dp_pages_reserve += ps->ps_pgcount;
1159 bs_more_space(ps->ps_clcount);
1164 ps->ps_record_shift, ps->ps_pgnum));
1414 paging_segment_t ps;
1428 ps = paging_segments[paging_segment_max];
1430 PS_LOCK(ps);
1431 if( !IS_PS_EMERGENCY_SEGMENT(ps) ) {
1434 ASSERT(ps->ps_clshift >= shift);
1435 if(IS_PS_OK_TO_USE(ps)) {
1436 if (ps->ps_clcount) {
1437 ps->ps_clcount--;
1438 dp_pages_free -= 1 << ps->ps_clshift;
1439 ps->ps_pgcount -= 1 << ps->ps_clshift;
1447 lps = ps;
1450 PS_UNLOCK(ps);
1517 if ((ps = paging_segments[j]) &&
1518 (ps->ps_bs->bs_priority == i)) {
1520 * Force the ps cluster size to be
1523 PS_LOCK(ps);
1524 if (IS_PS_OK_TO_USE(ps)) {
1525 if ((ps->ps_clcount) &&
1526 (ps->ps_clshift >= shift)) {
1529 ps->ps_clcount--;
1530 dp_pages_free -= 1 << ps->ps_clshift;
1531 ps->ps_pgcount -= 1 << ps->ps_clshift;
1540 PS_UNLOCK(ps);
1556 return ps;
1559 PS_UNLOCK(ps);
1594 paging_segment_t ps;
1600 * ps_select_segment will decrement cluster count on ps.
1623 ps = use_ps;
1625 PS_LOCK(ps);
1627 ASSERT(ps->ps_clcount != 0);
1629 ps->ps_clcount--;
1630 dp_pages_free -= 1 << ps->ps_clshift;
1631 ps->ps_pgcount -= 1 << ps->ps_clshift;
1640 PS_UNLOCK(ps);
1648 } else if ((ps = ps_select_segment(vs->vs_clshift, psindex)) ==
1664 ps = paging_segments[EMERGENCY_PSEG_INDEX];
1665 if(IS_PS_EMERGENCY_SEGMENT(ps) && !IS_PS_GOING_AWAY(ps)) {
1667 PS_LOCK(ps);
1669 if(IS_PS_GOING_AWAY(ps)) {
1671 PS_UNLOCK(ps);
1684 PS_UNLOCK(ps);
1688 } else if(!IS_PS_OK_TO_USE(ps) && ps->ps_clcount) {
1695 backing_store_t bs = ps->ps_bs;
1696 ps->ps_state |= PS_CAN_USE;
1701 dp_pages_free += ps->ps_pgcount;
1702 dp_pages_reserve -= ps->ps_pgcount;
1703 PS_UNLOCK(ps);
1709 PS_UNLOCK(ps);
1753 PS_LOCK(ps);
1754 byte_num = ps->ps_hint;
1755 for (; byte_num < howmany(ps->ps_ncls, NBBY); byte_num++) {
1756 if (*(ps->ps_bmap + byte_num) != BYTEMASK) {
1758 if (isclr((ps->ps_bmap + byte_num), bit_num))
1765 ps->ps_hint = byte_num;
1769 ASSERT(cluster < ps->ps_ncls);
1771 setbit(ps->ps_bmap, cluster);
1772 PS_UNLOCK(ps);
1781 paging_segment_t ps,
1785 if (cluster >= ps->ps_ncls)
1793 PS_LOCK(ps);
1794 clrbit(ps->ps_bmap, cluster);
1795 if( IS_PS_OK_TO_USE(ps)) {
1796 ++ps->ps_clcount;
1797 ps->ps_pgcount += 1 << ps->ps_clshift;
1798 dp_pages_free += 1 << ps->ps_clshift;
1800 ps->ps_special_clusters += 1;
1807 if ((cluster/NBBY) < ps->ps_hint) {
1808 ps->ps_hint = (cluster/NBBY);
1815 if ( IS_PS_OK_TO_USE(ps) && ps_select_array[ps->ps_bs->bs_priority] == BS_FULLPRI)
1816 ps_select_array[ps->ps_bs->bs_priority] = 0;
1817 PS_UNLOCK(ps);
2441 __unused paging_segment_t ps,
2585 paging_segment_t ps,
2606 device = dev_port_lookup(ps->ps_device);
2609 dev_offset = (ps->ps_offset +
2610 (offset >> (vm_page_shift - ps->ps_record_shift)));
2677 (vm_page_shift - ps->ps_record_shift));
2722 paging_segment_t ps,
2738 dev_offset = (ps->ps_offset +
2739 (offset >> (vm_page_shift - ps->ps_record_shift)));
2753 device = dev_port_lookup(ps->ps_device);
2772 BS_STAT(ps->ps_bs,
2773 ps->ps_bs->bs_pages_out_fail += atop_32(size));
2784 device = dev_port_lookup(ps->ps_device);
2798 BS_STAT(ps->ps_bs,
2799 ps->ps_bs->bs_pages_out_fail += atop_32(size));
2802 if (bytes_written & ((vm_page_size >> ps->ps_record_shift) - 1))
2805 (vm_page_shift - ps->ps_record_shift));
2825 __unused paging_segment_t ps,
2838 __unused paging_segment_t ps,
3341 paging_segment_t ps;
3655 ps = CLMAP_PS(clmap);
3661 error = ps_write_file(ps, internal_upl,
3967 paging_segment_t ps;
4043 ps = CLMAP_PS(clmap);
4044 ASSERT(ps);
4054 BS_STAT(ps->ps_bs,
4055 ps->ps_bs->bs_pages_in++);
4083 if(ps->ps_segtype == PS_PARTITION) {
4090 error = ps_read_device(ps, actual_offset, &buffer,
4095 error = ps_read_file(ps, upl, (upl_offset_t) 0, actual_offset,
4213 paging_segment_t ps;
4224 ps = paging_segments[i];
4225 if (ps == PAGING_SEGMENT_NULL)
4227 if (ps->ps_segtype != PS_FILE)
4233 if (ps->ps_vnode == (struct vnode *)vp) {
4244 ps = (paging_segment_t) kalloc(sizeof (struct paging_segment));
4245 if (ps == PAGING_SEGMENT_NULL) {
4250 ps->ps_segtype = PS_FILE;
4251 ps->ps_vnode = (struct vnode *)vp;
4252 ps->ps_offset = 0;
4253 ps->ps_record_shift = local_log2(vm_page_size / record_size);
4255 ps->ps_recnum = (dp_size_t) size;
4256 ps->ps_pgnum = ((dp_size_t) size) >> ps->ps_record_shift;
4258 ps->ps_pgcount = ps->ps_pgnum;
4259 ps->ps_clshift = local_log2(bs->bs_clsize);
4260 ps->ps_clcount = ps->ps_ncls = ps->ps_pgcount >> ps->ps_clshift;
4261 ps->ps_special_clusters = 0;
4262 ps->ps_hint = 0;
4264 PS_LOCK_INIT(ps);
4265 ps->ps_bmap = (unsigned char *) kalloc(RMAPSIZE(ps->ps_ncls));
4266 if (!ps->ps_bmap) {
4267 PS_LOCK_DESTROY(ps);
4268 kfree(ps, sizeof *ps);
4272 for (j = 0; j < ps->ps_ncls; j++) {
4273 clrbit(ps->ps_bmap, j);
4277 ps->ps_state = PS_EMERGENCY_SEGMENT;
4279 ps->ps_state |= PS_CAN_USE;
4283 ps->ps_state = PS_CAN_USE;
4286 ps->ps_bs = bs;
4288 if ((error = ps_enter(ps)) != 0) {
4289 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
4290 PS_LOCK_DESTROY(ps);
4291 kfree(ps, sizeof *ps);
4296 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
4297 bs->bs_pages_total += ps->ps_clcount << ps->ps_clshift;
4299 if(IS_PS_OK_TO_USE(ps)) {
4300 dp_pages_free += ps->ps_pgcount;
4302 dp_pages_reserve += ps->ps_pgcount;
4308 bs_more_space(ps->ps_clcount);
4321 ps = paging_segments[EMERGENCY_PSEG_INDEX];
4322 if(IS_PS_EMERGENCY_SEGMENT(ps) && IS_PS_OK_TO_USE(ps)) {
4334 ps->ps_record_shift, ps->ps_pgnum));
4343 paging_segment_t ps,
4359 f_offset = (vm_object_offset_t)(ps->ps_offset + offset);
4365 error = vnode_pagein(ps->ps_vnode, upl, upl_offset, f_offset, (upl_size_t)size, flags, NULL);
4385 paging_segment_t ps,
4398 f_offset = (vm_object_offset_t)(ps->ps_offset + offset);
4409 if (vnode_pageout(ps->ps_vnode, upl, upl_offset, f_offset, (upl_size_t)size, flags, NULL))