]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/jffs2/fs.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
[linux-2.6-omap-h63xx.git] / fs / jffs2 / fs.c
index 72d9909d95ff360e095b34a3b80320082c4ec1f2..1d3b7a9fc828e92dcab7923a8808673695ec2d72 100644 (file)
@@ -1,14 +1,12 @@
 /*
  * JFFS2 -- Journalling Flash File System, Version 2.
  *
- * Copyright (C) 2001-2003 Red Hat, Inc.
+ * Copyright © 2001-2007 Red Hat, Inc.
  *
  * Created by David Woodhouse <dwmw2@infradead.org>
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: fs.c,v 1.66 2005/09/27 13:17:29 dedekind Exp $
- *
  */
 
 #include <linux/capability.h>
@@ -277,13 +275,13 @@ void jffs2_read_inode (struct inode *inode)
 
                for (fd=f->dents; fd; fd = fd->next) {
                        if (fd->type == DT_DIR && fd->ino)
-                               inode->i_nlink++;
+                               inc_nlink(inode);
                }
                /* and '..' */
-               inode->i_nlink++;
+               inc_nlink(inode);
                /* Root dir gets i_nlink 3 for some reason */
                if (inode->i_ino == 1)
-                       inode->i_nlink++;
+                       inc_nlink(inode);
 
                inode->i_op = &jffs2_dir_inode_operations;
                inode->i_fop = &jffs2_dir_operations;
@@ -502,12 +500,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
        if (ret)
                return ret;
 
-       c->inocache_list = kmalloc(INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *), GFP_KERNEL);
+       c->inocache_list = kcalloc(INOCACHE_HASHSIZE, sizeof(struct jffs2_inode_cache *), GFP_KERNEL);
        if (!c->inocache_list) {
                ret = -ENOMEM;
                goto out_wbuf;
        }
-       memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *));
 
        jffs2_init_xattr_subsystem(c);
 
@@ -673,6 +670,13 @@ static int jffs2_flash_setup(struct jffs2_sb_info *c) {
                        return ret;
        }
 
+       /* and an UBI volume */
+       if (jffs2_ubivol(c)) {
+               ret = jffs2_ubivol_setup(c);
+               if (ret)
+                       return ret;
+       }
+
        return ret;
 }
 
@@ -691,4 +695,9 @@ void jffs2_flash_cleanup(struct jffs2_sb_info *c) {
        if (jffs2_nor_wbuf_flash(c)) {
                jffs2_nor_wbuf_flash_cleanup(c);
        }
+
+       /* and an UBI volume */
+       if (jffs2_ubivol(c)) {
+               jffs2_ubivol_cleanup(c);
+       }
 }