summaryrefslogtreecommitdiffstats
path: root/fs/ext4/inline.c
diff options
context:
space:
mode:
authorTao Ma <boyu.mt@taobao.com>2012-12-10 14:05:57 -0500
committerTheodore Ts'o <tytso@mit.edu>2012-12-10 14:05:57 -0500
commit3fdcfb668fd78ec92d9bc2daddf1d41e2a8a30bb (patch)
tree7f6a45d4815824132c0d70906e04a937a2a222bf /fs/ext4/inline.c
parentf19d5870cbf72d4cb2a8e1f749dff97af99b071e (diff)
downloadlinux-stable-3fdcfb668fd78ec92d9bc2daddf1d41e2a8a30bb.tar.gz
linux-stable-3fdcfb668fd78ec92d9bc2daddf1d41e2a8a30bb.tar.bz2
linux-stable-3fdcfb668fd78ec92d9bc2daddf1d41e2a8a30bb.zip
ext4: add journalled write support for inline data
Signed-off-by: Tao Ma <boyu.mt@taobao.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
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:
return copied;
}
+struct buffer_head *
+ext4_journalled_write_inline_data(struct inode *inode,
+ unsigned len,
+ struct page *page)
+{
+ int ret;
+ void *kaddr;
+ struct ext4_iloc iloc;
+
+ ret = ext4_get_inode_loc(inode, &iloc);
+ if (ret) {
+ ext4_std_error(inode->i_sb, ret);
+ return NULL;
+ }
+
+ down_write(&EXT4_I(inode)->xattr_sem);
+ kaddr = kmap_atomic(page);
+ ext4_write_inline_data(inode, &iloc, kaddr, 0, len);
+ kunmap_atomic(kaddr);
+ up_write(&EXT4_I(inode)->xattr_sem);
+
+ return iloc.bh;
+}
+
int ext4_destroy_inline_data(handle_t *handle, struct inode *inode)
{