Lines Matching +full:data +full:- +full:mapping

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * decryption of the file data as it passes between the lower
8 * Copyright (C) 1997-2003 Erez Zadok
9 * Copyright (C) 2001-2003 Stony Brook University
10 * Copyright (C) 2004-2007 International Business Machines Corp.
16 #include <linux/page-flags.h>
26 * This is where we encrypt the data and pass the encrypted data to
27 * the lower filesystem. In OpenPGP-compatible mode, we operate on
30 static int ecryptfs_writepages(struct address_space *mapping, in ecryptfs_writepages() argument
36 while ((folio = writeback_iter(mapping, wbc, folio, &error))) { in ecryptfs_writepages()
41 folio->index); in ecryptfs_writepages()
43 mapping_set_error(mapping, error); in ecryptfs_writepages()
54 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) { in strip_xattr_flag()
57 crypt_stat->flags &= ~ECRYPTFS_METADATA_IN_XATTR; in strip_xattr_flag()
60 crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR; in strip_xattr_flag()
66 * Octets 0-7: Unencrypted file size (big-endian)
67 * Octets 8-15: eCryptfs special marker
68 * Octets 16-19: Flags
70 * Octets 17-18: Reserved
73 * Bits 3-8: Reserved
74 * Octets 20-23: Header extent size (big-endian)
75 * Octets 24-25: Number of header extents at front of file
76 * (big-endian)
96 / crypt_stat->extent_size); in ecryptfs_copy_up_encrypted_with_header()
100 loff_t view_extent_num = ((loff_t)folio->index in ecryptfs_copy_up_encrypted_with_header()
104 (crypt_stat->metadata_size / crypt_stat->extent_size); in ecryptfs_copy_up_encrypted_with_header()
117 page_virt, folio->mapping->host); in ecryptfs_copy_up_encrypted_with_header()
131 /* This is an encrypted data extent */ in ecryptfs_copy_up_encrypted_with_header()
133 ((view_extent_num * crypt_stat->extent_size) in ecryptfs_copy_up_encrypted_with_header()
134 - crypt_stat->metadata_size); in ecryptfs_copy_up_encrypted_with_header()
139 crypt_stat->extent_size, folio->mapping->host); in ecryptfs_copy_up_encrypted_with_header()
157 * @folio: Folio from eCryptfs inode mapping into which to stick the read data
161 * Returns zero on success; non-zero on error.
165 struct inode *inode = folio->mapping->host; in ecryptfs_read_folio()
167 &ecryptfs_inode_to_private(inode)->crypt_stat; in ecryptfs_read_folio()
170 if (!crypt_stat || !(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { in ecryptfs_read_folio()
171 err = ecryptfs_read_lower_page_segment(folio, folio->index, 0, in ecryptfs_read_folio()
173 } else if (crypt_stat->flags & ECRYPTFS_VIEW_AS_ENCRYPTED) { in ecryptfs_read_folio()
174 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) { in ecryptfs_read_folio()
188 folio->index, 0, folio_size(folio), in ecryptfs_read_folio()
206 folio->index); in ecryptfs_read_folio()
216 struct inode *inode = folio->mapping->host; in fill_zeros_to_end_of_page()
219 if ((i_size_read(inode) / PAGE_SIZE) != folio->index) in fill_zeros_to_end_of_page()
232 * @mapping: The eCryptfs object
236 * @fsdata: Pointer to return fs data (unused)
240 * Returns zero on success; non-zero otherwise
243 struct address_space *mapping, in ecryptfs_write_begin() argument
252 folio = __filemap_get_folio(mapping, index, FGP_WRITEBEGIN, in ecryptfs_write_begin()
253 mapping_gfp_mask(mapping)); in ecryptfs_write_begin()
261 &ecryptfs_inode_to_private(mapping->host)->crypt_stat; in ecryptfs_write_begin()
263 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { in ecryptfs_write_begin()
265 folio, index, 0, PAGE_SIZE, mapping->host); in ecryptfs_write_begin()
274 } else if (crypt_stat->flags & ECRYPTFS_VIEW_AS_ENCRYPTED) { in ecryptfs_write_begin()
275 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) { in ecryptfs_write_begin()
292 mapping->host); in ecryptfs_write_begin()
304 >= i_size_read(mapping->host)) { in ecryptfs_write_begin()
313 __func__, folio->index, rc); in ecryptfs_write_begin()
324 if (prev_page_end_size > i_size_read(mapping->host)) { in ecryptfs_write_begin()
325 rc = ecryptfs_truncate(file->f_path.dentry, in ecryptfs_write_begin()
338 if ((i_size_read(mapping->host) == prev_page_end_size) in ecryptfs_write_begin()
354 * Returns zero on success; non-zero on error.
363 rc = -ENOMEM; in ecryptfs_write_inode_size_to_header()
386 ecryptfs_inode_to_private(ecryptfs_inode)->lower_file->f_path.dentry; in ecryptfs_write_inode_size_to_xattr()
390 if (!(lower_inode->i_opflags & IOP_XATTR)) { in ecryptfs_write_inode_size_to_xattr()
393 rc = -ENOSYS; in ecryptfs_write_inode_size_to_xattr()
398 rc = -ENOMEM; in ecryptfs_write_inode_size_to_xattr()
422 crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; in ecryptfs_write_inode_size_to_metadata()
423 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)); in ecryptfs_write_inode_size_to_metadata()
424 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) in ecryptfs_write_inode_size_to_metadata()
433 * @mapping: The eCryptfs object
435 * @len: The length of the data (unused)
436 * @copied: The amount of data copied
441 struct address_space *mapping, in ecryptfs_write_end() argument
446 unsigned from = pos & (PAGE_SIZE - 1); in ecryptfs_write_end()
448 struct inode *ecryptfs_inode = mapping->host; in ecryptfs_write_end()
450 &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; in ecryptfs_write_end()
455 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { in ecryptfs_write_end()
503 static sector_t ecryptfs_bmap(struct address_space *mapping, sector_t block) in ecryptfs_bmap() argument
505 struct inode *lower_inode = ecryptfs_inode_to_lower(mapping->host); in ecryptfs_bmap()
520 * address_space_operations without the ->dirty_folio method was