diff --git a/dump_manager_bmc.cpp b/dump_manager_bmc.cpp
index 26adf67..ef128df 100644
--- a/dump_manager_bmc.cpp
+++ b/dump_manager_bmc.cpp
@@ -248,32 +248,54 @@
     }
 }
 
-size_t Manager::getAllowedSize()
+size_t getDirectorySize(const std::string dir)
 {
-    using namespace sdbusplus::xyz::openbmc_project::Dump::Create::Error;
-    using Reason = xyz::openbmc_project::Dump::Create::QuotaExceeded::REASON;
-
     auto size = 0;
-
-    // Get current size of the dump directory.
-    for (const auto& p : std::filesystem::recursive_directory_iterator(dumpDir))
+    for (const auto& p : std::filesystem::recursive_directory_iterator(dir))
     {
         if (!std::filesystem::is_directory(p))
         {
             size += std::ceil(std::filesystem::file_size(p) / 1024.0);
         }
     }
+    return size;
+}
+
+size_t Manager::getAllowedSize()
+{
+    // Get current size of the dump directory.
+    auto size = getDirectorySize(dumpDir);
 
     // Set the Dump size to Maximum  if the free space is greater than
     // Dump max size otherwise return the available size.
 
     size = (size > BMC_DUMP_TOTAL_SIZE ? 0 : BMC_DUMP_TOTAL_SIZE - size);
 
+#ifdef BMC_DUMP_ROTATE_CONFIG
+    // Delete the first existing file until the space is enough
+    while (size < BMC_DUMP_MIN_SPACE_REQD)
+    {
+        auto delEntry = min_element(
+            entries.begin(), entries.end(),
+            [](const auto& l, const auto& r) { return l.first < r.first; });
+        auto delPath =
+            std::filesystem::path(dumpDir) / std::to_string(delEntry->first);
+
+        size += getDirectorySize(delPath);
+
+        delEntry->second->delete_();
+    }
+#else
+    using namespace sdbusplus::xyz::openbmc_project::Dump::Create::Error;
+    using Reason = xyz::openbmc_project::Dump::Create::QuotaExceeded::REASON;
+
     if (size < BMC_DUMP_MIN_SPACE_REQD)
     {
         // Reached to maximum limit
         elog<QuotaExceeded>(Reason("Not enough space: Delete old dumps"));
     }
+#endif
+
     if (size > BMC_DUMP_MAX_SIZE)
     {
         size = BMC_DUMP_MAX_SIZE;
diff --git a/meson.build b/meson.build
index 2b3e7f5..d7b5714 100644
--- a/meson.build
+++ b/meson.build
@@ -122,6 +122,9 @@
 conf_data.set_quoted('FAULTLOG_DUMP_PATH', get_option('FAULTLOG_DUMP_PATH'),
                       description : 'Directory where fault logs are placed'
                     )
+conf_data.set('BMC_DUMP_ROTATE_CONFIG', get_option('dump_rotate_config').enabled(),
+               description : 'Turn on rotate config for bmc dump'
+             )
 
 configure_file(configuration : conf_data,
                output : 'config.h'
diff --git a/meson_options.txt b/meson_options.txt
index cef17e4..0fe8e95 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -85,6 +85,11 @@
         description : 'Enable Open Power specific dumps'
       )
 
+option('dump_rotate_config', type: 'feature',
+        value : 'disabled',
+        description : 'Enable rotate config for bmc dump'
+      )
+
 # Fault log options
 
 option('FAULTLOG_DUMP_PATH', type : 'string',
