• Johannes Weiner's avatar
    mm: swapfile: fix SSD detection with swapfile on btrfs · b843786b
    Johannes Weiner authored
    We've been noticing a trend of significant lock contention in the swap
    subsystem as core counts have been increasing in our fleet.  It turns out
    that our swapfiles on btrfs on flash were in fact using the old swap code
    for rotational storage.
    
    This turns out to be a detection issue in the swapon sequence: btrfs sets
    si->bdev during swap activation, which currently happens *after* swapon's
    SSD detection and cluster setup.  Thus, none of the SSD optimizations and
    cluster lock splitting are enabled for btrfs swap.
    
    Rearrange the swapon sequence so that filesystem activation happens
    *before* determining swap behavior based on the backing device.
    
    Afterwards, the nonrotational drive is detected correctly:
    
    - Adding 2097148k swap on /mnt/swapfile.  Priority:-3 extents:1 across:2097148k
    + Adding 2097148k swap on /mnt/swapfile.  Priority:-3 extents:1 across:2097148k SS
    
    Link: https://lkml.kernel.org/r/20240822112707.351844-1-hannes@cmpxchg.orgSigned-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    b843786b
swapfile.c 101 KB