From: Kevin R. <Kev...@dr...> - 2004-06-17 16:10:32
|
Running "lamboot -d" gets me the following: > [...] > n-1<29352> ssi:boot:bproc: found master node (head). Skipping checks. > n-1<29352> ssi:boot:bproc: n0 node status: up > n-1<29352> ssi:boot:bproc: n0 bproc_nodeinfo failed (Unknown error 300) > n-1<29352> ssi:boot:bproc: n1 node status: up > n-1<29352> ssi:boot:bproc: n1 bproc_nodeinfo failed (Unknown error 300) > [...] Inspecting the bproc code in bproc-4.0.0pre5/clients/bproc.c I find the following within the bproc_nodeinfo: if (getxattr(path, BPROC_STATE_XATTR, info->status, sizeof(info->status))){ errno = BE_INVALIDNODE; return -1; } if (getxattr(path, BPROC_ADDR_XATTR, info->status, sizeof(info->addr))){ errno = BE_INVALIDNODE; return -1; } It is my understanding that "getxattr" returns the length of the extended attribute. In my case, the length is 3 ("up\0"). The above will evaluate as true and the function will return in error. I don't think this is the desired results. The following test would be better: r = getxattr(path, BPROC_STATE_XATTR, info->status, sizeof(info->status)); if (r < 0 || r > sizeof(info->status)){ errno = BE_INVALIDNODE; return -1; } r = getxattr(path, BPROC_ADDR_XATTR, info->status, sizeof(info->addr)); if (r < 0 || r > sizeof(info->status)){ errno = BE_INVALIDNODE; return -1; } -- Kevin Russell (DND/DRDC/MES/TDG) Kev...@dr... (403) 544-4746, DRDC Suffield, Box 4000, Medicine Hat, AB, Canada, T1A 8K6 |