Tao Ma
2010-Sep-13 06:09 UTC
[Ocfs2-devel] [PATCH] ocfs2: Use cpu_to_le16 for e_leaf_clusters in ocfs2_bg_discontig_add_extent.
e_leaf_clusters is a le16, so use cpu_to_le16 instead of cpu_to_le32. Signed-off-by: Tao Ma <tao.ma at oracle.com> --- fs/ocfs2/suballoc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index a8e6a95..039f69b 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c @@ -348,7 +348,7 @@ static void ocfs2_bg_discontig_add_extent(struct ocfs2_super *osb, rec->e_blkno = cpu_to_le64(p_blkno); rec->e_cpos = cpu_to_le32(le16_to_cpu(bg->bg_bits) / le16_to_cpu(cl->cl_bpc)); - rec->e_leaf_clusters = cpu_to_le32(clusters); + rec->e_leaf_clusters = cpu_to_le16(clusters); le16_add_cpu(&bg->bg_bits, clusters * le16_to_cpu(cl->cl_bpc)); le16_add_cpu(&bg->bg_free_bits_count, clusters * le16_to_cpu(cl->cl_bpc)); -- 1.7.1.GIT
Joel Becker
2010-Sep-13 06:29 UTC
[Ocfs2-devel] [PATCH] ocfs2: Use cpu_to_le16 for e_leaf_clusters in ocfs2_bg_discontig_add_extent.
On Mon, Sep 13, 2010 at 02:09:53PM +0800, Tao Ma wrote:> e_leaf_clusters is a le16, so use cpu_to_le16 instead > of cpu_to_le32. > > Signed-off-by: Tao Ma <tao.ma at oracle.com>You're right that we need to swap as an le16.> @@ -348,7 +348,7 @@ static void ocfs2_bg_discontig_add_extent(struct ocfs2_super *osb, > rec->e_blkno = cpu_to_le64(p_blkno); > rec->e_cpos = cpu_to_le32(le16_to_cpu(bg->bg_bits) / > le16_to_cpu(cl->cl_bpc)); > - rec->e_leaf_clusters = cpu_to_le32(clusters); > + rec->e_leaf_clusters = cpu_to_le16(clusters);For a second I was worried, "what about overflow if clusters > 16bits?" Of course, this is coming from discontig stuff which starts at cpg, so it can't overflow. Maybe discontig_add_extent should take "unsigned int clusters" instead of "u32 clusters" to signify that the size of 'clusters isn't important here? Joel -- "Friends may come and go, but enemies accumulate." - Thomas Jones Joel Becker Consulting Software Developer Oracle E-mail: joel.becker at oracle.com Phone: (650) 506-8127