]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
vboxsf: Convert vboxsf_read_folio() to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 30 May 2024 20:21:06 +0000 (21:21 +0100)
committerChristian Brauner <brauner@kernel.org>
Fri, 31 May 2024 10:31:42 +0000 (12:31 +0200)
Remove conversion to a page and use folio APIs throughout.  This includes
a removal of setting the error flag as nobody checks the error flag on
vboxsf folios.  This does not include large folio support as we would
have to map each page individually.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/r/20240530202110.2653630-15-willy@infradead.org
Tested-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/vboxsf/file.c

index 118dedef8ebe8d4c8825ee1fff4e5b0a9ad9ff62..fdb4da24d6620f40691a5dfca438743b6ad1a793 100644 (file)
@@ -228,26 +228,19 @@ const struct inode_operations vboxsf_reg_iops = {
 
 static int vboxsf_read_folio(struct file *file, struct folio *folio)
 {
-       struct page *page = &folio->page;
        struct vboxsf_handle *sf_handle = file->private_data;
-       loff_t off = page_offset(page);
+       loff_t off = folio_pos(folio);
        u32 nread = PAGE_SIZE;
        u8 *buf;
        int err;
 
-       buf = kmap(page);
+       buf = kmap_local_folio(folio, 0);
 
        err = vboxsf_read(sf_handle->root, sf_handle->handle, off, &nread, buf);
-       if (err == 0) {
-               memset(&buf[nread], 0, PAGE_SIZE - nread);
-               flush_dcache_page(page);
-               SetPageUptodate(page);
-       } else {
-               SetPageError(page);
-       }
+       buf = folio_zero_tail(folio, nread, buf + nread);
 
-       kunmap(page);
-       unlock_page(page);
+       kunmap_local(buf);
+       folio_end_read(folio, err == 0);
        return err;
 }
 
@@ -295,7 +288,6 @@ static int vboxsf_writepage(struct page *page, struct writeback_control *wbc)
        kref_put(&sf_handle->refcount, vboxsf_handle_release);
 
        if (err == 0) {
-               ClearPageError(page);
                /* mtime changed */
                sf_i->force_restat = 1;
        } else {