Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 May 2008 21:10:03 GMT
From:      Craig Rodrigues <rodrigc@crodrigues.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/122833: [snapshots] [patch] mountd fails on nmount() after UFS snapshot creation with mount
Message-ID:  <200805142110.m4ELA37o016887@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/122833; it has been noted by GNATS.

From: Craig Rodrigues <rodrigc@crodrigues.org>
To: Jaakko Heinonen <jh@saunalahti.fi>
Cc: bug-followup@FreeBSD.org,
	Ga??l Roualland <gael.roualland@dial.oleane.com>,
	leon.kos@lecad.fs.uni-lj.si, rodrigc@FreeBSD.org,
	Yar Tikhiy <yar@comp.chem.msu.su>
Subject: Re: kern/122833: [snapshots] [patch] mountd fails on nmount() after UFS snapshot creation with mount
Date: Wed, 14 May 2008 21:01:44 +0000

 On Wed, May 14, 2008 at 06:56:40PM +0000, Craig Rodrigues wrote:
 > That fix is wrong.  The better fix would be to come up
 > with a function that traverses a vfs_optlist and deletes a string
 > option from the list.  Something like:
 
 Actually we have such a function.  We need to do to the "snapshot" option
 what we do to the "export" option in sys/kern/vfs_export.c.
 
 
 Index: ffs_vfsops.c
 ===================================================================
 RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_vfsops.c,v
 retrieving revision 1.340
 diff -u -r1.340 ffs_vfsops.c
 --- ffs_vfsops.c	26 Mar 2008 20:48:07 -0000	1.340
 +++ ffs_vfsops.c	14 May 2008 21:00:23 -0000
 @@ -183,8 +183,15 @@
  	if (vfs_getopt(mp->mnt_optnew, "noclusterw", NULL, NULL) == 0)
  		mntorflags |= MNT_NOCLUSTERW;
  
 -	if (vfs_getopt(mp->mnt_optnew, "snapshot", NULL, NULL) == 0)
 +	if (vfs_getopt(mp->mnt_optnew, "snapshot", NULL, NULL) == 0) {
  		mntorflags |= MNT_SNAPSHOT;
 +		/*
 +		 * Once we have set the MNT_SNAPSHOT flag, do not
 +		 * persist "snapshot" in the options list.
 +		 */
 +		vfs_deleteopt(mp->mnt_optnew, "snapshot");
 +		vfs_deleteopt(mp->mnt_opt, "snapshot");
 +	}
  
  	MNT_ILOCK(mp);
  	mp->mnt_flag = (mp->mnt_flag | mntorflags) & ~mntandnotflags;
 
 
 -- 
 Craig Rodrigues
 rodrigc@crodrigues.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805142110.m4ELA37o016887>