]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/ntfs/file.c
ntfs: remove the second argument of k[un]map_atomic()
[mirror_ubuntu-artful-kernel.git] / fs / ntfs / file.c
index b59f5ac26bef85c080b95368c3dfe317921165d1..8639169221c7aed21c0bd600ab4ef1a0d8102cb1 100644 (file)
@@ -704,7 +704,7 @@ map_buffer_cached:
                                u8 *kaddr;
                                unsigned pofs;
                                        
-                               kaddr = kmap_atomic(page, KM_USER0);
+                               kaddr = kmap_atomic(page);
                                if (bh_pos < pos) {
                                        pofs = bh_pos & ~PAGE_CACHE_MASK;
                                        memset(kaddr + pofs, 0, pos - bh_pos);
@@ -713,7 +713,7 @@ map_buffer_cached:
                                        pofs = end & ~PAGE_CACHE_MASK;
                                        memset(kaddr + pofs, 0, bh_end - end);
                                }
-                               kunmap_atomic(kaddr, KM_USER0);
+                               kunmap_atomic(kaddr);
                                flush_dcache_page(page);
                        }
                        continue;
@@ -1287,9 +1287,9 @@ static inline size_t ntfs_copy_from_user(struct page **pages,
                len = PAGE_CACHE_SIZE - ofs;
                if (len > bytes)
                        len = bytes;
-               addr = kmap_atomic(*pages, KM_USER0);
+               addr = kmap_atomic(*pages);
                left = __copy_from_user_inatomic(addr + ofs, buf, len);
-               kunmap_atomic(addr, KM_USER0);
+               kunmap_atomic(addr);
                if (unlikely(left)) {
                        /* Do it the slow way. */
                        addr = kmap(*pages);
@@ -1401,10 +1401,10 @@ static inline size_t ntfs_copy_from_user_iovec(struct page **pages,
                len = PAGE_CACHE_SIZE - ofs;
                if (len > bytes)
                        len = bytes;
-               addr = kmap_atomic(*pages, KM_USER0);
+               addr = kmap_atomic(*pages);
                copied = __ntfs_copy_from_user_iovec_inatomic(addr + ofs,
                                *iov, *iov_ofs, len);
-               kunmap_atomic(addr, KM_USER0);
+               kunmap_atomic(addr);
                if (unlikely(copied != len)) {
                        /* Do it the slow way. */
                        addr = kmap(*pages);
@@ -1691,7 +1691,7 @@ static int ntfs_commit_pages_after_write(struct page **pages,
        BUG_ON(end > le32_to_cpu(a->length) -
                        le16_to_cpu(a->data.resident.value_offset));
        kattr = (u8*)a + le16_to_cpu(a->data.resident.value_offset);
-       kaddr = kmap_atomic(page, KM_USER0);
+       kaddr = kmap_atomic(page);
        /* Copy the received data from the page to the mft record. */
        memcpy(kattr + pos, kaddr + pos, bytes);
        /* Update the attribute length if necessary. */
@@ -1713,7 +1713,7 @@ static int ntfs_commit_pages_after_write(struct page **pages,
                flush_dcache_page(page);
                SetPageUptodate(page);
        }
-       kunmap_atomic(kaddr, KM_USER0);
+       kunmap_atomic(kaddr);
        /* Update initialized_size/i_size if necessary. */
        read_lock_irqsave(&ni->size_lock, flags);
        initialized_size = ni->initialized_size;
@@ -2152,12 +2152,19 @@ static ssize_t ntfs_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
  * with this inode but since we have no simple way of getting to them we ignore
  * this problem for now.
  */
-static int ntfs_file_fsync(struct file *filp, int datasync)
+static int ntfs_file_fsync(struct file *filp, loff_t start, loff_t end,
+                          int datasync)
 {
        struct inode *vi = filp->f_mapping->host;
        int err, ret = 0;
 
        ntfs_debug("Entering for inode 0x%lx.", vi->i_ino);
+
+       err = filemap_write_and_wait_range(vi->i_mapping, start, end);
+       if (err)
+               return err;
+       mutex_lock(&vi->i_mutex);
+
        BUG_ON(S_ISDIR(vi->i_mode));
        if (!datasync || !NInoNonResident(NTFS_I(vi)))
                ret = __ntfs_write_inode(vi, 1);
@@ -2175,6 +2182,7 @@ static int ntfs_file_fsync(struct file *filp, int datasync)
        else
                ntfs_warning(vi->i_sb, "Failed to f%ssync inode 0x%lx.  Error "
                                "%u.", datasync ? "data" : "", vi->i_ino, -ret);
+       mutex_unlock(&vi->i_mutex);
        return ret;
 }