[patch] Move CRC computation to separate function

Artem Bityutskiy dedekind1 at gmail.com
Fri Mar 23 10:09:56 EDT 2012


On Mon, 2012-03-19 at 23:46 +0100, Joel Reardon wrote:
>  /**
> + * ubifs_set_datanode_crc - writes the crc for a data node to the common
> + * header.
> + * @node: the data node
> + */
> +void ubifs_set_datanode_crc(void *node)
> +{
> +	struct ubifs_ch *ch = (struct ubifs_ch *) node;
> +	int len = le32_to_cpu(ch->len);
> +	ch->crc = cpu_to_le32(crc32(UBIFS_CRC32_INIT, node + 8, len - 8));
> +}

Will this be used by other code, outside of io.c? Because currently
there is only one user in the same file, which does not justify
introducing it and making non-static. If answers are "yes", then it is
better to make it static inline and put to misc.h instead, because it is
very small.

>  void ubifs_prepare_node(struct ubifs_info *c, void *node, int len, int pad)
>  {
> -	uint32_t crc;
>  	struct ubifs_ch *ch = node;
>  	unsigned long long sqnum = next_sqnum(c);
> 
> @@ -390,8 +401,7 @@ void ubifs_prepare_node(struct ubifs_info *c, void *node, int len, int pad)
>  	ch->group_type = UBIFS_NO_NODE_GROUP;
>  	ch->sqnum = cpu_to_le64(sqnum);
>  	ch->padding[0] = ch->padding[1] = 0;
> -	crc = crc32(UBIFS_CRC32_INIT, node + 8, len - 8);
> -	ch->crc = cpu_to_le32(crc);
> +	ubifs_set_datanode_crc(node);

But ubifs_prepare_node() is generic and works for any node type, not
just data nodes, which means that using 'datanode' in the name is not a
good idea.

-- 
Best Regards,
Artem Bityutskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-mtd/attachments/20120323/11dee7f8/attachment.sig>


More information about the linux-mtd mailing list