diff --git a/include/storagecommands.hpp b/include/storagecommands.hpp
index de6fb58..78a8393 100644
--- a/include/storagecommands.hpp
+++ b/include/storagecommands.hpp
@@ -39,6 +39,13 @@
     uint8_t bytesToRead;
 };
 
+struct GetFRUAreaResp
+{
+    uint8_t inventorySizeLSB;
+    uint8_t inventorySizeMSB;
+    uint8_t accessType;
+};
+
 struct GetFRUAreaReq
 {
     uint8_t fruDeviceID;
diff --git a/src/storagecommands.cpp b/src/storagecommands.cpp
index 787690a..e7ee3ad 100644
--- a/src/storagecommands.cpp
+++ b/src/storagecommands.cpp
@@ -885,8 +885,48 @@
         return -1;
 }
 
+ipmi_ret_t ipmiStorageGetFRUInvAreaInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+                                        ipmi_request_t request,
+                                        ipmi_response_t response,
+                                        ipmi_data_len_t dataLen,
+                                        ipmi_context_t context)
+{
+    if (*dataLen != 1)
+    {
+        *dataLen = 0;
+        return IPMI_CC_REQ_DATA_LEN_INVALID;
+    }
+    *dataLen = 0; // default to 0 in case of an error
+
+    uint8_t reqDev = *(static_cast<uint8_t*>(request));
+    if (reqDev == 0xFF)
+    {
+        return IPMI_CC_INVALID_FIELD_REQUEST;
+    }
+    ipmi_ret_t status = replaceCacheFru(reqDev);
+
+    if (status != IPMI_CC_OK)
+    {
+        return status;
+    }
+
+    GetFRUAreaResp* respPtr = static_cast<GetFRUAreaResp*>(response);
+    respPtr->inventorySizeLSB = fruCache.size() & 0xFF;
+    respPtr->inventorySizeMSB = fruCache.size() >> 8;
+    respPtr->accessType = static_cast<uint8_t>(GetFRUAreaAccessType::byte);
+
+    *dataLen = sizeof(GetFRUAreaResp);
+    return IPMI_CC_OK;
+}
+
 void registerStorageFunctions()
 {
+    // <Get FRU Inventory Area Info>
+    ipmiPrintAndRegister(
+        NETFUN_STORAGE,
+        static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdGetFRUInvAreaInfo),
+        NULL, ipmiStorageGetFRUInvAreaInfo, PRIVILEGE_OPERATOR);
+
     // <READ FRU Data>
     ipmiPrintAndRegister(
         NETFUN_STORAGE,
