diff --git a/subsys/settings/src/settings_file.c b/subsys/settings/src/settings_file.c index 43dcd1004f580..a056e969fb911 100644 --- a/subsys/settings/src/settings_file.c +++ b/subsys/settings/src/settings_file.c @@ -539,18 +539,23 @@ static int mkdir_for_file(const char *file_path) if (i > 0 && file_path[i] == '/') { dir_path[i] = '\0'; - err = mkdir_if_not_exists(dir_path); - if (err) { - return err; + /* Skip mkdir for FatFS root directories (ending with ':') */ + if (strrchr(dir_path, ':') == &dir_path[strlen(dir_path) - 1]) { + LOG_DBG("FatFS root directory detected, skipping mkdir for path: ""%s", dir_path); + } else { + err = mkdir_if_not_exists(dir_path); + if (err) { + return err; + } } } - dir_path[i] = file_path[i]; } return 0; } + int settings_backend_init(void) { static struct settings_file config_init_settings_file = {