unsigned long           nrexceptional;
        pgoff_t                 writeback_index;/* writeback starts here */
        const struct address_space_operations *a_ops;   /* methods */
-       unsigned long           flags;          /* error bits/gfp mask */
+       unsigned long           flags;          /* error bits */
        spinlock_t              private_lock;   /* for use by the address_space */
+       gfp_t                   gfp_mask;       /* implicit gfp mask for allocations */
        struct list_head        private_list;   /* ditto */
        void                    *private_data;  /* ditto */
 } __attribute__((aligned(sizeof(long))));
 
 #include <linux/hugetlb_inline.h>
 
 /*
- * Bits in mapping->flags.  The lower __GFP_BITS_SHIFT bits are the page
- * allocation mode flags.
+ * Bits in mapping->flags.
  */
 enum mapping_flags {
-       AS_EIO          = __GFP_BITS_SHIFT + 0, /* IO error on async write */
-       AS_ENOSPC       = __GFP_BITS_SHIFT + 1, /* ENOSPC on async write */
-       AS_MM_ALL_LOCKS = __GFP_BITS_SHIFT + 2, /* under mm_take_all_locks() */
-       AS_UNEVICTABLE  = __GFP_BITS_SHIFT + 3, /* e.g., ramdisk, SHM_LOCK */
-       AS_EXITING      = __GFP_BITS_SHIFT + 4, /* final truncate in progress */
+       AS_EIO          = 0,    /* IO error on async write */
+       AS_ENOSPC       = 1,    /* ENOSPC on async write */
+       AS_MM_ALL_LOCKS = 2,    /* under mm_take_all_locks() */
+       AS_UNEVICTABLE  = 3,    /* e.g., ramdisk, SHM_LOCK */
+       AS_EXITING      = 4,    /* final truncate in progress */
        /* writeback related tags are not used */
-       AS_NO_WRITEBACK_TAGS = __GFP_BITS_SHIFT + 5,
+       AS_NO_WRITEBACK_TAGS = 5,
 };
 
 static inline void mapping_set_error(struct address_space *mapping, int error)
 
 static inline gfp_t mapping_gfp_mask(struct address_space * mapping)
 {
-       return (__force gfp_t)mapping->flags & __GFP_BITS_MASK;
+       return mapping->gfp_mask;
 }
 
 /* Restricts the given gfp_mask to what the mapping allows. */
  */
 static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask)
 {
-       m->flags = (m->flags & ~(__force unsigned long)__GFP_BITS_MASK) |
-                               (__force unsigned long)mask;
+       m->gfp_mask = mask;
 }
 
 void release_pages(struct page **pages, int nr, bool cold);