Commit 1c66b360fe262 (Change some lock status member in ocfs2_lock_res to char.) states that these fields need to be signed due to comparision to -1, but only changed the type from unsigned char to char. However, it is a compiler option if char is a signed or unsigned type. Change these fields to signed char so the code will work with all compilers. Signed-off-by: Milton Miller <miltonm at bga.com> --- I did not look for other fields that might be char. PowerPC compilers default to unsigned char, and aparently arm does as well from a quick google search, to name two examples. diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h index 1efea36..70dd3b1 100644 --- a/fs/ocfs2/ocfs2.h +++ b/fs/ocfs2/ocfs2.h @@ -159,9 +159,9 @@ struct ocfs2_lock_res { char l_name[OCFS2_LOCK_ID_MAX_LEN]; unsigned int l_ro_holders; unsigned int l_ex_holders; - char l_level; - char l_requested; - char l_blocking; + signed char l_level; + signed char l_requested; + signed char l_blocking; /* Data packed - type enum ocfs2_lock_type */ unsigned char l_type;
2010-11-18 12:20, Milton Miller wrote:> Commit 1c66b360fe262 (Change some lock status member in ocfs2_lock_res > to char.) states that these fields need to be signed due to comparision > to -1, but only changed the type from unsigned char to char. However, it > is a compiler option if char is a signed or unsigned type. Change these > fields to signed char so the code will work with all compilers. > > Signed-off-by: Milton Miller<miltonm at bga.com>oh, sorry I don't know this. Thanks. Acked-by: Tao Ma <tao.ma at oracle.com>> --- > I did not look for other fields that might be char. PowerPC compilers > default to unsigned char, and aparently arm does as well from a quick > google search, to name two examples. > > diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h > index 1efea36..70dd3b1 100644 > --- a/fs/ocfs2/ocfs2.h > +++ b/fs/ocfs2/ocfs2.h > @@ -159,9 +159,9 @@ struct ocfs2_lock_res { > char l_name[OCFS2_LOCK_ID_MAX_LEN]; > unsigned int l_ro_holders; > unsigned int l_ex_holders; > - char l_level; > - char l_requested; > - char l_blocking; > + signed char l_level; > + signed char l_requested; > + signed char l_blocking; > > /* Data packed - type enum ocfs2_lock_type */ > unsigned char l_type; > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
On Wed, Nov 17, 2010 at 10:20:11PM -0600, Milton Miller wrote:> Commit 1c66b360fe262 (Change some lock status member in ocfs2_lock_res > to char.) states that these fields need to be signed due to comparision > to -1, but only changed the type from unsigned char to char. However, it > is a compiler option if char is a signed or unsigned type. Change these > fields to signed char so the code will work with all compilers. > > Signed-off-by: Milton Miller <miltonm at bga.com>This patch is now in the fixes branch of ocfs2.git. Joel -- "This is the end, beautiful friend. This is the end, my only friend the end Of our elaborate plans, the end Of everything that stands, the end No safety or surprise, the end I'll never look into your eyes again." Joel Becker Senior Development Manager Oracle E-mail: joel.becker at oracle.com Phone: (650) 506-8127