tech-kern archive

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

Re: vnd.c 1.254



On Jan 17,  5:52pm, Manuel Bouyer wrote:
} On Sun, Jan 17, 2016 at 11:04:23PM +0700, Robert Elz wrote:
} >     Date:        Sun, 17 Jan 2016 15:52:38 +0100
} >     From:        Manuel Bouyer <bouyer%antioche.eu.org@localhost>
} >     Message-ID:  <20160117145238.GA3118%asim.lip6.fr@localhost>
} > 
} >   | unless you run vnconfig in the chroot.
} > 
} > And /dev in the chroot has the same vnds in it that /dev has
} 
} I don't understand that. If you run in /, you get the busy/free devices
} in /dev, if you run in /chroot you get the busy/free devices in /chroot/dev.
} I can't see a problem with that.
} 
} > 
} >   | listing what is available in /dev makes sense to me, as, unless you have a
} >   | very special setup, you'll use what's in /dev/ anyway.
} > 
} > Usually, yes, but "usually works" isn't really good enough.
} 
} As long as the limitations are known and documented I don't have a
} problem with that. If we remove all softwares that only "usually works"
} we can just drop computers away
} 
} > 
} >   | You could use an option to list other devices in other directories.
} > 
} > You'd also need an option to give their names.   Consider
} > 
} > 	mknod mydir/foo-pt1 c 14 0
} > 	monod mydir/bar-pt2 c 14 1
} > 	mknod mydir/xxx-pt3 c 14 2
} > 	mknod mydir/vnd-raw c 14 4
} > 	vmconfig $(pwd)/mydir/vnd-raw /some/image/file
} > 	mknod other/foo-pt1 c 14 16
} > 	mknod other/bar-pt2 c 14 17
} > 	mknod other/xxx-pt3 c 14 18
} > 	mknod other/vnd-raw c 14 19
} > 	rm -f /dev/vnd*
} > 
} > What would you like vnconfig -l to list, and how would you expect to
} > achieve it?
} > 
} >   | or just list what's in /dev/
} > 
} > That's not backward compat with any NetBSD prior to NetBSD7.
} > Take your netbsd 5 that you used for the previous example, remove
} > all the /dev/vnd* (or move them somewhere) and try vnconfig -l
} > again.   I think you'll see the same output as you did before.
} 
} yes, but that's not how one would use it. One would use vnconfig -l
} to find a usable device in /dev, so you need the /dev entry.
} 
} > Similarly if you MAKEDEV vnd{5,6,7} it will still just list vnd 0..3
} 
} yes, and that's find because others are not usable even if they exists.
} But now that this limitation is gone I don't have a problem with
} listing all /dev entries.
} 
} > What is in /dev was always irrelevant.   NetBSD 7 is just broken in
} > this area.
} 
} I say that what's in /dev/ is now relevant because this is what limits
} the number of vnd you can use (and this limit can easily be raised if needed).
} Older vnconfig -l listing devices without checking that a /dev/ entry
} exists may also be seens as a bug.
} 
} > 
} >   | True, that's why I insist on vnconfig -l to list free devices as it used
} >   | to (although I don't use it myself).
} > 
} > If you can work out what that really means (not looking at /dev) in a
} > way that makes sense, that would be fine.  I cannot (other than listing
} > all 4 billion.)
} 
} The only limit is what's in /dev/ so listing what's in /dev is fine.
} 
} > 
} >   | I'm talking about vnconfig -l not listing free devices, no about
} >   | vnconfig getting spurious ENXIO
} > 
} > I know, and I still doubt that it matters.
} > 
} >   | it is a kernel and an userland from netbsd-7, not HEAD.
} > 
} > I understand.
} > 
} >   | Anyway vnconfig didn't change in netbsd-7 since 7.0.
} > 
} > It did, or should have.   The code that looked in /dev was ripped out.
} > If a pullup of that didn't happen, it should have.
} 
} You can check that. But a pullup that remove a functionality that
} has been there for at last 2 release should be rejected.
} 
} > 
} >   | And even if it did, I would expect vnconfig from 7.0_RELEASE to work
} >   | with a netbsd-7 kernel
} > 
} > Normally I would do, but ...
} > 
} >   | (for backward compat it's more important than a netbsd-6 vnconfig with
} >   | a netbsd-7 kernel)
} > 
} > I disagree.   The number of people upgrading 7.0 to -7 (and doing
} > it by only upgrading the kernel) is going to be far fewer than the
} > number upgrading from 6 (and earlier.)
} 
} of course not. I guess it's common to run userland from a release and
} kernel from the corresponding stable branch. Running a kernel from a
} different stable branch than userland is much less common (because you
} expect things to break, e.g. ipf).

     Actually, ipf has backwards compat these days.  There is very
