• Luis Chamberlain's avatar
    shmem: remove check for folio lock on writepage() · 1f514bee
    Luis Chamberlain authored
    Patch series "tmpfs: add the option to disable swap", v2.
    
    I'm doing this work as part of future experimentation with tmpfs and the
    page cache, but given a common complaint found about tmpfs is the
    innability to work without the page cache I figured this might be useful
    to others.  It turns out it is -- at least Christian Brauner indicates
    systemd uses ramfs for a few use-cases because they don't want to use swap
    and so having this option would let them move over to using tmpfs for
    those small use cases, see systemd-creds(1).
    
    To see if you hit swap:
    
    mkswap /dev/nvme2n1
    swapon /dev/nvme2n1
    free -h
    
    With swap - what we see today
    =============================
    mount -t tmpfs            -o size=5G           tmpfs /data-tmpfs/
    dd if=/dev/urandom of=/data-tmpfs/5g-rand2 bs=1G count=5
    free -h
                   total        used        free      shared  buff/cache   available
    Mem:           3.7Gi       2.6Gi       1.2Gi       2.2Gi       2.2Gi       1.2Gi
    Swap:           99Gi       2.8Gi        97Gi
    
    
    Without swap
    =============
    
    free -h
                   total        used        free      shared  buff/cache   available
    Mem:           3.7Gi       387Mi       3.4Gi       2.1Mi        57Mi       3.3Gi
    Swap:           99Gi          0B        99Gi
    mount -t tmpfs            -o size=5G -o noswap tmpfs /data-tmpfs/
    dd if=/dev/urandom of=/data-tmpfs/5g-rand2 bs=1G count=5
    free -h
                   total        used        free      shared  buff/cache   available
    Mem:           3.7Gi       2.6Gi       1.2Gi       2.3Gi       2.3Gi       1.1Gi
    Swap:           99Gi        21Mi        99Gi
    
    The mix and match remount testing
    =================================
    
    # Cannot disable swap after it was first enabled:
    mount -t tmpfs            -o size=5G           tmpfs /data-tmpfs/
    mount -t tmpfs -o remount -o size=5G -o noswap tmpfs /data-tmpfs/
    mount: /data-tmpfs: mount point not mounted or bad option.
           dmesg(1) may have more information after failed mount system call.
    dmesg -c
    tmpfs: Cannot disable swap on remount
    
    # Remount with the same noswap option is OK:
    mount -t tmpfs            -o size=5G -o noswap tmpfs /data-tmpfs/
    mount -t tmpfs -o remount -o size=5G -o noswap tmpfs /data-tmpfs/
    dmesg -c
    
    # Trying to enable swap with a remount after it first disabled:
    mount -t tmpfs            -o size=5G -o noswap tmpfs /data-tmpfs/
    mount -t tmpfs -o remount -o size=5G           tmpfs /data-tmpfs/
    mount: /data-tmpfs: mount point not mounted or bad option.
           dmesg(1) may have more information after failed mount system call.
    dmesg -c
    tmpfs: Cannot enable swap on remount if it was disabled on first mount
    
    
    This patch (of 6):
    
    Matthew notes we should not need to check the folio lock on the
    writepage() callback so remove it.  This sanity check has been lingering
    since linux-history days.  We remove this as we tidy up the writepage()
    callback to make things a bit clearer.
    
    Link: https://lkml.kernel.org/r/20230309230545.2930737-1-mcgrof@kernel.org
    Link: https://lkml.kernel.org/r/20230309230545.2930737-2-mcgrof@kernel.orgSigned-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Suggested-by: default avatarMatthew Wilcox <willy@infradead.org>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
    Tested-by: default avatarXin Hao <xhao@linux.alibaba.com>
    Reviewed-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
    Cc: Adam Manzanares <a.manzanares@samsung.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Pankaj Raghav <p.raghav@samsung.com>
    Cc: Yosry Ahmed <yosryahmed@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    1f514bee
shmem.c 113 KB