On Thu, 8 Nov 2012 15:35:41 +0800, Fengguang Wu wrote: > Hi Stefan, > > FYI, there are new sparse warnings show up in > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-next.git > master > head: c1014be59ba93855c31fda9d9cf4319cc6f9eeb1 > commit: d8e784f51e2e1d1c57f091fdb49456c4e7fb62d2 Btrfs: add a new source file > with device replace code > date: 21 hours ago > > + fs/btrfs/dev-replace.c:486:17: sparse: incompatible types in comparison > expression (different address spaces) > + fs/btrfs/dev-replace.c:486:17: sparse: incompatible types in comparison > expression (different address spaces) > fs/btrfs/dev-replace.c:745:17: sparse: incompatible types in comparison > expression (different address spaces) > fs/btrfs/dev-replace.c:745:17: sparse: incompatible types in comparison > expression (different address spaces) > fs/btrfs/dev-replace.c:766:30: sparse: too many arguments for function > btrfs_scrub_dev > fs/btrfs/dev-replace.c:407:30: sparse: too many arguments for function > btrfs_scrub_dev > fs/btrfs/dev-replace.c: In function 'btrfs_init_dev_replace': > fs/btrfs/dev-replace.c:141:8: error: 'BTRFS_DEV_REPLACE_DEVID' undeclared > (first use in this function) > fs/btrfs/dev-replace.c:141:8: note: each undeclared identifier is reported > only once for each function it appears in > fs/btrfs/dev-replace.c:168:23: error: 'struct btrfs_device' has no member > named 'is_tgtdev_for_dev_replace' > fs/btrfs/dev-replace.c:169:4: error: implicit declaration of function > 'btrfs_init_dev_replace_tgtdev_for_resume' > [-Werror=implicit-function-declaration] > fs/btrfs/dev-replace.c: In function 'btrfs_dev_replace_start': > fs/btrfs/dev-replace.c:331:2: error: implicit declaration of function > 'btrfs_init_dev_replace_tgtdev' [-Werror=implicit-function-declaration] > fs/btrfs/dev-replace.c:409:10: error: too many arguments to function > 'btrfs_scrub_dev' > In file included from fs/btrfs/dev-replace.c:30:0: > fs/btrfs/ctree.h:3648:5: note: declared here > fs/btrfs/dev-replace.c:422:3: error: implicit declaration of function > 'btrfs_destroy_dev_replace_tgtdev' [-Werror=implicit-function-declaration] > fs/btrfs/dev-replace.c: In function 'btrfs_dev_replace_finishing': > fs/btrfs/dev-replace.c:500:12: error: 'struct btrfs_device' has no member > named 'is_tgtdev_for_dev_replace' > fs/btrfs/dev-replace.c:502:22: error: 'BTRFS_DEV_REPLACE_DEVID' undeclared > (first use in this function) > fs/btrfs/dev-replace.c:516:2: error: implicit declaration of function > 'btrfs_rm_dev_replace_srcdev' [-Werror=implicit-function-declaration] > fs/btrfs/dev-replace.c: In function 'btrfs_resume_dev_replace_async': > fs/btrfs/dev-replace.c:726:2: error: 'struct btrfs_fs_info' has no member > named 'mutually_exclusive_operation_running' > fs/btrfs/dev-replace.c: In function 'btrfs_dev_replace_kthread': > fs/btrfs/dev-replace.c:756:21: error: 'struct btrfs_fs_info' has no member > named 'mutually_exclusive_operation_running' > fs/btrfs/dev-replace.c: In function 'btrfs_dev_replace_continue_on_mount': > fs/btrfs/dev-replace.c:769:10: error: too many arguments to function > 'btrfs_scrub_dev' [...]
My fault. After reading, how the 0-day kernel build testing is working, it is clear, what the error is. This problematic commit adds a source file with full C code contents, but does not add the file to the Makefile yet. The sparse tool checks it anyway since it seems to be invoked for every *.c file ignoring that the file is not yet included in the build. This behavior of the kernel build testing is fine. There are pros and cons, but finally I think that it is not a good idea to create such a commit as I did it. The goal was to avoid huge commits that nobody would ever review, and that nobody could ever review. Therefore I thought it would simplify reading the patches and understanding the purpose of the modifications, if I make it a step of its own to add all these new dev-replace.c functions. This allows to keep the commit "change core code of btrfs to support the device replace operation" small and contain only the changes to the legacy files. I now changed it to add the new source file to the Makefile in the same commit that added the C source file, and made it build without errors. This meant to move the commit upwards in the list of commits, and to also move some changes from one commit to the other. At the end, the commit "change core code of btrfs to support the device replace operation" is even smaller, and the changed commits are even more readable. For me, this is a proof that this is the better way :) Thanks for the 0-day kernel build testing! -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html