These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / hpfs / file.c
index 6d8cfe9..d3bcdd9 100644 (file)
@@ -83,6 +83,11 @@ static int hpfs_get_block(struct inode *inode, sector_t iblock, struct buffer_he
        if (s) {
                if (bh_result->b_size >> 9 < n_secs)
                        n_secs = bh_result->b_size >> 9;
+               n_secs = hpfs_search_hotfix_map_for_range(inode->i_sb, s, n_secs);
+               if (unlikely(!n_secs)) {
+                       s = hpfs_search_hotfix_map(inode->i_sb, s);
+                       n_secs = 1;
+               }
                map_bh(bh_result, inode->i_sb, s);
                bh_result->b_size = n_secs << 9;
                goto ret_0;
@@ -101,7 +106,7 @@ static int hpfs_get_block(struct inode *inode, sector_t iblock, struct buffer_he
        inode->i_blocks++;
        hpfs_i(inode)->mmu_private += 512;
        set_buffer_new(bh_result);
-       map_bh(bh_result, inode->i_sb, s);
+       map_bh(bh_result, inode->i_sb, hpfs_search_hotfix_map(inode->i_sb, s));
        ret_0:
        r = 0;
        ret_r:
@@ -181,7 +186,7 @@ static int hpfs_write_end(struct file *file, struct address_space *mapping,
 
 static sector_t _hpfs_bmap(struct address_space *mapping, sector_t block)
 {
-       return generic_block_bmap(mapping,block,hpfs_get_block);
+       return generic_block_bmap(mapping, block, hpfs_get_block);
 }
 
 const struct address_space_operations hpfs_aops = {
@@ -203,6 +208,7 @@ const struct file_operations hpfs_file_ops =
        .release        = hpfs_file_release,
        .fsync          = hpfs_file_fsync,
        .splice_read    = generic_file_splice_read,
+       .unlocked_ioctl = hpfs_ioctl,
 };
 
 const struct inode_operations hpfs_file_iops =