ext3: Always set dx_node's fake_dirent explicitly.
(crossport of 1f7bebb9e911d870fa8f997ddff838e82b5715ea by Andreas Schlick <[email protected]>)
When ext4_dx_add_entry() has to split an index node, it has to ensure that name_len of dx_node's fake_dirent is also zero, because otherwise e2fsck won't recognise it as an intermediate htree node and consider the htree to be corrupted.
---
While it's a simple one liner, this took me forever to (re-)find.
kill_ext3_now++;
That is all. ;)
fs/ext3/namei.c +1 -1
@@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry, goto cleanup; node2 = (struct dx_node *)(bh2->b_data); entries2 = node2->entries; +memset (&node2->fake,0 ,sizeof (struct fake_dirent )); node2->fake.rec_len =ext3_rec_len_to_disk (sb->s_blocksize); - node2->fake.inode =0 ;BUFFER_TRACE (frame->bh,"get_write_access" ); err =ext3_journal_get_write_access (handle, frame->bh);if (err)
PATCH v2 1/1 ext3: Always set dx_node's fake_dirent explicitly.
(crossport of 1f7bebb9e911d870fa8f997ddff838e82b5715ea by Andreas Schlick <[email protected]>)
When ext3_dx_add_entry() has to split an index node, it has to ensure that name_len of dx_node's fake_dirent is also zero, because otherwise e2fsck won't recognise it as an intermediate htree node and consider the htree to be corrupted.
---
(V2: fix subject and commit and formatting)
While it's a simple one liner, this took me forever to (re-)find.
kill_ext3_now++;
That is all. ;)
fs/ext3/namei.c +1 -1
@@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry, goto cleanup; node2 = (struct dx_node *)(bh2->b_data); entries2 = node2->entries; +memset (&node2->fake,0 ,sizeof (struct fake_dirent )); node2->fake.rec_len =ext3_rec_len_to_disk (sb->s_blocksize); - node2->fake.inode =0 ;BUFFER_TRACE (frame->bh,"get_write_access" ); err =ext3_journal_get_write_access (handle, frame->bh);if (err)
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 10 lines · Eric Sandeen
(crossport of
1f7bebb9e911d870fa8f997ddff838e82b5715eaby Andreas Schlick <[email protected]>)When
ext3_dx_add_entry()has to split an index node, it has to ensure thatname_lenof dx_node'sfake_direntis also zero, because otherwise e2fsck won't recognise it as an intermediate htree node and consider the htree to be corrupted.Signed-off-by Eric Sandeen <[email protected]>---
Should also be sent to stable I think.
Quoted 27 lines
(V2: fix subject and commit and formatting)
While it's a simple one liner, this took me forever to (re-)find.
kill_ext3_now++;
That is all. ;)
fs/ext3/namei.c +1
-2@@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry, goto cleanup; node2 = (struct dx_node *)(bh2->b_data); entries2 = node2->entries; +memset (&node2->fake,0 ,sizeof (struct fake_dirent )); node2->fake.rec_len =ext3_rec_len_to_disk (sb->s_blocksize); - node2->fake.inode =0 ;BUFFER_TRACE (frame->bh,"get_write_access" ); err =ext3_journal_get_write_access (handle, frame->bh);if (err) --To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 4 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Cheers, Andreas
Quoted 9 lines · Eric Sandeen
(crossport of
1f7bebb9e911d870fa8f997ddff838e82b5715eaby Andreas Schlick <[email protected]>)When
ext3_dx_add_entry()has to split an index node, it has to ensure thatname_lenof dx_node'sfake_direntis also zero, because otherwise e2fsck won't recognise it as an intermediate htree node and consider the htree to be corrupted.Signed-off-by Eric Sandeen <[email protected]>
Thanks. Merged - and added CC to [email protected] as Andreas suggested.
Quoted 1 line
While it's a simple one liner, this took me forever to (re-)find.
I feel with you :).
Honza
Quoted 15 lines
fs/ext3/namei.c +1
-1@@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry, goto cleanup; node2 = (struct dx_node *)(bh2->b_data); entries2 = node2->entries; +memset (&node2->fake,0 ,sizeof (struct fake_dirent )); node2->fake.rec_len =ext3_rec_len_to_disk (sb->s_blocksize); - node2->fake.inode =0 ;BUFFER_TRACE (frame->bh,"get_write_access" ); err =ext3_journal_get_write_access (handle, frame->bh);if (err)
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR
Quoted 11 lines · Jan Kara
Quoted 9 lines · Eric Sandeen
(crossport of
1f7bebb9e911d870fa8f997ddff838e82b5715eaby Andreas Schlick <[email protected]>)When
ext3_dx_add_entry()has to split an index node, it has to ensure thatname_lenof dx_node'sfake_direntis also zero, because otherwise e2fsck won't recognise it as an intermediate htree node and consider the htree to be corrupted.Signed-off-by Eric Sandeen <[email protected]>Thanks. Merged - and added CC to [email protected] as Andreas suggested.
Thanks!
-Eric
Quoted 19 lines
Quoted 1 line
While it's a simple one liner, this took me forever to (re-)find.
I feel with you :).
Honza
Quoted 15 lines
fs/ext3/namei.c +1
-1@@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry, goto cleanup; node2 = (struct dx_node *)(bh2->b_data); entries2 = node2->entries; +memset (&node2->fake,0 ,sizeof (struct fake_dirent )); node2->fake.rec_len =ext3_rec_len_to_disk (sb->s_blocksize); - node2->fake.inode =0 ;BUFFER_TRACE (frame->bh,"get_write_access" ); err =ext3_journal_get_write_access (handle, frame->bh);if (err)