Re: Nullblk configfs oddities

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux