eCryptfs: track header bytes rather than extents

Remove internal references to header extents; just keep track of header bytes
instead.  Headers can easily span multiple pages with the recent persistent
file changes.

Signed-off-by: Michael Halcrow <mhalcrow@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Michael Halcrow
2008-02-06 01:38:32 -08:00
committed by Linus Torvalds
parent 7896b63182
commit cc11beffdf
5 changed files with 51 additions and 84 deletions

View File

@@ -100,13 +100,14 @@ static void set_header_info(char *page_virt,
struct ecryptfs_crypt_stat *crypt_stat)
{
size_t written;
int save_num_header_extents_at_front =
crypt_stat->num_header_extents_at_front;
size_t save_num_header_bytes_at_front =
crypt_stat->num_header_bytes_at_front;
crypt_stat->num_header_extents_at_front = 1;
crypt_stat->num_header_bytes_at_front =
ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE;
ecryptfs_write_header_metadata(page_virt + 20, crypt_stat, &written);
crypt_stat->num_header_extents_at_front =
save_num_header_extents_at_front;
crypt_stat->num_header_bytes_at_front =
save_num_header_bytes_at_front;
}
/**
@@ -132,8 +133,11 @@ ecryptfs_copy_up_encrypted_with_header(struct page *page,
loff_t view_extent_num = ((((loff_t)page->index)
* num_extents_per_page)
+ extent_num_in_page);
size_t num_header_extents_at_front =
(crypt_stat->num_header_bytes_at_front
/ crypt_stat->extent_size);
if (view_extent_num < crypt_stat->num_header_extents_at_front) {
if (view_extent_num < num_header_extents_at_front) {
/* This is a header extent */
char *page_virt;
@@ -155,9 +159,8 @@ ecryptfs_copy_up_encrypted_with_header(struct page *page,
} else {
/* This is an encrypted data extent */
loff_t lower_offset =
((view_extent_num -
crypt_stat->num_header_extents_at_front)
* crypt_stat->extent_size);
((view_extent_num * crypt_stat->extent_size)
- crypt_stat->num_header_bytes_at_front);
rc = ecryptfs_read_lower_page_segment(
page, (lower_offset >> PAGE_CACHE_SHIFT),