Merge "ext4: provide ext4_issue_zeroout()"
This commit is contained in:
commit
c083bb83fe
4 changed files with 23 additions and 15 deletions
|
@ -389,14 +389,12 @@ int ext4_decrypt(struct page *page)
|
||||||
page->index, page, page, GFP_NOFS);
|
page->index, page, page, GFP_NOFS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ext4_encrypted_zeroout(struct inode *inode, struct ext4_extent *ex)
|
int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,
|
||||||
|
ext4_fsblk_t pblk, ext4_lblk_t len)
|
||||||
{
|
{
|
||||||
struct ext4_crypto_ctx *ctx;
|
struct ext4_crypto_ctx *ctx;
|
||||||
struct page *ciphertext_page = NULL;
|
struct page *ciphertext_page = NULL;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
ext4_lblk_t lblk = le32_to_cpu(ex->ee_block);
|
|
||||||
ext4_fsblk_t pblk = ext4_ext_pblock(ex);
|
|
||||||
unsigned int len = ext4_ext_get_actual_len(ex);
|
|
||||||
int ret, err = 0;
|
int ret, err = 0;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -2271,7 +2271,8 @@ struct page *ext4_encrypt(struct inode *inode,
|
||||||
struct page *plaintext_page,
|
struct page *plaintext_page,
|
||||||
gfp_t gfp_flags);
|
gfp_t gfp_flags);
|
||||||
int ext4_decrypt(struct page *page);
|
int ext4_decrypt(struct page *page);
|
||||||
int ext4_encrypted_zeroout(struct inode *inode, struct ext4_extent *ex);
|
int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,
|
||||||
|
ext4_fsblk_t pblk, ext4_lblk_t len);
|
||||||
extern const struct dentry_operations ext4_encrypted_d_ops;
|
extern const struct dentry_operations ext4_encrypted_d_ops;
|
||||||
|
|
||||||
#ifdef CONFIG_EXT4_FS_ENCRYPTION
|
#ifdef CONFIG_EXT4_FS_ENCRYPTION
|
||||||
|
@ -2539,6 +2540,8 @@ extern int ext4_filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
|
||||||
extern qsize_t *ext4_get_reserved_space(struct inode *inode);
|
extern qsize_t *ext4_get_reserved_space(struct inode *inode);
|
||||||
extern void ext4_da_update_reserve_space(struct inode *inode,
|
extern void ext4_da_update_reserve_space(struct inode *inode,
|
||||||
int used, int quota_claim);
|
int used, int quota_claim);
|
||||||
|
extern int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk,
|
||||||
|
ext4_fsblk_t pblk, ext4_lblk_t len);
|
||||||
|
|
||||||
/* indirect.c */
|
/* indirect.c */
|
||||||
extern int ext4_ind_map_blocks(handle_t *handle, struct inode *inode,
|
extern int ext4_ind_map_blocks(handle_t *handle, struct inode *inode,
|
||||||
|
|
|
@ -3127,19 +3127,11 @@ static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex)
|
||||||
{
|
{
|
||||||
ext4_fsblk_t ee_pblock;
|
ext4_fsblk_t ee_pblock;
|
||||||
unsigned int ee_len;
|
unsigned int ee_len;
|
||||||
int ret;
|
|
||||||
|
|
||||||
ee_len = ext4_ext_get_actual_len(ex);
|
ee_len = ext4_ext_get_actual_len(ex);
|
||||||
ee_pblock = ext4_ext_pblock(ex);
|
ee_pblock = ext4_ext_pblock(ex);
|
||||||
|
return ext4_issue_zeroout(inode, le32_to_cpu(ex->ee_block), ee_pblock,
|
||||||
if (ext4_encrypted_inode(inode))
|
ee_len);
|
||||||
return ext4_encrypted_zeroout(inode, ex);
|
|
||||||
|
|
||||||
ret = sb_issue_zeroout(inode->i_sb, ee_pblock, ee_len, GFP_NOFS);
|
|
||||||
if (ret > 0)
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -390,6 +390,21 @@ static int __check_block_validity(struct inode *inode, const char *func,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
|
||||||
|
ext4_lblk_t len)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (ext4_encrypted_inode(inode))
|
||||||
|
return ext4_encrypted_zeroout(inode, lblk, pblk, len);
|
||||||
|
|
||||||
|
ret = sb_issue_zeroout(inode->i_sb, pblk, len, GFP_NOFS);
|
||||||
|
if (ret > 0)
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#define check_block_validity(inode, map) \
|
#define check_block_validity(inode, map) \
|
||||||
__check_block_validity((inode), __func__, __LINE__, (map))
|
__check_block_validity((inode), __func__, __LINE__, (map))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue