kern/122833: [snapshots] [patch] mountd fails on nmount() after
UFS snapshot creation with mount
Craig Rodrigues
rodrigc at crodrigues.org
Wed May 14 21:10:04 UTC 2008
The following reply was made to PR kern/122833; it has been noted by GNATS.
From: Craig Rodrigues <rodrigc at crodrigues.org>
To: Jaakko Heinonen <jh at saunalahti.fi>
Cc: bug-followup at FreeBSD.org,
Ga??l Roualland <gael.roualland at dial.oleane.com>,
leon.kos at lecad.fs.uni-lj.si, rodrigc at FreeBSD.org,
Yar Tikhiy <yar at 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 at crodrigues.org
More information about the freebsd-bugs
mailing list