On Mon, Apr 06, 2020 at 11:30:31PM -0400, Theodore Y. Ts'o wrote: > On Mon, Apr 06, 2020 at 03:45:34PM -0700, Josh Triplett wrote: > > Under what circumstances can an inode ever end up with EXT4_HUGE_FILE_FL > > set? (Other than in an artificially constructed filesystem.) > > > > Was EXT4_HUGE_FILE_FL just added for future extensibility, in case a > > future file storage mechanism allows storing files bigger than 2**32 > > blocks? > > Yes. basically. When we added the huge_file feature, which introduced > the i_blocks_hi field, the thinking was to add EXT4_HUGE_FILE_FL so > that we could painlessly upgrade a file system from ext3 (w/o the huge > file feature) to enabling the feature without having to rewrite all of > the inodes. However, we also didn't want to artificially limit > ourselves to 2**57 file sizes, so we also added the EXT4_HUGE_FILE_FL > flag. Thanks for the explanation! That makes sense. > It hasn't gotten a huge amount of testing in a while, but it would be > relatively easy to add debugging code (triggered via a mount option or > a sysfs file) which forces the use of EXT4_HUGE_FILE_FL all the time. That does seem like a good idea. It would also be nice to have an e2fsck option to rewrite all inodes to use EXT4_HUGE_FILE_FL. I think I'll avoid poking that code for now, though, since I don't currently have a need for files anywhere near that large.