看板 LinuxDev 關於我們 聯絡資訊
請問ext2/3 檢查block是不是hole(未實際配置空間) 有什麼有效的方法嗎? read都是'/0'似乎不是一個判斷的好方法 我找了很多資料 好像可以從inode下手 有一個bmap的東西 不過那好像非常底層 我翻系統程式的書 沒有查到inode的操作的部分 網頁上在userspace可以抓到inode的block配置資訊的方法 目前還沒有看到... 另外很多討論都不建議去碰inode... (不過我只是要看他有沒有配置空間來判斷是不是hole所以 大概 還好吧@@) 頂多就是stat可以抓到 inode number然後也就這樣而已 網路找到的資料是可以用 ioctl() 裡面flag用 FIEMAP 可以用到fiemap這個結構 裡面有一些資訊可以判斷是不是hole 不過這似乎是ext4才有支援... 另外也有找到另一個ioctl()裡面用FIBMAP 不過這個好像要從頭開始檢查 (我猜可以搭lseek跳到要檢查的offset...) 重點是這個要root權限才能用... 請問檢查檔案的某個block(或offset)是不是hole 有沒有什麼比較有效的方法嗎? 謝謝@@... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.50.129
buganini:photorec裡面應該有相關code可以參考 05/19 03:21
buganini:還是你是說sparse file的hole? 那可能要另外找 05/19 03:23
EntHeEnd:就是sparce file的hole... 05/19 03:30
EntHeEnd:或者是樓上任我我問的是哪一種hole...@@? 有其他種hole嗎 05/19 03:32
EntHeEnd: 認為 我最近遇到的是直接 05/19 03:32
EntHeEnd:truncate 一個file 然後其實不占空間這種情況... 05/19 03:33
EntHeEnd:我google了好久 沒有找到肯定的解法 目前只找到ioctl 05/19 03:34