Merge tag 'upstream-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw...
[linux-2.6-block.git] / fs / jffs2 / fs.c
index 8a20ddd25f2da4b2b2cf6ad229097682dad006f0..ab8cdd9e932590ea484f2e45b927e26f244ad2f7 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/sched.h>
 #include <linux/cred.h>
 #include <linux/fs.h>
+#include <linux/fs_context.h>
 #include <linux/list.h>
 #include <linux/mtd/mtd.h>
 #include <linux/pagemap.h>
@@ -184,7 +185,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr)
        if (ivalid & ATTR_SIZE && inode->i_size > iattr->ia_size) {
                truncate_setsize(inode, iattr->ia_size);
                inode->i_blocks = (inode->i_size + 511) >> 9;
-       }       
+       }
 
        return 0;
 }
@@ -391,7 +392,7 @@ void jffs2_dirty_inode(struct inode *inode, int flags)
        jffs2_do_setattr(inode, &iattr);
 }
 
-int jffs2_do_remount_fs(struct super_block *sb, int *flags, char *data)
+int jffs2_do_remount_fs(struct super_block *sb, struct fs_context *fc)
 {
        struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
 
@@ -409,10 +410,10 @@ int jffs2_do_remount_fs(struct super_block *sb, int *flags, char *data)
                mutex_unlock(&c->alloc_sem);
        }
 
-       if (!(*flags & SB_RDONLY))
+       if (!(fc->sb_flags & SB_RDONLY))
                jffs2_start_garbage_collect_thread(c);
 
-       *flags |= SB_NOATIME;
+       fc->sb_flags |= SB_NOATIME;
        return 0;
 }
 
@@ -509,7 +510,7 @@ static int calculate_inocache_hashsize(uint32_t flash_size)
        return hashsize;
 }
 
-int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
+int jffs2_do_fill_super(struct super_block *sb, struct fs_context *fc)
 {
        struct jffs2_sb_info *c;
        struct inode *root_i;
@@ -524,11 +525,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
 
 #ifndef CONFIG_JFFS2_FS_WRITEBUFFER
        if (c->mtd->type == MTD_NANDFLASH) {
-               pr_err("Cannot operate on NAND flash unless jffs2 NAND support is compiled in\n");
+               errorf(fc, "Cannot operate on NAND flash unless jffs2 NAND support is compiled in");
                return -EINVAL;
        }
        if (c->mtd->type == MTD_DATAFLASH) {
-               pr_err("Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in\n");
+               errorf(fc, "Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in");
                return -EINVAL;
        }
 #endif
@@ -542,12 +543,12 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
         */
        if ((c->sector_size * blocks) != c->flash_size) {
                c->flash_size = c->sector_size * blocks;
-               pr_info("Flash size not aligned to erasesize, reducing to %dKiB\n",
-                       c->flash_size / 1024);
+               infof(fc, "Flash size not aligned to erasesize, reducing to %dKiB",
+                     c->flash_size / 1024);
        }
 
        if (c->flash_size < 5*c->sector_size) {
-               pr_err("Too few erase blocks (%d)\n",
+               errorf(fc, "Too few erase blocks (%d)",
                       c->flash_size / c->sector_size);
                return -EINVAL;
        }
@@ -590,6 +591,9 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_blocksize = PAGE_SIZE;
        sb->s_blocksize_bits = PAGE_SHIFT;
        sb->s_magic = JFFS2_SUPER_MAGIC;
+       sb->s_time_min = 0;
+       sb->s_time_max = U32_MAX;
+
        if (!sb_rdonly(sb))
                jffs2_start_garbage_collect_thread(c);
        return 0;
@@ -678,33 +682,6 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
        return JFFS2_INODE_INFO(inode);
 }
 
-unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c,
-                                  struct jffs2_inode_info *f,
-                                  unsigned long offset,
-                                  unsigned long *priv)
-{
-       struct inode *inode = OFNI_EDONI_2SFFJ(f);
-       struct page *pg;
-
-       pg = read_cache_page(inode->i_mapping, offset >> PAGE_SHIFT,
-                            jffs2_do_readpage_unlock, inode);
-       if (IS_ERR(pg))
-               return (void *)pg;
-
-       *priv = (unsigned long)pg;
-       return kmap(pg);
-}
-
-void jffs2_gc_release_page(struct jffs2_sb_info *c,
-                          unsigned char *ptr,
-                          unsigned long *priv)
-{
-       struct page *pg = (void *)*priv;
-
-       kunmap(pg);
-       put_page(pg);
-}
-
 static int jffs2_flash_setup(struct jffs2_sb_info *c) {
        int ret = 0;