On Tue, Apr 19, 2022 at 01:23:22PM +0900, Damien Le Moal wrote: > On 4/19/22 07:24, Jens Axboe wrote: > > On 4/18/22 4:21 PM, Chaitanya Kulkarni wrote: > >> On 4/18/22 15:14, Jens Axboe wrote: > >>> On 4/18/22 3:54 PM, Chaitanya Kulkarni wrote: > >>>> On 4/18/22 14:38, Josef Bacik wrote: > >>>>> Hello, > >>>>> > >>>>> I'm trying to add a test to fsperf and it requires the use of nullblk. I'm > >>>>> trying to use the configfs thing, and it's doing some odd things. My basic > >>>>> reproducer is > >>>>> > >>>>> modprobe null_blk > >>>>> mkdir /sys/kernel/config/nullb/nullb0 > >>>>> echo some shit into the config > >>>>> echo 1 > /sys/kernel/config/nullb/nullb0/power > >>>>> > >>>>> Now null_blk apparently defaults to nr_devices == 1, so it creates nullb0 on > >>>>> modprobe. But this doesn't show up in the configfs directory. There's no way > >>>>> to find this out until when I try to mkfs my nullb0 and it doesn't work. The > >>>>> above steps gets my device created at /dev/nullb1, but there's no actual way to > >>>>> figure out that's what happened. If I do something like > >>>>> /sys/kernel/config/nullb/nullbfsperf I still just get nullb<number>, I don't get > >>>>> my fancy name. > >>>>> > >>>> > >>>> when you load module with default module parameter it will create a > >>>> default device with no memory backed mode, that will not be visible in > >>>> the configfs. > >>> > >>> Right, the problem is really that pre-configured devices (via nr_devices > >>> being bigger than 0, which is the default) don't show up in configfs. > >>> That, to me, is the real issue here, because it means you need to know > >>> which ones are already setup before doing mkdir for a new one. > >>> > >>> On top of that, it's also odd that they don't show up there to begin > >>> with. > >>> > >> > >> it is indeed confusing, maybe we need to find a way to populate the > >> configfs when loading the module? but I'm not sure if that is > >> the right approach since configs ideally should be populated by > >> user. > >> > >> OTOH we can make the memory_backed module param [1] so user can > >> tentatively not use configfs and only rely on default configuration ? > > > > Arguably configfs should just be disabled if loading with nr_devices > > larger than 0, as it's a mess of an API as it stands. But probably too > > late for that. The fact that we also have an option that's specific to > > configfs just makes it even worse. > > > > I don't know much about configfs, but pre-populating with the configured > > devices and options would be ideal and completely solve this. I think > > that would be the best solution given the current situation. Not that > > it's THAT important, null_blk is a developer tool and as such can have > > some sharper and rouger edges. Still would be nice to make it saner, > > though. > > > > I came up with this. It does prepopulate configfs nullb directory with the > devices created on modprobe. But... doing an rmmod now always gives a > "rmmod: ERROR: Module null_blk is in use" because configfs takes a ref on > nullblk module for each entry. So the user now must do an rmdir of all > prepopulated devices before doing rmmod. Not ideal. And messing up with > the module references is probably not a good idea... > I meant to reply to this previously, I tried this and it worked fine for me. I'll leave it up to you guys if the new behavior is acceptable to you, but for me this worked. Thanks, Josef