diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2015-03-12 15:18:52 +0100 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-02-15 12:44:46 +0100 |
commit | b6e3080fff7f101f2bbec21a7757e54e6026d61d (patch) | |
tree | dfe243f860c744d8c11a27366af758995d8ed7a1 | |
parent | 73f1d444c8fccf7f0c95d09ff4b2a6c9f0e40e02 (diff) | |
download | lvm2-b6e3080fff7f101f2bbec21a7757e54e6026d61d.tar.gz |
pv: _pvcreate_write: do label removal and zeroing only if creating a new PV
-rw-r--r-- | lib/metadata/metadata.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 90643fa5c..7af545a11 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -1637,32 +1637,33 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp) static int _pvcreate_write(struct cmd_context *cmd, struct pv_to_write *pvw) { - int zero = pvw->pp ? pvw->pp->zero : 1; struct physical_volume *pv = pvw->pv; struct device *dev = pv->dev; const char *pv_name = dev_name(dev); - /* Wipe existing label first */ - if (!label_remove(pv_dev(pv))) { - log_error("Failed to wipe existing label on %s", pv_name); - return 0; - } - - if (zero) { - log_verbose("Zeroing start of device %s", pv_name); - if (!dev_open_quiet(dev)) { - log_error("%s not opened: device not zeroed", pv_name); + if (pvw->new_pv) { + /* Wipe existing label first */ + if (!label_remove(pv_dev(pv))) { + log_error("Failed to wipe existing label on %s", pv_name); return 0; } - if (!dev_set(dev, UINT64_C(0), (size_t) 2048, 0)) { - log_error("%s not wiped: aborting", pv_name); + if (pvw->pp->zero) { + log_verbose("Zeroing start of device %s", pv_name); + if (!dev_open_quiet(dev)) { + log_error("%s not opened: device not zeroed", pv_name); + return 0; + } + + if (!dev_set(dev, UINT64_C(0), (size_t) 2048, 0)) { + log_error("%s not wiped: aborting", pv_name); + if (!dev_close(dev)) + stack; + return 0; + } if (!dev_close(dev)) stack; - return 0; } - if (!dev_close(dev)) - stack; } log_verbose("Writing physical volume data to disk \"%s\"", |