• David Howells's avatar
    netfs: Prep to use folio->private for write grouping and streaming write · 9ebff83e
    David Howells authored
    Prepare to use folio->private to hold information write grouping and
    streaming write.  These are implemented in the same commit as they both
    make use of folio->private and will be both checked at the same time in
    several places.
    
    "Write grouping" involves ordering the writeback of groups of writes, such
    as is needed for ceph snaps.  A group is represented by a
    filesystem-supplied object which must contain a netfs_group struct.  This
    contains just a refcount and a pointer to a destructor.
    
    "Streaming write" is the storage of data in folios that are marked dirty,
    but not uptodate, to avoid unnecessary reads of data.  This is represented
    by a netfs_folio struct.  This contains the offset and length of the
    modified region plus the otherwise displaced write grouping pointer.
    
    The way folio->private is multiplexed is:
    
     (1) If private is NULL then neither is in operation on a dirty folio.
    
     (2) If private is set, with bit 0 clear, then this points to a group.
    
     (3) If private is set, with bit 0 set, then this points to a netfs_folio
         struct (with bit 0 AND'ed out).
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    cc: linux-cachefs@redhat.com
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-mm@kvack.org
    9ebff83e
internal.h 11 KB