little left that doesn't have backwards compat.

} > If a 7.0.1 had already
} > been released it wouldn't even be an issue.
} 
} That wouldn't change the problem at all.
} 
} > 
} >   | > All 4 billion of them?
} >   | No, what's in /dev/ as it used to do in 7.0-RELEASE
} > 
} > I bet it isn't.   MAKEDEV a few more vnds in /dev and try
} > again, changing nothing else.  If it appears to be listing
} > all that is in /dev, that is just co-incidence.
} 
} You didn't look at the code I guess.
} xen1:/root#uname -a
} NetBSD xen1.soc.lip6.fr 7.0_STABLE NetBSD 7.0_STABLE (XEN3_DOM0) #12: Wed Jan  6 16:47:39 CET 2016  bouyer@hop:/dsk/l1/misc/bouyer/tmp/amd64/obj/dsk/l1/misc/bouyer/netbsd-7/src/sys/arch/amd64/compile/XEN3_DOM0 amd64
} xen1:/root#head -15 /etc/release
} NetBSD 7.0_STABLE/amd64
} 
} Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
}     2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
}     The NetBSD Foundation, Inc.  All rights reserved.
} Copyright (c) 1982, 1986, 1989, 1991, 1993
}     The Regents of the University of California.  All rights reserved.
} 
} Build information:
}           Build date   Tue Jan 12 06:12:17 UTC 2016
}             Built by   builds%b45.netbsd.org@localhost
}             Build ID   201601120520Z
} [...]
} xen1:/root#vnconfig -l
} vnd0: /domains (/dev/wd0f) inode 3
} vnd4: not in use
} vnd5: not in use
} vnd6: not in use
} vnd7: not in use
} vnd1: /domains2 (/dev/raid1e) inode 4
} vnd2: not in use
} vnd3: not in use
} xen1:/root#cd /dev
} xen1:/dev#./MAKEDEV vnd9
} xen1:/dev#cd /
} xen1:/#vnconfig -l
} vnd0: /domains (/dev/wd0f) inode 3
} vnd4: not in use
} vnd5: not in use
} vnd6: not in use
} vnd7: not in use
} vnd1: /domains2 (/dev/raid1e) inode 4
} vnd2: not in use
} vnd3: not in use
} vnconfig: VNDIOCGET: Device not configured
} xen1:/#vnconfig -l vnd9
} vnd9: not in use
} xen1:/#vnconfig -l
} vnd0: /domains (/dev/wd0f) inode 3
} vnd4: not in use
} vnd5: not in use
} vnd6: not in use
} vnd7: not in use
} vnd1: /domains2 (/dev/raid1e) inode 4
} vnd2: not in use
} vnd3: not in use
} vnd9: not in use
} 
} as you can see what's in /dev/ matters.

     One could argue that not sorting the list is a bug. :->  Also,
spitting out strange errors under normal usage is a bad thing.
However, these are side issues to the real.  Except that spitting
out strange errors may be related to the real problem.

}-- End of excerpt from Manuel Bouyer


Home | Main Index | Thread Index | Old Index