[Pvfs2-developers] Tree doesn't build (at least for gcc 4.3)

Sam Lang slang at mcs.anl.gov
Mon Dec 15 14:36:06 EST 2008


Brad,

This was laziness on my part.  Should be fixed now.
-sam

On Dec 15, 2008, at 1:31 PM, Bradley Settlemyer wrote:

> Hello,
>
>   I am having trouble building the tree due to the layout types  
> (newer stuff I'm not familiar with) -- probably due to the recent  
> compiler I am using, though I don't think you wanted what you had  
> anyway.  I am seeing the following errors:
>
>   CC        src/apps/admin/pvfs2-touch.o
> src/apps/admin/pvfs2-touch.c: In function 'main':
> src/apps/admin/pvfs2-touch.c:48: error: incompatible types in  
> assignment
> src/apps/admin/pvfs2-touch.c:77: error: incompatible types in  
> assignment
> make: *** [src/apps/admin/pvfs2-touch.o] Error 1
>
>
> Which boils down to this line in pvfs2-touch:
>
>     layout.algorithm = PVFS_SYS_LAYOUT_DEFAULT;
>
> The accompanying enum is this:
>
> /* Layout algorithm for converting from server lists in the config
>  * to a list of servers to use to store datafiles for a file.
>  */
> enum PVFS_sys_layout_algorithm
> {
>     /* order the datafiles according to the server list */
>     PVFS_SYS_LAYOUT_NONE = 1,
>
>     /* choose the first datafile randomly, and then round-robin in- 
> order */
>     PVFS_SYS_LAYOUT_ROUND_ROBIN = 2,
>
>     /* choose each datafile randomly */
>     PVFS_SYS_LAYOUT_RANDOM = 3,
>
>     /* order the datafiles based on the list specified */
>     PVFS_SYS_LAYOUT_LIST = 4
> };
> #define PVFS_SYS_LAYOUT_DEFAULT NULL
>
> (So obviously, default points to an invalid enum value -- namely 0).
>
> My guess is you wanted something more like this:
>
> enum PVFS_sys_layout_algorithm
> {
>    /* First enum value is the invalid case */
>    PVFS_SYS_LAYOUT_INVALID = 0;
>
>     PVFS_SYS_LAYOUT_NONE = 1,
>
>     /* choose the first datafile randomly, and then round-robin in- 
> order */
>     PVFS_SYS_LAYOUT_ROUND_ROBIN = 2,
>
>     /* choose each datafile randomly */
>     PVFS_SYS_LAYOUT_RANDOM = 3,
>
>     /* order the datafiles based on the list specified */
>     PVFS_SYS_LAYOUT_LIST = 4
> };
>
> #define PVFS_SYS_LAYOUT_DEFAULT PVFS_SYS_LAYOUT_NONE
>
> Then you have the assert that the layout is not 0, and you have a  
> safe initialization value if you need to set the enum type to some  
> default initial value for an outbound parameter that won't pass the  
> assert if it isn't set (due to an error) or if someone just memsets  
> the thing by accident.
>
> I changed the call in pvfs2-touch.c to simply use  
> PVFS_SYS_LAYOUT_NONE in my tree.
>
> Cheers,
> Brad
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers



More information about the Pvfs2-developers mailing list