On Feb 11, 2009 10:15 -0500, Theodore Ts'o wrote: > On Wed, Feb 11, 2009 at 12:48:16AM -0500, Andreas Dilger wrote: > > I'm glad that the MAX_REC_LEN value is being kept, because "0" is > > too easily hit due to disk corruption. > > I'm not too worried about that, actually. If there is a disk > corruption, we will detect it easily enough no matter which encoding > we use. I am thinking though that neither 65535 nor 0 is the best way > of encoding 65536. In fact, I would suggest the encoding 0x01. > Specifically, I suggest: > > (rec_len & 65532) | ((rec_len >> 16) & 3) > > This encodes valid rec_len values in the range 0 through 2**18-4, and > allows for maximum block sizes of up to 256k. To retain backwards > compatibility, and to allow for a 256k blocksize, we can have a > special case where a rec_len of either 0 or 65535 means > EXT4_BLOCK_SIZE(s). > > It's unlikely we'll see VM pages of up to 256k, but at some point we > might find that the Linux VM has been enhanced to support filesystem > block sizes > than the VM page size, at which point it might be useful > for some applications to allow very large filesystem block sizes. There are probably a dozen other places in the ext* code that expect blocksize <= 65536, so I don't think this new encoding is really helping us at all. We are already restricted to 2^32-1 inodes due to the dirent format and I expect we will have changed the dirent format by that time anyways. I'd rather keep this change as simple as possible (i.e. the original 65535 or 0 values, preferring 65535). Cheers, Andreas -- Andreas Dilger Sr. Staff Engineer, Lustre Group Sun Microsystems of Canada, Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html