tools headers UAPI: Sync openat2.h with the kernel sources
[linux-2.6-microblaze.git] / fs / buffer.c
index 32647d2..0cb7ffd 100644 (file)
@@ -847,7 +847,8 @@ struct buffer_head *alloc_page_buffers(struct page *page, unsigned long size,
        if (retry)
                gfp |= __GFP_NOFAIL;
 
-       memcg = get_mem_cgroup_from_page(page);
+       /* The page lock pins the memcg */
+       memcg = page_memcg(page);
        old_memcg = set_active_memcg(memcg);
 
        head = NULL;
@@ -868,7 +869,6 @@ struct buffer_head *alloc_page_buffers(struct page *page, unsigned long size,
        }
 out:
        set_active_memcg(old_memcg);
-       mem_cgroup_put(memcg);
        return head;
 /*
  * In case anything failed, we just free everything we got.
@@ -2083,7 +2083,8 @@ static int __block_commit_write(struct inode *inode, struct page *page,
                        set_buffer_uptodate(bh);
                        mark_buffer_dirty(bh);
                }
-               clear_buffer_new(bh);
+               if (buffer_new(bh))
+                       clear_buffer_new(bh);
 
                block_start = block_end;
                bh = bh->b_this_page;