• David Sterba's avatar
    btrfs: drop from __GFP_HIGHMEM all allocations · b0ee5e1e
    David Sterba authored
    The highmem flag is used for allocating pages for compression and for
    raid56 pages. The high memory makes sense on 32bit systems but is not
    without problems. On 64bit system's it's just another layer of wrappers.
    
    The time the pages are allocated for compression or raid56 is relatively
    short (about a transaction commit), so the pages are not blocked
    indefinitely. As the number of pages depends on the amount of data being
    written/read, there's a theoretical problem. A fast device on a 32bit
    system could use most of the low memory pool, while with the highmem
    allocation that would not happen. This was possibly the original idea
    long time ago, but nowadays we optimize for 64bit systems.
    
    This patch removes all usage of the __GFP_HIGHMEM flag for page
    allocation, the kmap/kunmap are still in place and will be removed in
    followup patches. Remaining is masking out the bit in
    alloc_extent_state and __lookup_free_space_inode, that can safely stay.
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    b0ee5e1e
compression.c 44.6 KB