0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <linux/fs.h>
0010 #include <linux/pagemap.h>
0011
0012 #include "vxfs.h"
0013 #include "vxfs_extern.h"
0014 #include "vxfs_inode.h"
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 static int vxfs_immed_read_folio(struct file *fp, struct folio *folio)
0032 {
0033 struct vxfs_inode_info *vip = VXFS_INO(folio->mapping->host);
0034 void *src = vip->vii_immed.vi_immed + folio_pos(folio);
0035 unsigned long i;
0036
0037 for (i = 0; i < folio_nr_pages(folio); i++) {
0038 memcpy_to_page(folio_page(folio, i), 0, src, PAGE_SIZE);
0039 src += PAGE_SIZE;
0040 }
0041
0042 folio_mark_uptodate(folio);
0043 folio_unlock(folio);
0044
0045 return 0;
0046 }
0047
0048
0049
0050
0051 const struct address_space_operations vxfs_immed_aops = {
0052 .read_folio = vxfs_immed_read_folio,
0053 };