2009-01-02 09:07:11

by Marc Burkhardt

[permalink] [raw]
Subject: reiserfs broken with 2.6.28-17244-gb58602a

Hi!

I just booted into a 2.6.28-17244-gb58602a kernel that is the currently recent
git code. The reiserfs fs has some major probs when booting this kernel. I just
--rebuild-tree 4 partitions which are OK now again. When booting my Gentoo box
says it cannot create an /etc/mtab~nnnn file and such. When I boot into stock
2.6.28, however, anything is OK. I re-tested that 3 times. Anytime I boot into
the git kernel the messages occur and I shutdown the box via acpid (power
button) as quick as I can.

/var/log/messages has some of these for me:

Jan 2 09:23:16 stiffy [ 45.485204] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485213] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485217] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485221] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485224] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485228] ReiserFS: warning: vs-500: unknown uniqueness -190812612
Jan 2 09:23:16 stiffy [ 45.485233] ReiserFS: hda7: warning: vs-500: unknown uniqueness -190812612[4772178 230 0xf7538800 UNKNOWN] not found

Please let me know if I can help out with some tests or something. Please also
CC me as I'm currently not in the list ... :/

Marc

--
Marc Koschewski


2009-01-02 13:23:34

by Al Viro

[permalink] [raw]
Subject: Re: reiserfs broken with 2.6.28-17244-gb58602a

On Fri, Jan 02, 2009 at 09:38:11AM +0100, Marc Koschewski wrote:
> Hi!
>
> I just booted into a 2.6.28-17244-gb58602a kernel that is the currently recent
> git code. The reiserfs fs has some major probs when booting this kernel. I just
> --rebuild-tree 4 partitions which are OK now again. When booting my Gentoo box
> says it cannot create an /etc/mtab~nnnn file and such. When I boot into stock
> 2.6.28, however, anything is OK. I re-tested that 3 times. Anytime I boot into
> the git kernel the messages occur and I shutdown the box via acpid (power
> button) as quick as I can.

Arrgh. See if that helps:

now that we use ih.key earlier, we need to do all its setup early enough

Signed-off-by: Al Viro <[email protected]>
---
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index 145c2d3..1306d4f 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -1782,6 +1782,12 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
goto out_bad_inode;
}
args.objectid = inode->i_ino = le32_to_cpu(ih.ih_key.k_objectid);
+ if (old_format_only(sb))
+ make_le_item_head(&ih, NULL, KEY_FORMAT_3_5, SD_OFFSET,
+ TYPE_STAT_DATA, SD_V1_SIZE, MAX_US_INT);
+ else
+ make_le_item_head(&ih, NULL, KEY_FORMAT_3_6, SD_OFFSET,
+ TYPE_STAT_DATA, SD_SIZE, MAX_US_INT);
memcpy(INODE_PKEY(inode), &(ih.ih_key), KEY_SIZE);
args.dirid = le32_to_cpu(ih.ih_key.k_dir_id);
if (insert_inode_locked4(inode, args.objectid,
@@ -1834,13 +1840,6 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
reiserfs_init_acl_default(inode);
reiserfs_init_xattr_rwsem(inode);

- if (old_format_only(sb))
- make_le_item_head(&ih, NULL, KEY_FORMAT_3_5, SD_OFFSET,
- TYPE_STAT_DATA, SD_V1_SIZE, MAX_US_INT);
- else
- make_le_item_head(&ih, NULL, KEY_FORMAT_3_6, SD_OFFSET,
- TYPE_STAT_DATA, SD_SIZE, MAX_US_INT);
-
/* key to search for correct place for new stat data */
_make_cpu_key(&key, KEY_FORMAT_3_6, le32_to_cpu(ih.ih_key.k_dir_id),
le32_to_cpu(ih.ih_key.k_objectid), SD_OFFSET,

2009-01-03 18:37:41

by charles gagalac

[permalink] [raw]
Subject: Re: reiserfs broken with 2.6.28-17244-gb58602a

On Fri, Jan 2, 2009 at 3:23 AM, Al Viro <[email protected]> wrote:
>
> Arrgh. See if that helps:
>
> now that we use ih.key earlier, we need to do all its setup early enough
>
> Signed-off-by: Al Viro <[email protected]>
> ---
> diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
> index 145c2d3..1306d4f 100644
> --- a/fs/reiserfs/inode.c
> +++ b/fs/reiserfs/inode.c
> @@ -1782,6 +1782,12 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
> goto out_bad_inode;
> }
> args.objectid = inode->i_ino = le32_to_cpu(ih.ih_key.k_objectid);
> + if (old_format_only(sb))
> + make_le_item_head(&ih, NULL, KEY_FORMAT_3_5, SD_OFFSET,
> + TYPE_STAT_DATA, SD_V1_SIZE, MAX_US_INT);
> + else
> + make_le_item_head(&ih, NULL, KEY_FORMAT_3_6, SD_OFFSET,
> + TYPE_STAT_DATA, SD_SIZE, MAX_US_INT);
> memcpy(INODE_PKEY(inode), &(ih.ih_key), KEY_SIZE);
> args.dirid = le32_to_cpu(ih.ih_key.k_dir_id);
> if (insert_inode_locked4(inode, args.objectid,
> @@ -1834,13 +1840,6 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
> reiserfs_init_acl_default(inode);
> reiserfs_init_xattr_rwsem(inode);
>
> - if (old_format_only(sb))
> - make_le_item_head(&ih, NULL, KEY_FORMAT_3_5, SD_OFFSET,
> - TYPE_STAT_DATA, SD_V1_SIZE, MAX_US_INT);
> - else
> - make_le_item_head(&ih, NULL, KEY_FORMAT_3_6, SD_OFFSET,
> - TYPE_STAT_DATA, SD_SIZE, MAX_US_INT);
> -
> /* key to search for correct place for new stat data */
> _make_cpu_key(&key, KEY_FORMAT_3_6, le32_to_cpu(ih.ih_key.k_dir_id),
> le32_to_cpu(ih.ih_key.k_objectid), SD_OFFSET,
> --

the patch fixed the reiserfs problem for me. thanks.

charles