Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 9a31c1c7754dd25ef583d54398d4947b > files > 38

kernel-xen-2.6.30.2-5mdv2009.0.src.rpm

From: ccoffing@novell.com
Subject: Expose min/max limits of domain ballooning
Patch-mainline: obsolete
References: 152667, 184727

jb: Also added this to the sysfs representation.

--- head-2009-06-23.orig/drivers/xen/balloon/balloon.c	2009-06-26 14:21:22.000000000 +0200
+++ head-2009-06-23/drivers/xen/balloon/balloon.c	2009-06-26 14:48:15.000000000 +0200
@@ -209,7 +209,7 @@ static unsigned long current_target(void
 	return target;
 }
 
-static unsigned long minimum_target(void)
+unsigned long balloon_minimum_target(void)
 {
 #ifndef CONFIG_XEN
 #define max_pfn num_physpages
@@ -431,7 +431,7 @@ static void balloon_process(struct work_
 void balloon_set_new_target(unsigned long target)
 {
 	/* No need for lock. Not read-modify-write updates. */
-	bs.target_pages = max(target, minimum_target());
+	bs.target_pages = max(target, balloon_minimum_target());
 	schedule_work(&balloon_worker);
 }
 
@@ -506,10 +506,13 @@ static int balloon_read(char *page, char
 		page,
 		"Current allocation: %8lu kB\n"
 		"Requested target:   %8lu kB\n"
+		"Minimum target:     %8lu kB\n"
+		"Maximum target:     %8lu kB\n"
 		"Low-mem balloon:    %8lu kB\n"
 		"High-mem balloon:   %8lu kB\n"
 		"Driver pages:       %8lu kB\n",
 		PAGES2KB(bs.current_pages), PAGES2KB(bs.target_pages), 
+		PAGES2KB(balloon_minimum_target()), PAGES2KB(num_physpages),
 		PAGES2KB(bs.balloon_low), PAGES2KB(bs.balloon_high),
 		PAGES2KB(bs.driver_pages));
 
--- head-2009-06-23.orig/drivers/xen/balloon/common.h	2009-06-26 14:41:32.000000000 +0200
+++ head-2009-06-23/drivers/xen/balloon/common.h	2009-06-09 15:48:02.000000000 +0200
@@ -45,6 +45,7 @@ struct balloon_stats {
 	unsigned long balloon_high;
 };
 
+extern unsigned long num_physpages;
 extern struct balloon_stats balloon_stats;
 #define bs balloon_stats
 
@@ -52,5 +53,6 @@ int balloon_sysfs_init(void);
 void balloon_sysfs_exit(void);
 
 void balloon_set_new_target(unsigned long target);
+unsigned long balloon_minimum_target(void);
 
 #endif /* __XEN_BALLOON_COMMON_H__ */
--- head-2009-06-23.orig/drivers/xen/balloon/sysfs.c	2009-06-23 13:39:33.000000000 +0200
+++ head-2009-06-23/drivers/xen/balloon/sysfs.c	2009-06-09 15:48:02.000000000 +0200
@@ -53,6 +53,8 @@
 	static SYSDEV_ATTR(name, S_IRUGO, show_##name, NULL)
 
 BALLOON_SHOW(current_kb, "%lu\n", PAGES2KB(bs.current_pages));
+BALLOON_SHOW(min_kb, "%lu\n", PAGES2KB(balloon_minimum_target()));
+BALLOON_SHOW(max_kb, "%lu\n", PAGES2KB(num_physpages));
 BALLOON_SHOW(low_kb, "%lu\n", PAGES2KB(bs.balloon_low));
 BALLOON_SHOW(high_kb, "%lu\n", PAGES2KB(bs.balloon_high));
 BALLOON_SHOW(driver_kb, "%lu\n", PAGES2KB(bs.driver_pages));
@@ -123,6 +125,8 @@ static struct sysdev_attribute *balloon_
 
 static struct attribute *balloon_info_attrs[] = {
 	&attr_current_kb.attr,
+	&attr_min_kb.attr,
+	&attr_max_kb.attr,
 	&attr_low_kb.attr,
 	&attr_high_kb.attr,
 	&attr_driver_kb.attr,