diff options
author | Tahsin Erdogan <tahsin@google.com> | 2017-06-22 18:42:09 +0300 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-06-22 18:42:09 +0300 |
commit | 30a7eb970c3aae6f1b74b2edea896fdca1cbea38 (patch) | |
tree | 28f27a320e3f0db679e8629ea201c053c871c159 /fs/ext4/xattr.h | |
parent | 02749a4c20827649859bf7e2435f1b238c24f935 (diff) | |
download | linux-30a7eb970c3aae6f1b74b2edea896fdca1cbea38.tar.xz |
ext4: cleanup transaction restarts during inode deletion
During inode deletion, the number of journal credits that will be
needed is hard to determine. For that reason we have journal
extend/restart calls in several places. Whenever a transaction is
restarted, filesystem must be in a consistent state because there is
no atomicity guarantee beyond a restart call.
Add ext4_xattr_ensure_credits() helper function which takes care of
journal extend/restart logic. It also handles getting jbd2 write
access and dirty metadata calls. This function is called at every
iteration of handling an ea_inode reference.
Signed-off-by: Tahsin Erdogan <tahsin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/xattr.h')
-rw-r--r-- | fs/ext4/xattr.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h index adf761518a73..b2005a2716d9 100644 --- a/fs/ext4/xattr.h +++ b/fs/ext4/xattr.h @@ -169,7 +169,8 @@ extern int ext4_xattr_set_credits(struct inode *inode, size_t value_len); extern int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino); extern int ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, - struct ext4_xattr_inode_array **array); + struct ext4_xattr_inode_array **array, + int extra_credits); extern void ext4_xattr_inode_array_free(struct ext4_xattr_inode_array *array); extern int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, |