[lvm-devel] master - bcache_write_bytes needs to be followed by flush
David Teigland
teigland at sourceware.org
Tue May 1 14:35:36 UTC 2018
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8dcc973bbb2372edaac8f4df4d8480225c04cfe5
Commit: 8dcc973bbb2372edaac8f4df4d8480225c04cfe5
Parent: a418f88b76d6b67c58af6b8a7d75db29106ff0e1
Author: David Teigland <teigland at redhat.com>
AuthorDate: Tue May 1 09:33:55 2018 -0500
Committer: David Teigland <teigland at redhat.com>
CommitterDate: Tue May 1 09:33:55 2018 -0500
bcache_write_bytes needs to be followed by flush
The improved bcache_write_bytes is not flushing, so
the caller needs to do that.
---
lib/label/label.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/lib/label/label.c b/lib/label/label.c
index 97e2a0b..a981809 100644
--- a/lib/label/label.c
+++ b/lib/label/label.c
@@ -946,7 +946,14 @@ bool dev_write_bytes(struct device *dev, off_t start, size_t len, void *data)
}
if (!bcache_write_bytes(scan_bcache, dev->bcache_fd, start, len, data)) {
- log_error("dev_write_bytes %s at %u failed invalidate fd %d",
+ log_error("dev_write_bytes %s at %u bcache write failed invalidate fd %d",
+ dev_name(dev), (uint32_t)start, dev->bcache_fd);
+ label_scan_invalidate(dev);
+ return false;
+ }
+
+ if (!bcache_flush(scan_bcache)) {
+ log_error("dev_write_bytes %s at %u bcache flush failed invalidate fd %d",
dev_name(dev), (uint32_t)start, dev->bcache_fd);
label_scan_invalidate(dev);
return false;
@@ -982,7 +989,14 @@ bool dev_write_zeros(struct device *dev, off_t start, size_t len)
}
if (!bcache_write_zeros(scan_bcache, dev->bcache_fd, start, len)) {
- log_error("dev_write_zeros %s at %u failed invalidate fd %d",
+ log_error("dev_write_zeros %s at %u bcache write failed invalidate fd %d",
+ dev_name(dev), (uint32_t)start, dev->bcache_fd);
+ label_scan_invalidate(dev);
+ return false;
+ }
+
+ if (!bcache_flush(scan_bcache)) {
+ log_error("dev_write_zeros %s at %u bcache flush failed invalidate fd %d",
dev_name(dev), (uint32_t)start, dev->bcache_fd);
label_scan_invalidate(dev);
return false;
More information about the lvm-devel
mailing list