zone = zonelist_zone(z))
 
 #define for_next_zone_zonelist_nodemask(zone, z, highidx, nodemask) \
-       for (zone = z->zone;    \
+       for (zone = zonelist_zone(z);   \
                zone;                                                   \
                z = next_zones_zonelist(++z, highidx, nodemask),        \
                        zone = zonelist_zone(z))
        nid = first_node(*nodes);
        zonelist = &NODE_DATA(nid)->node_zonelists[ZONELIST_FALLBACK];
        z = first_zones_zonelist(zonelist, ZONE_NORMAL, nodes);
-       return (!z->zone) ? true : false;
+       return (!zonelist_zone(z)) ? true : false;
 }
 
 
 
                }
 
                if (no_fallback && nr_online_nodes > 1 &&
-                   zone != ac->preferred_zoneref->zone) {
+                   zone != zonelist_zone(ac->preferred_zoneref)) {
                        int local_nid;
 
                        /*
                         * fragmenting fallbacks. Locality is more important
                         * than fragmentation avoidance.
                         */
-                       local_nid = zone_to_nid(ac->preferred_zoneref->zone);
+                       local_nid = zonelist_node_idx(ac->preferred_zoneref);
                        if (zone_to_nid(zone) != local_nid) {
                                alloc_flags &= ~ALLOC_NOFRAGMENT;
                                goto retry;
                                goto try_this_zone;
 
                        if (!node_reclaim_enabled() ||
-                           !zone_allows_reclaim(ac->preferred_zoneref->zone, zone))
+                           !zone_allows_reclaim(zonelist_zone(ac->preferred_zoneref), zone))
                                continue;
 
                        ret = node_reclaim(zone->zone_pgdat, gfp_mask, order);
                }
 
 try_this_zone:
-               page = rmqueue(ac->preferred_zoneref->zone, zone, order,
+               page = rmqueue(zonelist_zone(ac->preferred_zoneref), zone, order,
                                gfp_mask, alloc_flags, ac->migratetype);
                if (page) {
                        prep_new_page(page, order, gfp_mask, alloc_flags);
         */
        ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
                                        ac->highest_zoneidx, ac->nodemask);
-       if (!ac->preferred_zoneref->zone)
+       if (!zonelist_zone(ac->preferred_zoneref))
                goto nopage;
 
        /*
                struct zoneref *z = first_zones_zonelist(ac->zonelist,
                                        ac->highest_zoneidx,
                                        &cpuset_current_mems_allowed);
-               if (!z->zone)
+               if (!zonelist_zone(z))
                        goto nopage;
        }
 
                        continue;
                }
 
-               if (nr_online_nodes > 1 && zone != ac.preferred_zoneref->zone &&
-                   zone_to_nid(zone) != zone_to_nid(ac.preferred_zoneref->zone)) {
+               if (nr_online_nodes > 1 && zone != zonelist_zone(ac.preferred_zoneref) &&
+                   zone_to_nid(zone) != zonelist_node_idx(ac.preferred_zoneref)) {
                        goto failed;
                }
 
        pcp_trylock_finish(UP_flags);
 
        __count_zid_vm_events(PGALLOC, zone_idx(zone), nr_account);
-       zone_statistics(ac.preferred_zoneref->zone, zone, nr_account);
+       zone_statistics(zonelist_zone(ac.preferred_zoneref), zone, nr_account);
 
 out:
        return nr_populated;
         * Forbid the first pass from falling back to types that fragment
         * memory until all local zones are considered.
         */
-       alloc_flags |= alloc_flags_nofragment(ac.preferred_zoneref->zone, gfp);
+       alloc_flags |= alloc_flags_nofragment(zonelist_zone(ac.preferred_zoneref), gfp);
 
        /* First allocation attempt */
        page = get_page_from_freelist(alloc_gfp, order, alloc_flags, &ac);
        z = first_zones_zonelist(node_zonelist(node, GFP_KERNEL),
                                   gfp_zone(GFP_KERNEL),
                                   NULL);
-       return zone_to_nid(z->zone);
+       return zonelist_node_idx(z);
 }
 #endif