patch-2.4.19 linux-2.4.19/fs/jffs2/gc.c
Next file: linux-2.4.19/fs/jffs2/nodelist.c
Previous file: linux-2.4.19/fs/jffs2/file.c
Back to the patch index
Back to the overall index
- Lines: 70
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/fs/jffs2/gc.c
- Orig date:
Thu Oct 4 15:13:18 2001
diff -urN linux-2.4.18/fs/jffs2/gc.c linux-2.4.19/fs/jffs2/gc.c
@@ -31,7 +31,7 @@
* provisions above, a recipient may use your version of this file
* under either the RHEPL or the GPL.
*
- * $Id: gc.c,v 1.52 2001/09/19 21:53:47 dwmw2 Exp $
+ * $Id: gc.c,v 1.52.2.3 2002/05/12 17:27:08 dwmw2 Exp $
*
*/
@@ -266,15 +266,14 @@
__u32 alloclen, phys_ofs;
int ret;
- if ((inode->i_mode & S_IFMT) == S_IFBLK ||
- (inode->i_mode & S_IFMT) == S_IFCHR) {
+ if (S_ISBLK(inode->i_mode) || S_ISCHR(inode->i_mode)) {
/* For these, we don't actually need to read the old node */
dev = (MAJOR(to_kdev_t(inode->i_rdev)) << 8) |
MINOR(to_kdev_t(inode->i_rdev));
mdata = (char *)&dev;
mdatalen = sizeof(dev);
D1(printk(KERN_DEBUG "jffs2_garbage_collect_metadata(): Writing %d bytes of kdev_t\n", mdatalen));
- } else if ((inode->i_mode & S_IFMT) == S_IFLNK) {
+ } else if (S_ISLNK(inode->i_mode)) {
mdatalen = fn->size;
mdata = kmalloc(fn->size, GFP_KERNEL);
if (!mdata) {
@@ -331,7 +330,7 @@
jffs2_free_full_dnode(fn);
f->metadata = new_fn;
out:
- if ((inode->i_mode & S_IFMT) == S_IFLNK)
+ if (S_ISLNK(inode->i_mode))
kfree(mdata);
return ret;
}
@@ -466,8 +465,8 @@
ri.ino = inode->i_ino;
ri.version = ++f->highest_version;
ri.offset = start;
- ri.csize = end - start;
- ri.dsize = 0;
+ ri.dsize = end - start;
+ ri.csize = 0;
ri.compr = JFFS2_COMPR_ZERO;
}
ri.mode = inode->i_mode;
@@ -498,9 +497,21 @@
jffs2_mark_node_obsolete(c, f->metadata->raw);
jffs2_free_full_dnode(f->metadata);
f->metadata = NULL;
- return 0;
}
+ return 0;
}
+
+ /*
+ * We should only get here in the case where the node we are
+ * replacing had more than one frag, so we kept the same version
+ * number as before. (Except in case of error -- see 'goto fill;'
+ * above.)
+ */
+ D1(if(unlikely(fn->frags <= 1)) {
+ printk(KERN_WARNING "jffs2_garbage_collect_hole: Replacing fn with %d frag(s) but new ver %d != highest_version %d of ino #%d\n",
+ fn->frags, ri.version, f->highest_version, ri.ino);
+ });
+
for (frag = f->fraglist; frag; frag = frag->next) {
if (frag->ofs > fn->size + fn->ofs)
break;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)