memcg: switch lruvec stats to rstat
[linux-2.6-microblaze.git] / mm / compaction.c
index 3a509fb..621508e 100644 (file)
@@ -1297,8 +1297,7 @@ move_freelist_head(struct list_head *freelist, struct page *freepage)
 
        if (!list_is_last(freelist, &freepage->lru)) {
                list_cut_before(&sublist, freelist, &freepage->lru);
-               if (!list_empty(&sublist))
-                       list_splice_tail(&sublist, freelist);
+               list_splice_tail(&sublist, freelist);
        }
 }
 
@@ -1315,8 +1314,7 @@ move_freelist_tail(struct list_head *freelist, struct page *freepage)
 
        if (!list_is_first(freelist, &freepage->lru)) {
                list_cut_position(&sublist, freelist, &freepage->lru);
-               if (!list_empty(&sublist))
-                       list_splice_tail(&sublist, freelist);
+               list_splice_tail(&sublist, freelist);
        }
 }
 
@@ -1380,7 +1378,7 @@ static int next_search_order(struct compact_control *cc, int order)
 static unsigned long
 fast_isolate_freepages(struct compact_control *cc)
 {
-       unsigned int limit = min(1U, freelist_scan_limit(cc) >> 1);
+       unsigned int limit = max(1U, freelist_scan_limit(cc) >> 1);
        unsigned int nr_scanned = 0;
        unsigned long low_pfn, min_pfn, highest = 0;
        unsigned long nr_isolated = 0;
@@ -1492,11 +1490,11 @@ fast_isolate_freepages(struct compact_control *cc)
                spin_unlock_irqrestore(&cc->zone->lock, flags);
 
                /*
-                * Smaller scan on next order so the total scan ig related
+                * Smaller scan on next order so the total scan is related
                 * to freelist_scan_limit.
                 */
                if (order_scanned >= limit)
-                       limit = min(1U, limit >> 1);
+                       limit = max(1U, limit >> 1);
        }
 
        if (!page) {
@@ -2722,9 +2720,9 @@ int sysctl_compaction_handler(struct ctl_table *table, int write,
 }
 
 #if defined(CONFIG_SYSFS) && defined(CONFIG_NUMA)
-static ssize_t sysfs_compact_node(struct device *dev,
-                       struct device_attribute *attr,
-                       const char *buf, size_t count)
+static ssize_t compact_store(struct device *dev,
+                            struct device_attribute *attr,
+                            const char *buf, size_t count)
 {
        int nid = dev->id;
 
@@ -2737,7 +2735,7 @@ static ssize_t sysfs_compact_node(struct device *dev,
 
        return count;
 }
-static DEVICE_ATTR(compact, 0200, NULL, sysfs_compact_node);
+static DEVICE_ATTR_WO(compact);
 
 int compaction_register_node(struct node *node)
 {