patch-2.4.18 linux/fs/jffs2/write.c
Next file: linux/fs/minix/bitmap.c
Previous file: linux/fs/jffs2/readinode.c
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Mon Jan 7 14:08:22 2002
- Orig file:
linux.orig/fs/jffs2/write.c
- Orig date:
Mon Feb 18 20:18:40 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/fs/jffs2/write.c linux/fs/jffs2/write.c
@@ -31,7 +31,7 @@
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
*
- * $Id: write.c,v 1.28 2001/05/01 16:25:25 dwmw2 Exp $
+ * $Id: write.c,v 1.30 2001/12/30 16:01:11 dwmw2 Exp $
*
*/
@@ -207,8 +207,6 @@
}
raw->flash_offset = flash_ofs;
raw->totlen = PAD(ri->totlen);
- raw->next_in_ino = f->inocache->nodes;
- f->inocache->nodes = raw;
raw->next_phys = NULL;
fn->ofs = ri->offset;
@@ -222,6 +220,14 @@
sizeof(*ri)+datalen, flash_ofs, ret, retlen);
/* Mark the space as dirtied */
if (retlen) {
+ /* Doesn't belong to any inode */
+ raw->next_in_ino = NULL;
+
+ /* Don't change raw->size to match retlen. We may have
+ written the node header already, and only the data will
+ seem corrupted, in which case the scan would skip over
+ any node we write before the original intended end of
+ this node */
jffs2_add_physical_node_ref(c, raw, sizeof(*ri)+datalen, 1);
jffs2_mark_node_obsolete(c, raw);
} else {
@@ -237,6 +243,11 @@
}
/* Mark the space used */
jffs2_add_physical_node_ref(c, raw, retlen, 0);
+
+ /* Link into per-inode list */
+ raw->next_in_ino = f->inocache->nodes;
+ f->inocache->nodes = raw;
+
D1(printk(KERN_DEBUG "jffs2_write_dnode wrote node at 0x%08x with dsize 0x%x, csize 0x%x, node_crc 0x%08x, data_crc 0x%08x, totlen 0x%08x\n", flash_ofs, ri->dsize, ri->csize, ri->node_crc, ri->data_crc, ri->totlen));
if (writelen)
*writelen = retlen;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)