On Sat, Jan 11, 2020 at 09:44:27AM +1100, Stephen Rothwell wrote: > Hi Carlos, > > On Fri, 10 Jan 2020 12:03:53 +0100 Carlos Maiolino <cmaiolino@xxxxxxxxxx> wrote: > > > > Eitherway, I am not 100% sure this is the right fix for this case, I remember > > some bmap() users who didn't need CONFIG_BLOCK, so we may still need to export > > it without CONFIG_BLOCK. > > Can you please send me your configuration? > > It was a x86_64 allnoconfig build. Thanks for the info Stephen. I think the correct way to fix this though, is to wrap the whole bmap(){} definition in a #ifdef block, not only the EXPORT symbol, as, by my patches, we redefine bmap() as an inline symbol if CONFIG_BLOCK is not set. So, something like this: diff --git a/fs/inode.c b/fs/inode.c index 9f894b25af2b..21e58542801b 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1612,6 +1612,8 @@ EXPORT_SYMBOL(iput); * Returns -EINVAL in case of error, 0 otherwise. If mapping falls into a * hole, returns 0 and *block is also set to 0. */ + +#ifdef CONFIG_BLOCK int bmap(struct inode *inode, sector_t *block) { if (!inode->i_mapping->a_ops->bmap) @@ -1621,6 +1623,7 @@ int bmap(struct inode *inode, sector_t *block) return 0; } EXPORT_SYMBOL(bmap); +#endif /* * With relative atime, only update atime if the previous atime is So, we preserve the original inline definition in include/fs.h (making bmap() just returning -EINVAL). What do you think? Viro, mind to share your opinion? I can send a 'Fixes:' patch. Cheers -- Carlos