fsszone
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
zp = fsszone->fssz_zone;
fsszone->fssz_shares -=
fsszone->fssz_shares += kpj_shares;
if (fsszone->fssz_rshares != zone_ext_shares) {
if (fsszone->fssz_runnable != 0) {
fsszone->fssz_rshares;
fsszone->fssz_rshares = zone_ext_shares;
zone_int_shares = fsszone->fssz_shares;
fsszone_t *fsszone;
if ((fsszone = fss_find_fsszone(fsspset, zone)) == NULL) {
if ((fsszone = kmem_zalloc(sizeof (fsszone_t), KM_NOSLEEP))
fss_insert_fsszone(fsspset, zone, fsszone);
fss_remove_fsszone(fsspset, fsszone);
kmem_free(fsszone, sizeof (fsszone_t));
fss_insert_fssproj(fsspset, kpj, fsszone, fssproj);
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
fsszone->fssz_shares -= fssproj->fssp_shares;
if (--fsszone->fssz_runnable == 0)
fsszone->fssz_rshares;
if (fsszone->fssz_nproj == 0)
kmem_free(fsszone, sizeof (fsszone_t));
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
fsszone->fssz_shares -= fssproj->fssp_shares;
if (--fsszone->fssz_runnable == 0)
fsspset->fssps_shares -= fsszone->fssz_rshares;
if (fsszone->fssz_nproj == 0)
kmem_free(fsszone, sizeof (fsszone_t));
fsszone_t *fsszone;
fsszone = fsspset->fssps_zones;
if (fsszone->fssz_zone == zone) {
return (fsszone);
fsszone = fsszone->fssz_next;
} while (fsszone != fsspset->fssps_zones);
fss_insert_fsszone(fsspset_t *fsspset, zone_t *zone, fsszone_t *fsszone)
fsszone->fssz_zone = zone;
fsszone->fssz_rshares = zone->zone_shares;
fsszone->fssz_next = fsszone->fssz_prev = fsszone;
fsspset->fssps_zones = fsszone;
fsszone->fssz_next = fssz_head;
fsszone->fssz_prev = fssz_head->fssz_prev;
fssz_head->fssz_prev->fssz_next = fsszone;
fssz_head->fssz_prev = fsszone;
fsspset->fssps_zones = fsszone;
fss_remove_fsszone(fsspset_t *fsspset, fsszone_t *fsszone)
ASSERT(fsszone->fssz_nproj == 0);
ASSERT(fsszone->fssz_shares == 0);
ASSERT(fsszone->fssz_runnable == 0);
if (fsszone->fssz_next != fsszone) {
fsszone->fssz_prev->fssz_next = fsszone->fssz_next;
fsszone->fssz_next->fssz_prev = fsszone->fssz_prev;
if (fsspset->fssps_zones == fsszone)
fsspset->fssps_zones = fsszone->fssz_next;
fss_insert_fssproj(fsspset_t *fsspset, kproject_t *kpj, fsszone_t *fsszone,
fssproj->fssp_fsszone = fsszone;
fsszone->fssz_nproj++;
ASSERT(fsszone->fssz_nproj != 0);
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
fsszone->fssz_nproj--;
if (fsszone->fssz_nproj == 0)
fss_remove_fsszone(fsspset, fsszone);
ASSERT(fsszone->fssz_nproj == 0);
fss_remove_fsszone(fsspset, fsszone);
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
fsszone->fssz_shares -= fssproj->fssp_shares;
if (--fsszone->fssz_runnable == 0)
fsspset->fssps_shares -= fsszone->fssz_rshares;
fsszone_t *fsszone;
fsszone = fssproj->fssp_fsszone;
fsszone->fssz_shares += fssproj->fssp_shares;
if (++fsszone->fssz_runnable == 1)
fsspset->fssps_shares += fsszone->fssz_rshares;
fsszone_t *fsszone;
fsszone = FSSPROJ2FSSZONE(fssproj);
if (fssproj->fssp_shares == 0 || fsszone->fssz_rshares == 0) {
struct fsszone *fssp_fsszone; /* fsszone_t for this fssproj */
struct fsszone *fssz_next; /* next fsszone_t in fsspset_t */
struct fsszone *fssz_prev; /* prev fsszone_t in fsspset_t */
struct fsszone *fssps_zones; /* list of fsszone_t's in pset */