Mounting cd9660 multiple times gives EBUSY [Was: unionfs a little improvement]

From: Ed Schouten <ed_at_80386.nl>
Date: Wed, 18 Aug 2010 12:48:53 +0200
Hi Daichi,

I think Keith Packard of Xorg once wrote a commit message along the
lines of "5000 lines of code removed, feature added" This seems to be
similar, albeit on a smaller scale. ;-)

Apart from this issue with unionfs, I am also experiencing another
issue, where for some reason I cannot perform a second mount of the CD
right after booting the system. Basically, my WIP FreeBSD boot CD does
the following (but written in C):

	mount -t cd9660 /dev/iso9660/freebsd /mnt
	mount -t tmpfs none /tmp
	mount -t unionfs /tmp /mnt
	mount -t devfs none /mnt/dev
	chroot /mnt /sbin/init

The first step fails with EBUSY. I use the following hack to get it
working, but I don't think it's the proper way to solve it:

%%%
Index: sys/geom/geom_vfs.c
===================================================================
--- sys/geom/geom_vfs.c	(revision 211093)
+++ sys/geom/geom_vfs.c	(working copy)
_at__at_ -162,8 +162,10 _at__at_
 
 	*cpp = NULL;
 	bo = &vp->v_bufobj;
+#if 0
 	if (bo->bo_private != vp)
 		return (EBUSY);
+#endif
 
 	pp = g_dev_getprovider(vp->v_rdev);
 	if (pp == NULL)
%%%

I am really not that familiar with GEOM/VFS to understand the impact of
this change. What does it actually mean if bo->bo_private != vp?

-- 
 Ed Schouten <ed_at_80386.nl>
 WWW: http://80386.nl/

Received on Wed Aug 18 2010 - 08:48:54 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:06 UTC