Re: linux-next: build failure after merge of the vfs-brauner tree

From: Jan Kara
Date: Wed Oct 04 2023 - 11:46:33 EST


On Tue 03-10-23 09:27:11, Kent Overstreet wrote:
> On Mon, Oct 02, 2023 at 01:21:42PM +0200, Jan Kara wrote:
> > Hi!
> >
> > On Thu 28-09-23 10:54:43, Stephen Rothwell wrote:
> > > After merging the vfs-brauner tree, today's linux-next build (x86_64
> > > allmodconfig) failed like this:
> > >
> > > fs/bcachefs/super-io.c: In function 'bch2_free_super':
> > > fs/bcachefs/super-io.c:166:17: error: implicit declaration of function 'blkdev_put'; did you mean 'bdi_put'? [-Werror=implicit-function-declaration]
> > > 166 | blkdev_put(sb->bdev, sb->holder);
> > > | ^~~~~~~~~~
> > > | bdi_put
> > > fs/bcachefs/super-io.c: In function 'bch2_read_super':
> > > fs/bcachefs/super-io.c:687:20: error: implicit declaration of function 'blkdev_get_by_path'; did you mean 'bdev_open_by_path'? [-Werror=implicit-function-declaration]
> > > 687 | sb->bdev = blkdev_get_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
> > > | ^~~~~~~~~~~~~~~~~~
> > > | bdev_open_by_path
> > > fs/bcachefs/super-io.c:687:18: error: assignment to 'struct block_device *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
> > > 687 | sb->bdev = blkdev_get_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
> > > | ^
> > > fs/bcachefs/super-io.c:693:26: error: assignment to 'struct block_device *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
> > > 693 | sb->bdev = blkdev_get_by_path(path, sb->mode, sb->holder, &bch2_sb_handle_bdev_ops);
> > > | ^
> > > cc1: all warnings being treated as errors
> > >
> > > Caused by commit
> > >
> > > 953863a5a2ff ("block: Remove blkdev_get_by_*() functions")
> > >
> > > interacting with commit(s) from the bcachefs tree.
> > >
> > > I would have reverted that commit for today, except I used the old
> > > vfs-brauner tree due to another build failure. Can we just delay this
> > > one commit until after bcachefs has been converted (and any other
> > > references that may be added are fixed)?
> >
> > Yeah, I guess removing the final commit is the easiest solution at this
> > point. It complicates a bit the series to disallow writing to mounted block
> > devices which bases on this - either I have to pospone that to the next
> > cycle after we convert bcachefs or I have to find a way for the old
> > blkdev_get_by_path() API and the new functionality to coexist. I'll think
> > about that.
>
> Jan, Christain - what do you need from me for the conversion?

Well, the conversion is rather easy. You just need to call the new
bdev_open_by_path() function instead of the old blkdev_get_by_path(). It
returns struct bdev_handle (instead of plain struct bdev) and you
eventually need to pass this struct to bdev_release() (instead of calling
blkdev_put()).

But the merge at this point would be somewhat difficult because you'd need
to pull Christian's branch into your tree to get bdev_open_by_path() in the
first place. And that branch already depends on some changes in the btrfs
tree. So to save ourselves some headaches during the merge window, I think
not removing the old functions until bcachefs gets merged is the easiest
solution.

Honza
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR