From 8af10c0c976e36d4f4ed73f6cd6c674a8dca5a4c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 27 Apr 2026 10:06:05 -0500 Subject: [PATCH] Distinguish erased-NVS from NVS-unavailable in deferred warning If the erase+reopen recovery also fails (e.g. missing/mislabeled NVS partition), nvs_handle stays 0. Report that state explicitly instead of claiming NVS was erased. --- esphome/components/esp32/preferences.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esphome/components/esp32/preferences.cpp b/esphome/components/esp32/preferences.cpp index e49b688638..09835385ac 100644 --- a/esphome/components/esp32/preferences.cpp +++ b/esphome/components/esp32/preferences.cpp @@ -96,7 +96,11 @@ void ESP32Preferences::open() { ESPPreferenceObject ESP32Preferences::make_preference(size_t length, uint32_t type) { if (s_open_err != ESP_OK) { - ESP_LOGW(TAG, "nvs_open failed: %s - erased NVS", esp_err_to_name(s_open_err)); + if (this->nvs_handle == 0) { + ESP_LOGW(TAG, "nvs_open failed: %s - NVS unavailable", esp_err_to_name(s_open_err)); + } else { + ESP_LOGW(TAG, "nvs_open failed: %s - erased NVS", esp_err_to_name(s_open_err)); + } s_open_err = ESP_OK; } auto *pref = new ESP32PreferenceBackend(); // NOLINT(cppcoreguidelines-owning-memory)