On Thursday 31 January 2008 1:00:43 pm Andriy Gapon wrote: > on 31/01/2008 18:52 John Baldwin said the following: > > On Thursday 31 January 2008 10:05:57 am Andriy Gapon wrote: > >> on 31/01/2008 14:39 Andriy Gapon said the following: > >>> on 31/01/2008 13:07 John Baldwin said the following: > >>>> On Wednesday 30 January 2008 12:39:14 pm Andriy Gapon wrote: > >>>>> The problem is as follows: > >>>>> 1. put udf_load="YES" in loader.conf > >>>>> 2. you can mount and unmount udf filesystems > >>>>> 3. you can kldunload udf if no udf filesystems are mounted > >>>>> 4. now mount udf fs while udf.ko is unloaded > >>>>> 5. udf is auto loaded and fs is mounted > >>>>> 6. unmount fs > >>>>> 7. try to kldunload udf > >>>>> kldunload: can't unload file: Device busy > >>>>> kernel message: kldunload: attempt to unload file that was loaded by the > >>>>> kernel > >>>>> > >>>>> Yeah, it was loaded by kernel indeed, but WTF - what is the difference > >>>>> from manual/loader.conf loading and why I can not manage my modules as I > >>>>> wish? > >>>> Hmm, the relevant code (vfs_init.c) hasn't changed in 6.x since 6.0. > > There > >>>> were some changes in 7.0, but this should work in both branches. What is > > the > >>>> previous release that this worked on? > >>>> > >>> Maybe I was wrong when I called this regression, but this was very > >>> surprising behavior for me. And in 5.X I did a lot of udf > >>> debugging/experimenting and never encountered such a problem. Maybe I > >>> always did kldload before mount, I can't tell now. > >>> Anyway, this seems like an annoyance at the very least, pinning a kernel > >>> module without any important reasons. > >>> > >> Hmm, I found one difference with previous setups: in step 1 I also have > >> udf_iconv_load="YES" and udf_iconv.ko module is what seems to prevent > >> udf.ko from unloading in step 7. I can actually unload udf_iconv and > >> then I am able again to unload udf. > >> > >> Still don't understand what is a big difference here. > >> > >> And if I had UDF_ICONV built into kernel then I wouldn't have this > >> work-around. > > > > Ah, I don't think we can safely unload modules loaded from the loader IIRC. > > > > John, > > maybe there is a small misunderstanding: > 1. udf.ko and udf_iconv.ko are both loaded by loader - I *can* unload udf.ko > 2. udf_iconv.ko is loaded by loader but udf.ko is auto-loaded (by > whatever) when I do mount_udf - I can not unload udf.ko unless I unload > udf_iconv.ko. > > This is inconsistent and there is no obvious reason for things being > this way.
VFS_DECLARE_ICONV() in <sys/iconv.h> has always made foo_iconv.ko depend on foo.ko from the beginning of its existence. Thus, udf_iconv.ko has always depended on udf.ko. I think if you had UDF_ICONV in your kernel config without UDF it would fail to link. What I do find odd is that udf_iconv.ko worked at all, perhaps the linker resolved it and linked it in when udf.ko was loaded, as prior to udf.ko being loaded it was missing a symbol in udf.ko it has a reference to. Either that or the loader was loading udf.ko as a dependency and you didn't realize it. -- John Baldwin _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"