summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-07-04 09:07:24 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-14 08:01:11 +0200
commit2d9d230089d0a5088bb3b37b01dfddc6527740a6 (patch)
treeda90322653fc20a9de4b1ebf5650189ee2f20648
parent2e82822d080950d9f2cc2bfadafd31ec9809b871 (diff)
downloadbarebox-2d9d230089d0a5088bb3b37b01dfddc6527740a6.tar.gz
barebox-2d9d230089d0a5088bb3b37b01dfddc6527740a6.tar.xz
block: Add flush callback
Some block devices need an explicit callback for flushing written blocks. Add this callback. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--common/block.c3
-rw-r--r--include/block.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/common/block.c b/common/block.c
index e522ee425a..0edc8619ef 100644
--- a/common/block.c
+++ b/common/block.c
@@ -55,6 +55,9 @@ static int writebuffer_flush(struct block_device *blk)
}
}
+ if (blk->ops->flush)
+ return blk->ops->flush(blk);
+
return 0;
}
diff --git a/include/block.h b/include/block.h
index 872a4c1bba..91377679b0 100644
--- a/include/block.h
+++ b/include/block.h
@@ -9,6 +9,7 @@ struct block_device;
struct block_device_ops {
int (*read)(struct block_device *, void *buf, int block, int num_blocks);
int (*write)(struct block_device *, const void *buf, int block, int num_blocks);
+ int (*flush)(struct block_device *);
};
struct chunk;