Re: [PATCH 30/32] union mount: ext2 fallthru support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On May 19, 2009  11:42 +0200, Jan Blunck wrote:
> On Mon, May 18, Andreas Dilger wrote:
> > For enums like this that require specific constant on-disk values
> > I prefer being safe:
> > 
> > enum {
> > 	EXT2_FT_UNKNOWN  = 0,
> > 	EXT2_FT_REG_FILE = 1,
> > 	EXT2_FT_DIR	 = 2,
> > 	EXT2_FT_CHRDEV   = 3,
> > 	EXT2_FT_BLKDEV   = 4,
> > 	EXT2_FT_FIFO     = 5,
> > 	EXT2_FT_SOCK     = 6,
> > 	EXT2_FT_SYMLINK  = 7,
> > 	EXT2_FT_WHT      = 8,
> > 	EXT2_FT_FALLTHRU = 9,
> >  	EXT2_FT_MAX
> > 
> > 
> > It probably also makes sense to include a patch for ext3/ext4 to ensure
> > these values are not used by some unrelated feature.
> 
> In ext3 these are preprocessor defines. IIRC defines and enums are identical
> for C (both an int) so I leave this untouched and just add the new filetypes,
> right?

The problem is - what happens if, for whatever reason, EXT2_FT_WHT is
removed?  In a regular enum EXT2_ET_FALLTHRU would get the old value for
EXT2_FT_WHT (=8).  Alternately, if someone accidentally adds a value
before EXT2_FT_WHT because this isn't in the upstream e2fsprogs[*] and
this would push the values of EXT2_FT_WHT and EXT2_FT_FALLTHROUGH up.

That is why, when using enums for on-disk or "external" interfaces, I
prefer that the values are explicitly specified.  It also makes it more
clear when reading the code that these values are static and should not
be changed, instead of just a grouping of related constants.


[*] should be the canonical resource for new on-disk assignments, IMHO

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux