Merge tag 'f2fs-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
[cascardo/linux.git] / fs / f2fs / file.c
index 0e56db2..1cae864 100644 (file)
@@ -212,11 +212,15 @@ static void truncate_partial_data_page(struct inode *inode, u64 from)
        if (!offset)
                return;
 
-       page = find_data_page(inode, from >> PAGE_CACHE_SHIFT);
+       page = find_data_page(inode, from >> PAGE_CACHE_SHIFT, false);
        if (IS_ERR(page))
                return;
 
        lock_page(page);
+       if (page->mapping != inode->i_mapping) {
+               f2fs_put_page(page, 1);
+               return;
+       }
        wait_on_page_writeback(page);
        zero_user(page, offset, PAGE_CACHE_SIZE - offset);
        set_page_dirty(page);
@@ -578,7 +582,7 @@ long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
        {
                unsigned int oldflags;
 
-               ret = mnt_want_write(filp->f_path.mnt);
+               ret = mnt_want_write_file(filp);
                if (ret)
                        return ret;
 
@@ -615,7 +619,7 @@ long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                inode->i_ctime = CURRENT_TIME;
                mark_inode_dirty(inode);
 out:
-               mnt_drop_write(filp->f_path.mnt);
+               mnt_drop_write_file(filp);
                return ret;
        }
        default: