Re: [PATCH -next] btrfs: Select LIBCRC32C again

2019-07-09 Thread Guenter Roeck
On Mon, Jul 08, 2019 at 06:43:23AM -0700, Guenter Roeck wrote:
> With CONFIG_BTRFS_FS=y and CONFIG_CRYPTO_CRC32C=m, we get:
> 
> fs/btrfs/super.o: In function `btrfs_mount_root':
> fs/btrfs/super.c:1557: undefined reference to `crc32c_impl'
> fs/btrfs/super.o: In function `btrfs_print_mod_info':
> fs/btrfs/super.c:2348: undefined reference to `crc32c_impl'
> fs/btrfs/extent-tree.o: In function `btrfs_crc32c':
> fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
> fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
> fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
> fs/btrfs/dir-item.o: In function `btrfs_name_hash':
> fs/btrfs/ctree.h:2619: undefined reference to `crc32c'
> fs/btrfs/ctree.h:2619: undefined reference to `crc32c'
> 
> and more.
> 
> Note that the comment in the offending commit "The module dependency on
> crc32c is preserved via MODULE_SOFTDEP("pre: crc32c"), which was previously
> provided by LIBCRC32C config option doing the same." is wrong, since it
> permits CONFIG_BTRFS_FS=y in combination with CONFIG_CRYPTO_CRC32C=m.
> 

Meh, that should have been CONFIG_LIBCRC32C=m. Sorry for the confusion.

Anyway, I'll select CONFIG_LIBCRC32C=y in conjunction with CONFIG_BTRFS_FS=y
in my own build/boot tests going forward. That won't fix the problem, but
it will avoid loss of test coverage.

Guenter

> Cc: David Sterba 
> Fixes: d5178578bcd4 ("btrfs: directly call into crypto framework for 
> checksumming")
> Signed-off-by: Guenter Roeck 
> ---
>  fs/btrfs/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
> index 212b4a854f2c..4c80c70597f9 100644
> --- a/fs/btrfs/Kconfig
> +++ b/fs/btrfs/Kconfig
> @@ -2,6 +2,7 @@
>  
>  config BTRFS_FS
>   tristate "Btrfs filesystem support"
> + select LIBCRC32C
>   select CRYPTO
>   select CRYPTO_CRC32C
>   select ZLIB_INFLATE
> -- 
> 2.7.4
> 


[PATCH -next] btrfs: Select LIBCRC32C again

2019-07-08 Thread Guenter Roeck
With CONFIG_BTRFS_FS=y and CONFIG_CRYPTO_CRC32C=m, we get:

fs/btrfs/super.o: In function `btrfs_mount_root':
fs/btrfs/super.c:1557: undefined reference to `crc32c_impl'
fs/btrfs/super.o: In function `btrfs_print_mod_info':
fs/btrfs/super.c:2348: undefined reference to `crc32c_impl'
fs/btrfs/extent-tree.o: In function `btrfs_crc32c':
fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
fs/btrfs/ctree.h:2609: undefined reference to `crc32c'
fs/btrfs/dir-item.o: In function `btrfs_name_hash':
fs/btrfs/ctree.h:2619: undefined reference to `crc32c'
fs/btrfs/ctree.h:2619: undefined reference to `crc32c'

and more.

Note that the comment in the offending commit "The module dependency on
crc32c is preserved via MODULE_SOFTDEP("pre: crc32c"), which was previously
provided by LIBCRC32C config option doing the same." is wrong, since it
permits CONFIG_BTRFS_FS=y in combination with CONFIG_CRYPTO_CRC32C=m.

Cc: David Sterba 
Fixes: d5178578bcd4 ("btrfs: directly call into crypto framework for 
checksumming")
Signed-off-by: Guenter Roeck 
---
 fs/btrfs/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
index 212b4a854f2c..4c80c70597f9 100644
--- a/fs/btrfs/Kconfig
+++ b/fs/btrfs/Kconfig
@@ -2,6 +2,7 @@
 
 config BTRFS_FS
tristate "Btrfs filesystem support"
+   select LIBCRC32C
select CRYPTO
select CRYPTO_CRC32C
select ZLIB_INFLATE
-- 
2.7.4



Re: [PATCH] fs: btrfs: Add missing include file

2015-04-01 Thread Guenter Roeck

On 04/01/2015 12:28 PM, Chris Mason wrote:

On Sun, Mar 29, 2015 at 11:24 PM, Guenter Roeck  wrote:

On Fri, Mar 13, 2015 at 01:58:46AM -0700, Guenter Roeck wrote:

 Building alpha:allmodconfig fails with

 fs/btrfs/inode.c: In function 'check_direct_Excellent idea. Done,IO':
 fs/btrfs/inode.c:8050:2: error: implicit declaration of function 
'iov_iter_alignment'

 due to a missing include file.

 Fixes: 3737c63e1fb0 ("fs: move struct kiocb to fs.h")
 Cc: Christoph Hellwig 
 Signed-off-by: Guenter Roeck 
 ---


This problem still affects the following builds as of today.

alpha:allmodconfig
i386:allyesconfig
i386:allmodconfig
m68k:allmodconfig
mips:allmodconfig
xtensa:allmodconfig

and thus probabably many other allmodconfig builds which I don't try to build.

This is getting really annoying, and prevents us from finding and fixing
other build problems.

It has been more than two weeks since I submitted the patch. This suggests
that the patch got lost otr that the Powers That Be don't care. Which one
is it ?

Should I request to revert 3737c63e1fb0 instead ?


I'll put the include into my branch for -next, thanks!



I have not seen the problem in the latest -next build,
which presumably means that some other patch must have
fixed the problem or at least hides it now. No idea
which one, though.

Guenter

--
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


Re: [PATCH] fs: btrfs: Add missing include file

2015-03-29 Thread Guenter Roeck
On Fri, Mar 13, 2015 at 01:58:46AM -0700, Guenter Roeck wrote:
> Building alpha:allmodconfig fails with
> 
> fs/btrfs/inode.c: In function 'check_direct_IO':
> fs/btrfs/inode.c:8050:2: error: implicit declaration of function 
> 'iov_iter_alignment'
> 
> due to a missing include file.
> 
> Fixes: 3737c63e1fb0 ("fs: move struct kiocb to fs.h")
> Cc: Christoph Hellwig 
> Signed-off-by: Guenter Roeck 
> ---

This problem still affects the following builds as of today.

alpha:allmodconfig
i386:allyesconfig
i386:allmodconfig
m68k:allmodconfig
mips:allmodconfig
xtensa:allmodconfig

and thus probabably many other allmodconfig builds which I don't try to build.

This is getting really annoying, and prevents us from finding and fixing
other build problems.

It has been more than two weeks since I submitted the patch. This suggests 
that the patch got lost otr that the Powers That Be don't care. Which one
is it ?

Should I request to revert 3737c63e1fb0 instead ?

Guenter
--
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


Re: [PATCH] fs: btrfs: Add missing include file

2015-03-13 Thread Guenter Roeck
On Fri, Mar 13, 2015 at 01:58:46AM -0700, Guenter Roeck wrote:
> Building alpha:allmodconfig fails with
> 
> fs/btrfs/inode.c: In function 'check_direct_IO':
> fs/btrfs/inode.c:8050:2: error: implicit declaration of function 
> 'iov_iter_alignment'
> 
> due to a missing include file.
> 
> Fixes: 3737c63e1fb0 ("fs: move struct kiocb to fs.h")
> Cc: Christoph Hellwig 
> Signed-off-by: Guenter Roeck 
> ---

Forgot to mention: This is for -next.

Guenter

>  fs/btrfs/inode.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 37dc84c..5b6e5bd 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -42,6 +42,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include "ctree.h"
>  #include "disk-io.h"
>  #include "transaction.h"
> -- 
> 2.1.0
> 
--
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


[PATCH] fs: btrfs: Add missing include file

2015-03-13 Thread Guenter Roeck
Building alpha:allmodconfig fails with

fs/btrfs/inode.c: In function 'check_direct_IO':
fs/btrfs/inode.c:8050:2: error: implicit declaration of function 
'iov_iter_alignment'

due to a missing include file.

Fixes: 3737c63e1fb0 ("fs: move struct kiocb to fs.h")
Cc: Christoph Hellwig 
Signed-off-by: Guenter Roeck 
---
 fs/btrfs/inode.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 37dc84c..5b6e5bd 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -42,6 +42,7 @@
 #include 
 #include 
 #include 
+#include 
 #include "ctree.h"
 #include "disk-io.h"
 #include "transaction.h"
-- 
2.1.0

--
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


Re: Build failures due to commit 416161db (btrfs: offline dedupe)

2013-09-18 Thread Guenter Roeck
On Tue, Sep 17, 2013 at 03:43:54PM -0700, Mark Fasheh wrote:
> On Fri, Sep 13, 2013 at 03:33:34PM -0400, Chris Mason wrote:
> > Mark, could you please send a patch for the whole-struct option until
> > the unaligned put is upstreamed?
> > 
> > -chris
> 
> Here you go. It's been lightly tested and needs review.
> 
At the very least it does fix the build error on the affected platforms.

Guenter

> Thanks,
>   --Mark
> 
> --
> Mark Fasheh
> 
> From: Mark Fasheh 
> 
> [PATCH] btrfs: change extent-same to copy entire argument struct
> 
> btrfs_ioctl_file_extent_same() uses __put_user_unaligned() to copy some data
> back to it's argument struct. Unfortunately, not all architectures provide
> __put_user_unaligned(), so compiles break on them if btrfs is selected.
> 
> Instead, just copy the whole struct in / out at the start and end of
> operations, respectively.
> 
> Signed-off-by: Mark Fasheh 
> ---
>  fs/btrfs/ioctl.c | 76 
> +---
>  1 file changed, 45 insertions(+), 31 deletions(-)
> 
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index 1a5b946..25d6920 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -2696,9 +2696,9 @@ out_unlock:
>  static long btrfs_ioctl_file_extent_same(struct file *file,
>void __user *argp)
>  {
> - struct btrfs_ioctl_same_args *args = argp;
> - struct btrfs_ioctl_same_args same;
> - struct btrfs_ioctl_same_extent_info info;
> + struct btrfs_ioctl_same_args tmp;
> + struct btrfs_ioctl_same_args *same;
> + struct btrfs_ioctl_same_extent_info *info;
>   struct inode *src = file->f_dentry->d_inode;
>   struct file *dst_file = NULL;
>   struct inode *dst;
> @@ -2706,6 +2706,7 @@ static long btrfs_ioctl_file_extent_same(struct file 
> *file,
>   u64 len;
>   int i;
>   int ret;
> + unsigned long size;
>   u64 bs = BTRFS_I(src)->root->fs_info->sb->s_blocksize;
>   bool is_admin = capable(CAP_SYS_ADMIN);
>  
> @@ -2716,15 +2717,30 @@ static long btrfs_ioctl_file_extent_same(struct file 
> *file,
>   if (ret)
>   return ret;
>  
> - if (copy_from_user(&same,
> + if (copy_from_user(&tmp,
>  (struct btrfs_ioctl_same_args __user *)argp,
> -sizeof(same))) {
> +sizeof(tmp))) {
>   ret = -EFAULT;
>   goto out;
>   }
>  
> - off = same.logical_offset;
> - len = same.length;
> + size = sizeof(tmp) +
> + tmp.dest_count * sizeof(struct btrfs_ioctl_same_extent_info);
> +
> + same = kmalloc(size, GFP_NOFS);
> + if (!same) {
> + ret = -EFAULT;
> + goto out;
> + }
> +
> + if (copy_from_user(same,
> +(struct btrfs_ioctl_same_args __user *)argp, size)) {
> + ret = -EFAULT;
> + goto out;
> + }
> +
> + off = same->logical_offset;
> + len = same->length;
>  
>   /*
>* Limit the total length we will dedupe for each operation.
> @@ -2752,27 +2768,28 @@ static long btrfs_ioctl_file_extent_same(struct file 
> *file,
>   if (!S_ISREG(src->i_mode))
>   goto out;
>  
> - ret = 0;
> - for (i = 0; i < same.dest_count; i++) {
> - if (copy_from_user(&info, &args->info[i], sizeof(info))) {
> - ret = -EFAULT;
> - goto out;
> - }
> + /* pre-format output fields to sane values */
> + for (i = 0; i < same->dest_count; i++) {
> + same->info[i].bytes_deduped = 0ULL;
> + same->info[i].status = 0;
> + }
>  
> - info.bytes_deduped = 0;
> + ret = 0;
> + for (i = 0; i < same->dest_count; i++) {
> + info = &same->info[i];
>  
> - dst_file = fget(info.fd);
> + dst_file = fget(info->fd);
>   if (!dst_file) {
> - info.status = -EBADF;
> + info->status = -EBADF;
>   goto next;
>   }
>  
>   if (!(is_admin || (dst_file->f_mode & FMODE_WRITE))) {
> - info.status = -EINVAL;
> + info->status = -EINVAL;
>   goto next;
>   }
>  
> - info.status = -EXDEV;
> + info->status = -EXDEV;
>   if (file->f_path.mnt != dst_file->f_path.mnt)
>   goto next;
>  
> @@ -2781,32 +2798,29 @@ static long btrfs_ioctl_file_extent_same(struct file 
> *file,
>   goto next;
>  
>   if (S_ISDIR(dst->i_mode)) {
> - info.status = -EISDIR;
> + info->status = -EISDIR;
>   goto next;
>   }
>  
>   if (!S_ISREG(dst->i_mode)) {
> - info.status = -EACCES;
> + info->status = -EACCES;
>  

Re: Build failures due to commit 416161db (btrfs: offline dedupe)

2013-09-13 Thread Guenter Roeck
On Fri, Sep 13, 2013 at 01:00:22PM -0400, Chris Mason wrote:
> Quoting Guenter Roeck (2013-09-13 12:35:35)
> > On Fri, Sep 13, 2013 at 03:52:43PM +0200, Geert Uytterhoeven wrote:
> > > On Fri, Sep 13, 2013 at 3:33 PM, Guenter Roeck  wrote:
> > > > fs/btrfs/ioctl.c: In function 'btrfs_ioctl_file_extent_same':
> > > > fs/btrfs/ioctl.c:2802:3: error: implicit declaration of function 
> > > > '__put_user_unaligned' [-Werror=implicit-function-declaration]
> > > > cc1: some warnings being treated as errors
> > > > make[2]: *** [fs/btrfs/ioctl.o] Error 1
> > > > make[2]: *** Waiting for unfinished jobs
> > > >
> > > > Seen with alpha:allmodconfig, arm:allmodconfig, m68k:allmodconfig, and
> > > > xtensa:allmodconfig.
> > > 
> > > Known issue, cfr. my early warning 10 days ago:
> > > 
> > > "Btrfs is the first user of __put_user_unaligned() outside the compat 
> > > code,
> > > hence now all 32-bit architectures should make sure to implement this, 
> > > too."
> > > 
> > > http://marc.info/?l=linux-arch&m=137820065929216&w=2
> > > 
> > > and today's thread https://lkml.org/lkml/2013/9/12/814
> > > 
> > 
> > It doesn't seem right that a patch breaks the build for several platforms, 
> > and
> > the problem is then blamed on the platform code instead of the code that is
> > introducing the problem.
> > 
> > Maybe we should add BROKEN to the btrfs dependencies for the affected 
> > platforms.
> > After all, it _is_ broken.
> 
> I'm happy to fix this with a bigger put of the info struct, just
> let me know the preferred arch-happy solution.
> 
Me not either. The only requirement I would have is that it should not break
a build. Of course, it would be even better if it would actually work ;-).

Guenter
--
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


Re: Build failures due to commit 416161db (btrfs: offline dedupe)

2013-09-13 Thread Guenter Roeck
On Fri, Sep 13, 2013 at 03:52:43PM +0200, Geert Uytterhoeven wrote:
> On Fri, Sep 13, 2013 at 3:33 PM, Guenter Roeck  wrote:
> > fs/btrfs/ioctl.c: In function 'btrfs_ioctl_file_extent_same':
> > fs/btrfs/ioctl.c:2802:3: error: implicit declaration of function 
> > '__put_user_unaligned' [-Werror=implicit-function-declaration]
> > cc1: some warnings being treated as errors
> > make[2]: *** [fs/btrfs/ioctl.o] Error 1
> > make[2]: *** Waiting for unfinished jobs
> >
> > Seen with alpha:allmodconfig, arm:allmodconfig, m68k:allmodconfig, and
> > xtensa:allmodconfig.
> 
> Known issue, cfr. my early warning 10 days ago:
> 
> "Btrfs is the first user of __put_user_unaligned() outside the compat code,
> hence now all 32-bit architectures should make sure to implement this, too."
> 
> http://marc.info/?l=linux-arch&m=137820065929216&w=2
> 
> and today's thread https://lkml.org/lkml/2013/9/12/814
> 

It doesn't seem right that a patch breaks the build for several platforms, and
the problem is then blamed on the platform code instead of the code that is
introducing the problem.

Maybe we should add BROKEN to the btrfs dependencies for the affected platforms.
After all, it _is_ broken.

Guenter
--
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


Build failures due to commit 416161db (btrfs: offline dedupe)

2013-09-13 Thread Guenter Roeck
fs/btrfs/ioctl.c: In function 'btrfs_ioctl_file_extent_same':
fs/btrfs/ioctl.c:2802:3: error: implicit declaration of function 
'__put_user_unaligned' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[2]: *** [fs/btrfs/ioctl.o] Error 1
make[2]: *** Waiting for unfinished jobs

Seen with alpha:allmodconfig, arm:allmodconfig, m68k:allmodconfig, and
xtensa:allmodconfig.

Guenter
--
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