X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=lwext4%2Fext4_bcache.c;h=fb37f4434fde98bd2f48b157db4a574480db79cf;hb=3b136f8a7036606a9e6c130ee292da2a9ae39123;hp=ab19c177c619a66dc45c48e4da572a8d5eb866ac;hpb=e299c8d66002d6b9c8d77b3c6c3247e0915fd8c6;p=lwext4.git diff --git a/lwext4/ext4_bcache.c b/lwext4/ext4_bcache.c index ab19c17..fb37f44 100644 --- a/lwext4/ext4_bcache.c +++ b/lwext4/ext4_bcache.c @@ -233,10 +233,13 @@ int ext4_bcache_free(struct ext4_bcache *bc, struct ext4_block *b) RB_INSERT(ext4_buf_lru, &bc->lru_root, buf); /* This buffer is ready to be flushed. */ if (ext4_bcache_test_flag(buf, BC_DIRTY)) { - if (bc->bdev->cache_write_back) + if (bc->bdev->cache_write_back && + !ext4_bcache_test_flag(buf, BC_FLUSH)) ext4_bcache_insert_dirty_node(bc, buf); - else + else { ext4_block_flush_buf(bc->bdev, buf); + ext4_bcache_clear_flag(buf, BC_FLUSH); + } } /* The buffer is invalidated...drop it. */