1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

label: cleanup set_byte error exit

This commit is contained in:
David Teigland 2020-09-16 13:54:16 -05:00
parent 37bcd7ce84
commit 491eb25832

View File

@ -1519,6 +1519,8 @@ bool dev_write_zeros(struct device *dev, uint64_t start, size_t len)
bool dev_set_bytes(struct device *dev, uint64_t start, size_t len, uint8_t val) bool dev_set_bytes(struct device *dev, uint64_t start, size_t len, uint8_t val)
{ {
bool rv;
if (test_mode()) if (test_mode())
return true; return true;
@ -1547,25 +1549,30 @@ bool dev_set_bytes(struct device *dev, uint64_t start, size_t len, uint8_t val)
dev_set_last_byte(dev, start + len); dev_set_last_byte(dev, start + len);
if ((!val && !bcache_zero_bytes(scan_bcache, dev->bcache_fd, start, len)) || if (!val)
!bcache_set_bytes(scan_bcache, dev->bcache_fd, start, len, val)) { rv = bcache_zero_bytes(scan_bcache, dev->bcache_fd, start, len);
log_error("Error writing device %s at %llu length %u.", else
rv = bcache_set_bytes(scan_bcache, dev->bcache_fd, start, len, val);
if (!rv) {
log_error("Error writing device value %s at %llu length %u.",
dev_name(dev), (unsigned long long)start, (uint32_t)len); dev_name(dev), (unsigned long long)start, (uint32_t)len);
dev_unset_last_byte(dev); goto fail;
label_scan_invalidate(dev);
return false;
} }
if (!bcache_flush(scan_bcache)) { if (!bcache_flush(scan_bcache)) {
log_error("Error writing device %s at %llu length %u.", log_error("Error writing device %s at %llu length %u.",
dev_name(dev), (unsigned long long)start, (uint32_t)len); dev_name(dev), (unsigned long long)start, (uint32_t)len);
dev_unset_last_byte(dev); goto fail;
label_scan_invalidate(dev);
return false;
} }
dev_unset_last_byte(dev); dev_unset_last_byte(dev);
return true; return true;
fail:
dev_unset_last_byte(dev);
label_scan_invalidate(dev);
return false;
} }
void dev_set_last_byte(struct device *dev, uint64_t offset) void dev_set_last_byte(struct device *dev, uint64_t offset)