[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More JFFS problems...

alex@xxxxxxx.se said:
>  I've suspected problems like this since Sébastien managed to have his
> changes to mkfs.jffs work even though he didn't change the offset of
> the nodes... I think the handling of partial node rewriting isn't
> working.

Sure looks screwed to me. It'll quit as soon as it's filled the buffer, 
without even looking at later nodes in the log. It should examine _every_ 
node in order, copying data from each node whose range overlaps the range 
to be read. I'll have a go at that now.

(from jffs_read_data()):

	/* Fill the buffer.  */
	while (node && (read_data < size)) {
		int r;
		if (!node->fm) {
			/* This node does not refer to real data.  */
			r = jffs_min(size - read_data,
				     node->data_size - node_offset);
			memset(&buf[read_data], 0, r);
		else if ((r = jffs_get_node_data(f, node, &buf[read_data],
						 size - read_data,
						 f->c->sb->s_dev)) < 0) {
			return r;
		read_data += r;
		node_offset = 0;
		node = node->range_next;