Hi, Recently I was testing my storage's performance and found that there were periodic performance drops when I ran sequential write benchmark. After profiling the duration in each step, I found that the dropping performance was due to wait_on_bit_io(&bh->b_state, BH_Shadow, TASK_UNINTERRUPTIBLE) in do_get_write_access(). And this is what made me confused, if my understanding was right, I thought buffer_shadow(bh) stands for buffer not being copied-out that's why we should wait. But why don't we do copy-out in jbd2_journal_write_metadta_buffer()? and if we do do the copy-out, does that mean we don't have to set_buffer_shadow because it refers to buffer not copied-out? I made a test, when a buffer_head goes into jbd2_journal_write_metadta_buffer(), as long as it belongs to metadata, then force it to do copy-out and do not set_buffer_shadow, then there will be no periodic performance drops. Is this test reasonable? Thanks,