I agree that we need to deciede which inode numbers to use for special system file. Anyway, I will use the first way in the next version of patch. On Tue, Apr 21, 2015 at 8:35 PM, Jan Kara <jack@xxxxxxx> wrote: > On Mon 20-04-15 17:27:20, Andreas Dilger wrote: >> On Apr 19, 2015, at 7:39 PM, Li Xi <pkuelelixi@xxxxxxxxx> wrote: > ... >> > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h >> > index 1446c4f..a7acf10 100644 >> > --- a/fs/ext4/ext4.h >> > +++ b/fs/ext4/ext4.h >> > @@ -1169,7 +1169,8 @@ struct ext4_super_block { >> > __le32 s_overhead_clusters; /* overhead blocks/clusters in fs */ >> > __le32 s_backup_bgs[2]; /* groups with sparse_super2 SBs */ >> > __u8 s_encrypt_algos[4]; /* Encryption algorithms in use */ >> > - __le32 s_reserved[105]; /* Padding to the end of the block */ >> > + __le32 s_prj_quota_inum; /* inode for tracking project quota */ >> > + __le32 s_reserved[104]; /* Padding to the end of the block */ >> > __le32 s_checksum; /* crc32c(superblock) */ >> > }; >> > >> > @@ -1184,7 +1185,7 @@ struct ext4_super_block { >> > #define EXT4_MF_FS_ABORTED 0x0002 /* Fatal error detected */ >> > >> > /* Number of quota types we support */ >> > -#define EXT4_MAXQUOTAS 2 >> > +#define EXT4_MAXQUOTAS 3 >> > >> > /* >> > * fourth extended-fs super-block data in memory >> > @@ -1376,6 +1377,7 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino) >> > ino == EXT4_BOOT_LOADER_INO || >> > ino == EXT4_JOURNAL_INO || >> > ino == EXT4_RESIZE_INO || >> > + ino == le32_to_cpu(EXT4_SB(sb)->s_es->s_prj_quota_inum) || >> >> This extra check isn't needed, since s_proj_quota_inum will be a regular >> inode number and handled by the checks below. > So I think this needs a final decision from Ted how we handle new system > files and use it consistently among all features - project quotas, orphan > file, etc. Ted, can you share your thoughts please? Options are: > > 1) We allocate inodes from normal inode pool and just store their inode > numbers in superblock. > + no need to increase number of special inodes > - slightly less robust since inode can be anywhere > - needs special treatment from fsck to know inode isn't just some lost inode > - consumes space in sb for inode numbers > > 2) Like 1) but also create special "system" directory and attach system > inodes there > + fsck just needs to know about the system directory, not about every > special file > + no wasted space in sb for every special inode > - more code in kernel to implement this > - even less robust than 1) - when system directory gets corrupt, we are in > trouble > > 3) Increase number of special inodes > + consistent with what we did upto now > + somewhat more robust since inode is in fixed place > - tune2fs needs to do quite some work to reserve more inodes > - wastes unused special inodes > > Honza > -- > Jan Kara <jack@xxxxxxx> > SUSE Labs, CR -- 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