Merge tag 'gfs2-v6.4-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
[platform/kernel/linux-rpi.git] / fs / gfs2 / aops.c
index 1c407eb..ae49256 100644 (file)
@@ -432,10 +432,10 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page)
        if (error)
                return error;
 
-       kaddr = kmap_atomic(page);
+       kaddr = kmap_local_page(page);
        memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode), dsize);
        memset(kaddr + dsize, 0, PAGE_SIZE - dsize);
-       kunmap_atomic(kaddr);
+       kunmap_local(kaddr);
        flush_dcache_page(page);
        brelse(dibh);
        SetPageUptodate(page);
@@ -489,18 +489,18 @@ int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
        unsigned copied = 0;
        unsigned amt;
        struct page *page;
-       void *p;
 
        do {
+               page = read_cache_page(mapping, index, gfs2_read_folio, NULL);
+               if (IS_ERR(page)) {
+                       if (PTR_ERR(page) == -EINTR)
+                               continue;
+                       return PTR_ERR(page);
+               }
                amt = size - copied;
                if (offset + size > PAGE_SIZE)
                        amt = PAGE_SIZE - offset;
-               page = read_cache_page(mapping, index, gfs2_read_folio, NULL);
-               if (IS_ERR(page))
-                       return PTR_ERR(page);
-               p = kmap_atomic(page);
-               memcpy(buf + copied, p + offset, amt);
-               kunmap_atomic(p);
+               memcpy_from_page(buf + copied, page, offset, amt);
                put_page(page);
                copied += amt;
                index++;
@@ -751,7 +751,6 @@ static const struct address_space_operations gfs2_aops = {
        .release_folio = iomap_release_folio,
        .invalidate_folio = iomap_invalidate_folio,
        .bmap = gfs2_bmap,
-       .direct_IO = noop_direct_IO,
        .migrate_folio = filemap_migrate_folio,
        .is_partially_uptodate = iomap_is_partially_uptodate,
        .error_remove_page = generic_error_remove_page,