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
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to