さて、前回、buffer_headを特定したものの、なぜこのbuffer_headがロックされたままとなっているのか分かりません。 さらに調べを進めていきたいと思います。 __wait_on_buffer()でなぜ待ちつづけるかというと、__wait_on_buffer()内のsync_buffer()でバッファのロックが解除されないからです。 では、sync_buffer()を調べてみましょう。 ----- fs/buffer.c static void sync_buffer(struct buffer_head *bh) { struct block_device *bd; smp_mb(); bd = bh->b_bdev; if (bd) blk_run_address_space(bd->bd_in