2008-06-24 17:27:00

by Gary Hawco

[permalink] [raw]
Subject: Problem compiling 2.6.260rc6 with updated ext4-patch-queue

Recently pulled and updated my ext4-patch-queue. Tried to compile the
2.6.26-rc6 after it patched cleanly. During make received the following error:

fs/ext4/inode.c: In function 'ext4_journal_dirty_data':
fs/ext4/inode.c:1297: error: implicit declaration of function
'jbd2_journal_dirty_data'
fs/ext4/inode.c: In function 'ext4_da_writepages':
fs/ext4/inode.c:1759: error: implicit declaration of function
'ext4_jbd2_file_inode'
make[2]: *** [fs/ext4/inode.o] Error 1
make[1]: *** [fs/ext4] Error 2
make: *** [fs] Error 2

Previously, as of the Add ext4-delalloc-bmap-support.patch by Mingming Cao
three days ago, the 2.6.26-rc6 kernel compiled cleanly, so I would guess
it's something in the last seven patches (listed from newest to oldest):

1. Fold ext4-Use-new-framework-for-data-ordered-mode-in-JBD.patch
2. Fix compile error in ext4_use_atomic-function-to-set-bh_stat-fix.patch
3. Added ext4_use_atomic-function-to-set-bh_stat-fix.patch
4. Update changelog for jbd2-Implement-data-ordered-mode-handling-via-
inode.patch
5. Fold ext4-delalloc-bmap-support.patch to delalloc writeback mode patch
6. Fold delalloc-ext4-reservation-for-nonextent-files.patch to delalloc
ENOSPC error handling patch, move it before reverse locking changes
7. Add delalloc-ext4-reservation-for-nonextent-files.patch

Gary




2008-06-24 22:18:51

by Theodore Ts'o

[permalink] [raw]
Subject: Re: Problem compiling 2.6.260rc6 with updated ext4-patch-queue

On Tue, Jun 24, 2008 at 10:26:59AM +0000, Gary Hawco wrote:
> Recently pulled and updated my ext4-patch-queue. Tried to compile
> the 2.6.26-rc6 after it patched cleanly. During make received the
> following error.

Hmm.... I just tested the latest commit on the ext4 patch queue
(14581cb30), and it compiled just fine on 2.6.26-rc6.

Based on what you listed as your latest patch, it looks like you are
using the previous commit (commit ID e2121926), and I just tried it
applied to 2.6.26-rc6, and it worked just fine for me. So I'm not sure
why it's failing for you...

>fs/ext4/inode.c: In function 'ext4_journal_dirty_data':
>fs/ext4/inode.c:1297: error: implicit declaration of function
>'jbd2_journal_dirty_data'
>fs/ext4/inode.c: In function 'ext4_da_writepages':
>fs/ext4/inode.c:1759: error: implicit declaration of function
>'ext4_jbd2_file_inode'

When I look at my version of 2.6.26-rc6 with what I think was your
version of the patch queue (commit ID e2121926), fs/ext4/inode.c line
1297 is in the middle of a C comment, and line 1759 doesn't refer to
the function ext4_jbd2_file_inode at all. So I'm wondering if
something went wrong with how you applied the ext4 patch queue.

Note: how I normally apply the patch queue is to use the "guilt" tool
--- http://www.kernel.org/pub/linux/kernel/people/jsipek/guilt --- and
I drop the ext4 patch queue in .git/patches/ext4dev in the Linux git
repository. So then I'll create the ext4dev branch as starting at the
2.6.26-rc6 (i.e., "git checkout -b ext4dev 2.6.26-rc6") or if the
ext4dev branch is already created, then magic incantation is (git
checkout ext4dev; guilt pop -a; git reset --hard 2.6.26-rc6). Then
the entire patch queue can be applied via: "guilt push -a".

If I want to update to the latest version of the patch queue, I do:

(cd .git/patches/ext4dev; git pull)
guilt pop -a
guilt push -a

If I want to rebase to 2.6.26-rc7, then what I'll do is:

git checkout origin # In the Linux tree
guilt pull # Update to the latest from Linus
git checkout ext4dev
guilt pop -a
git reset --hard 2.6.26-rc7
guilt push -a

I then build and test the ext4 patch, and if it is successful, I'll
edit .git/patches/ext4dev/series so that it states that it's based off
of 2.6.26-rc7, and then do a git commit, followed by a git push to
publish the latest version of the ext4 patch queue.

I find this is the easist way of applying the patch queue, and to see
what's is going on. By using gitk I can get a nice visual image of
the commits that are applied. If you have problems, and the patch
queue is applied via git, it's much easier for us to check what is up
with you if you send us the output of "git log --decorate
ext4dev_bottom^^..HEAD". I can also ask you to send the output of
"git status" to make sure there aren't local modifications so we know
it's exactly 2.6.26-rc6 plus the ext4 patch queue.

Regards,

- Ted

2008-06-24 22:34:07

by Mingming Cao

[permalink] [raw]
Subject: Re: Problem compiling 2.6.260rc6 with updated ext4-patch-queue


On Tue, 2008-06-24 at 18:18 -0400, Theodore Tso wrote:
> On Tue, Jun 24, 2008 at 10:26:59AM +0000, Gary Hawco wrote:
> > Recently pulled and updated my ext4-patch-queue. Tried to compile
> > the 2.6.26-rc6 after it patched cleanly. During make received the
> > following error.
>
> Hmm.... I just tested the latest commit on the ext4 patch queue
> (14581cb30), and it compiled just fine on 2.6.26-rc6.

Sorry! My bad. I accidently remove wrong patch when folding the bug
fixes to the parent patch. I did bring that patch back now Gary has
confirmed it compiles fine.

Mingming