• Mark Tinguely's avatar
    xfs: wait for the write the superblock on unmount · 9a57fa8e
    Mark Tinguely authored
    v2: Add the xfs_buf_lock to xfs_quiesce_attr().
        Add explaination why xfs_buf_lock() is used to wait for write.
    
    xfs_wait_buftarg() does not wait for the completion of the write of the
    uncached superblock. This write can race with the shutdown of the log
    and causes a panic if the write does not win the race.
    
    During the log write, xfsaild_push() will lock the buffer and set the
    XBF_ASYNC flag. Because the XBF_FLAG is set, complete() is not performed
    on the buffer's iowait entry, we cannot call xfs_buf_iowait() to wait
    for the write to complete. The buffer's lock is held until the write is
    complete, so we can block on a xfs_buf_lock() request to be notified
    that the write is complete.
    Signed-off-by: default avatarMark Tinguely <tinguely@sgi.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarBen Myers <bpm@sgi.com>
    9a57fa8e
xfs_mount.c 65.8 KB