[問題] 請問linux檔案系統在ext2/3處理file hole

看板LinuxDev作者 (ㄆㄆ)時間13年前 (2012/05/18 15:21), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
請問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

05/19 03:21, , 1F
photorec裡面應該有相關code可以參考
05/19 03:21, 1F

05/19 03:23, , 2F
還是你是說sparse file的hole? 那可能要另外找
05/19 03:23, 2F

05/19 03:30, , 3F
就是sparce file的hole...
05/19 03:30, 3F

05/19 03:32, , 4F
或者是樓上任我我問的是哪一種hole...@@? 有其他種hole嗎
05/19 03:32, 4F

05/19 03:32, , 5F
認為 我最近遇到的是直接
05/19 03:32, 5F

05/19 03:33, , 6F
truncate 一個file 然後其實不占空間這種情況...
05/19 03:33, 6F

05/19 03:34, , 7F
我google了好久 沒有找到肯定的解法 目前只找到ioctl
05/19 03:34, 7F
文章代碼(AID): #1FjcZWzI (LinuxDev)