|
@@ -13,6 +13,7 @@
|
|
|
#include <linux/mm_inline.h>
|
|
|
#include <linux/backing-dev.h>
|
|
|
#include <linux/sysctl.h>
|
|
|
+#include <linux/sysfs.h>
|
|
|
#include "internal.h"
|
|
|
|
|
|
/*
|
|
@@ -453,3 +454,25 @@ int sysctl_compaction_handler(struct ctl_table *table, int write,
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+#if defined(CONFIG_SYSFS) && defined(CONFIG_NUMA)
|
|
|
+ssize_t sysfs_compact_node(struct sys_device *dev,
|
|
|
+ struct sysdev_attribute *attr,
|
|
|
+ const char *buf, size_t count)
|
|
|
+{
|
|
|
+ compact_node(dev->id);
|
|
|
+
|
|
|
+ return count;
|
|
|
+}
|
|
|
+static SYSDEV_ATTR(compact, S_IWUSR, NULL, sysfs_compact_node);
|
|
|
+
|
|
|
+int compaction_register_node(struct node *node)
|
|
|
+{
|
|
|
+ return sysdev_create_file(&node->sysdev, &attr_compact);
|
|
|
+}
|
|
|
+
|
|
|
+void compaction_unregister_node(struct node *node)
|
|
|
+{
|
|
|
+ return sysdev_remove_file(&node->sysdev, &attr_compact);
|
|
|
+}
|
|
|
+#endif /* CONFIG_SYSFS && CONFIG_NUMA */
|