擴展的底層函數爲mdextend。先通過_mdfd_getseg獲取指定頁號的段文件描述符,然後根據頁號計算出偏移,向該偏移出寫入一頁:大部分情況寫入一頁0來進行擴展。
_mdfd_getseg獲取頁號所在段文件的描述符,當沒有打開過對應文件時,根據入參是否爲EXTENSION_CREATE或EXTENSION_CREATE_RECOVERY,設置標記O_CREATE作爲open參數,當文件不存在時會創建新文件,若存在則會打開。如果flag帶有O_EXCL | O_CREATE,則若文件存在,則open失敗,返回fd爲-1,errno爲17表示文件已存在。