• Kent Overstreet's avatar
    bcachefs: Drop unneeded journal pin in bch2_btree_update_start() · b66fbf33
    Kent Overstreet authored
    When we do an interior btree update, we create new btree nodes and link
    them into the btree in memory, but they don't become reachable on disk
    until later, when btree_update_nodes_written_trans() runs.
    
    Updates to the new nodes can thus happen before they're reachable on
    disk, and if the updates to those new nodes are written before the nodes
    become reachable, we would then drop the journal pin for those updates
    before the btree has them.
    
    This is what the journal pin in bch2_btree_update_start() was protecting
    against. However, it's not actually needed because we don't allow
    subsequent append writes to btree nodes until the node is reachable on
    disk.
    
    Dropping this unneeded pin also fixes a bug introduced by "bcachefs:
    Journal seq now incremented at entry open, not close" - in the new code,
    if the journal is completely empty a journal pin list for
    journal_cur_seq() won't exist.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
    b66fbf33
btree_update_interior.c 56.9 KB