balloon_stats
struct balloon_stats balloon_stats;
EXPORT_SYMBOL_GPL(balloon_stats);
balloon_stats.balloon_high++;
balloon_stats.balloon_low++;
balloon_stats.balloon_high--;
balloon_stats.balloon_low--;
balloon_stats.schedule_delay = 1;
balloon_stats.retry_count = 1;
++balloon_stats.retry_count;
if (balloon_stats.max_retry_count != RETRY_UNLIMITED &&
balloon_stats.retry_count > balloon_stats.max_retry_count) {
balloon_stats.schedule_delay = 1;
balloon_stats.retry_count = 1;
balloon_stats.schedule_delay <<= 1;
if (balloon_stats.schedule_delay > balloon_stats.max_schedule_delay)
balloon_stats.schedule_delay = balloon_stats.max_schedule_delay;
credit = balloon_stats.target_pages + balloon_stats.target_unpopulated
- balloon_stats.total_pages;
balloon_stats.total_pages += balloon_hotplug;
balloon_stats.target_pages = balloon_stats.current_pages +
balloon_stats.target_unpopulated;
return balloon_stats.target_pages - balloon_stats.current_pages;
return balloon_stats.balloon_low || balloon_stats.balloon_high;
balloon_stats.current_pages += rc;
balloon_stats.current_pages -= nr_pages;
timeout = balloon_stats.schedule_delay * HZ;
balloon_stats.target_pages = target;
balloon_stats.target_unpopulated += nr_pages;
balloon_stats.target_unpopulated -= nr_pages - pgno;
balloon_stats.target_unpopulated -= nr_pages;
if (pages >= balloon_stats.current_pages ||
pages >= balloon_stats.target_pages) {
balloon_stats.current_pages -= pages;
balloon_stats.target_pages -= pages;
balloon_stats.current_pages = current_pages;
balloon_stats.target_pages = balloon_stats.current_pages;
balloon_stats.balloon_low = 0;
balloon_stats.balloon_high = 0;
balloon_stats.total_pages = balloon_stats.current_pages;
balloon_stats.schedule_delay = 1;
balloon_stats.max_schedule_delay = 32;
balloon_stats.retry_count = 1;
balloon_stats.max_retry_count = 4;
: static_max - balloon_stats.target_pages;
BALLOON_SHOW(current_kb, "%lu\n", PAGES2KB(balloon_stats.current_pages));
BALLOON_SHOW(low_kb, "%lu\n", PAGES2KB(balloon_stats.balloon_low));
BALLOON_SHOW(high_kb, "%lu\n", PAGES2KB(balloon_stats.balloon_high));
static DEVICE_ULONG_ATTR(schedule_delay, 0444, balloon_stats.schedule_delay);
static DEVICE_ULONG_ATTR(max_schedule_delay, 0644, balloon_stats.max_schedule_delay);
static DEVICE_ULONG_ATTR(retry_count, 0444, balloon_stats.retry_count);
static DEVICE_ULONG_ATTR(max_retry_count, 0644, balloon_stats.max_retry_count);
return sprintf(buf, "%lu\n", PAGES2KB(balloon_stats.target_pages));
(unsigned long long)balloon_stats.target_pages
static_max = balloon_stats.current_pages;
extern struct balloon_stats balloon_stats;