From 47463cb75367a760fc25dbfff255e4049e199606 Mon Sep 17 00:00:00 2001 From: Vyacheslav Dubeyko Date: Thu, 20 Dec 2012 15:05:28 -0800 Subject: [PATCH] --- yaml --- r: 347879 b: refs/heads/master c: 81cc7fad552bc9e4fa8c1f25becbecaaa1d41b67 h: refs/heads/master i: 347877: eca449a97a37445f3615dc58b19f85678db04a27 347875: 8acf75d68e8a64039dafb68b625a1f72127ecd75 347871: fd68a1191ac3553dfe9f55b26c4427474a2d27f9 v: v3 --- [refs] | 2 +- trunk/fs/hfsplus/btree.c | 5 +++-- trunk/fs/hfsplus/hfsplus_fs.h | 2 +- trunk/fs/hfsplus/super.c | 10 ++++++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 473eb7243c88..2c118d93b3f0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1b243fd39bd605cdfc482bba4e56b0cb34b28f27 +refs/heads/master: 81cc7fad552bc9e4fa8c1f25becbecaaa1d41b67 diff --git a/trunk/fs/hfsplus/btree.c b/trunk/fs/hfsplus/btree.c index 21023d9f8ff3..685d07d0ed18 100644 --- a/trunk/fs/hfsplus/btree.c +++ b/trunk/fs/hfsplus/btree.c @@ -159,7 +159,7 @@ void hfs_btree_close(struct hfs_btree *tree) kfree(tree); } -void hfs_btree_write(struct hfs_btree *tree) +int hfs_btree_write(struct hfs_btree *tree) { struct hfs_btree_header_rec *head; struct hfs_bnode *node; @@ -168,7 +168,7 @@ void hfs_btree_write(struct hfs_btree *tree) node = hfs_bnode_find(tree, 0); if (IS_ERR(node)) /* panic? */ - return; + return -EIO; /* Load the header */ page = node->page[0]; head = (struct hfs_btree_header_rec *)(kmap(page) + @@ -186,6 +186,7 @@ void hfs_btree_write(struct hfs_btree *tree) kunmap(page); set_page_dirty(page); hfs_bnode_put(node); + return 0; } static struct hfs_bnode *hfs_bmap_new_bmap(struct hfs_bnode *prev, u32 idx) diff --git a/trunk/fs/hfsplus/hfsplus_fs.h b/trunk/fs/hfsplus/hfsplus_fs.h index c571de224b15..a6da86b1b4c1 100644 --- a/trunk/fs/hfsplus/hfsplus_fs.h +++ b/trunk/fs/hfsplus/hfsplus_fs.h @@ -335,7 +335,7 @@ int hfsplus_block_free(struct super_block *, u32, u32); /* btree.c */ struct hfs_btree *hfs_btree_open(struct super_block *, u32); void hfs_btree_close(struct hfs_btree *); -void hfs_btree_write(struct hfs_btree *); +int hfs_btree_write(struct hfs_btree *); struct hfs_bnode *hfs_bmap_alloc(struct hfs_btree *); void hfs_bmap_free(struct hfs_bnode *); diff --git a/trunk/fs/hfsplus/super.c b/trunk/fs/hfsplus/super.c index 811a84d2d964..2036f585b094 100644 --- a/trunk/fs/hfsplus/super.c +++ b/trunk/fs/hfsplus/super.c @@ -127,8 +127,14 @@ static int hfsplus_system_write_inode(struct inode *inode) hfsplus_mark_mdb_dirty(inode->i_sb); } hfsplus_inode_write_fork(inode, fork); - if (tree) - hfs_btree_write(tree); + if (tree) { + int err = hfs_btree_write(tree); + if (err) { + printk(KERN_ERR "hfs: b-tree write err: %d, ino %lu\n", + err, inode->i_ino); + return err; + } + } return 0; }