summaryrefslogtreecommitdiffstats
path: root/fs/ext4/inline.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/inline.c')
-rw-r--r--fs/ext4/inline.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
index 320ff6fe5d8c..01274b1e7d40 100644
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -747,6 +747,30 @@ out:
747 return copied; 747 return copied;
748} 748}
749 749
750struct buffer_head *
751ext4_journalled_write_inline_data(struct inode *inode,
752 unsigned len,
753 struct page *page)
754{
755 int ret;
756 void *kaddr;
757 struct ext4_iloc iloc;
758
759 ret = ext4_get_inode_loc(inode, &iloc);
760 if (ret) {
761 ext4_std_error(inode->i_sb, ret);
762 return NULL;
763 }
764
765 down_write(&EXT4_I(inode)->xattr_sem);
766 kaddr = kmap_atomic(page);
767 ext4_write_inline_data(inode, &iloc, kaddr, 0, len);
768 kunmap_atomic(kaddr);
769 up_write(&EXT4_I(inode)->xattr_sem);
770
771 return iloc.bh;
772}
773
750 774
751int ext4_destroy_inline_data(handle_t *handle, struct inode *inode) 775int ext4_destroy_inline_data(handle_t *handle, struct inode *inode)
752{ 776{