Merge git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 May 2010 20:53:35 +0000 (13:53 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 May 2010 20:53:35 +0000 (13:53 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs:
  logfs: handle powerfail on NAND flash
  logfs: handle errors from get_mtd_device()
  logfs: remove unused variable
  logfs: fix sync
  logfs: fix compile failure
  logfs: initialize li->li_refcount
  logfs: commit reservations under space pressure
  logfs: survive logfs_buf_recover read errors
  logfs: Close i_ino reuse race
  logfs: fix logfs_seek_hole()
  logfs: Return -EINVAL if filesystem image doesn't match
  LogFS: Fix typo in b6349ac8
  logfs: testing the wrong variable

1  2 
fs/logfs/super.c

diff --combined fs/logfs/super.c
index d7c23ed8349a53fafb9260eb81bc8b01554aab95,2b26938519690c443ce2d674ba0c4ea2b14f257a..d651e10a1e9c1e589ed55269c0b1c9bab6488b83
@@@ -138,10 -138,14 +138,14 @@@ static int logfs_sb_set(struct super_bl
        sb->s_fs_info = super;
        sb->s_mtd = super->s_mtd;
        sb->s_bdev = super->s_bdev;
+ #ifdef CONFIG_BLOCK
        if (sb->s_bdev)
                sb->s_bdi = &bdev_get_queue(sb->s_bdev)->backing_dev_info;
+ #endif
+ #ifdef CONFIG_MTD
        if (sb->s_mtd)
                sb->s_bdi = sb->s_mtd->backing_dev_info;
+ #endif
        return 0;
  }
  
@@@ -333,27 -337,27 +337,27 @@@ static int logfs_get_sb_final(struct su
                goto fail;
  
        sb->s_root = d_alloc_root(rootdir);
 -      if (!sb->s_root)
 -              goto fail2;
 +      if (!sb->s_root) {
 +              iput(rootdir);
 +              goto fail;
 +      }
  
        super->s_erase_page = alloc_pages(GFP_KERNEL, 0);
        if (!super->s_erase_page)
 -              goto fail2;
 +              goto fail;
        memset(page_address(super->s_erase_page), 0xFF, PAGE_SIZE);
  
        /* FIXME: check for read-only mounts */
        err = logfs_make_writeable(sb);
        if (err)
 -              goto fail3;
 +              goto fail1;
  
        log_super("LogFS: Finished mounting\n");
        simple_set_mnt(mnt, sb);
        return 0;
  
 -fail3:
 +fail1:
        __free_page(super->s_erase_page);
 -fail2:
 -      iput(rootdir);
  fail:
        iput(logfs_super(sb)->s_master_inode);
        return -EIO;
@@@ -382,7 -386,7 +386,7 @@@ static struct page *find_super_block(st
        if (!first || IS_ERR(first))
                return NULL;
        last = super->s_devops->find_last_sb(sb, &super->s_sb_ofs[1]);
-       if (!last || IS_ERR(first)) {
+       if (!last || IS_ERR(last)) {
                page_cache_release(first);
                return NULL;
        }
@@@ -413,7 -417,7 +417,7 @@@ static int __logfs_read_sb(struct super
  
        page = find_super_block(sb);
        if (!page)
-               return -EIO;
+               return -EINVAL;
  
        ds = page_address(page);
        super->s_size = be64_to_cpu(ds->ds_filesystem_size);