kern/122833: [snapshots] [patch] mountd fails on nmount() after
UFS snapshot creation with mount
Craig Rodrigues
rodrigc at crodrigues.org
Wed May 14 19:00:15 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 18:56:40 +0000
On Wed, May 14, 2008 at 11:18:52AM +0300, Jaakko Heinonen wrote:
> Following change is a possible quick fix for the bug:
>
> Index: ffs_vfsops.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_vfsops.c,v
> retrieving revision 1.336
> diff -p -u -r1.336 ffs_vfsops.c
> --- ffs_vfsops.c 24 Feb 2008 16:38:58 -0000 1.336
> +++ ffs_vfsops.c 13 May 2008 17:08:20 -0000
> @@ -183,9 +183,6 @@ ffs_mount(struct mount *mp, struct threa
> if (vfs_getopt(mp->mnt_optnew, "noclusterw", NULL, NULL) == 0)
> mntorflags |= MNT_NOCLUSTERW;
>
> - if (vfs_getopt(mp->mnt_optnew, "snapshot", NULL, NULL) == 0)
> - mntorflags |= MNT_SNAPSHOT;
> -
> MNT_ILOCK(mp);
> mp->mnt_flag = (mp->mnt_flag | mntorflags) & ~mntandnotflags;
> MNT_IUNLOCK(mp);
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:
int vfs_delopt(struct vfsoptlist *optlist, const char *optname);
Then the above code would change to:
if (vfs_getopt(mp->mnt_optnew, "snapshot", NULL, NULL) == 0) {
mntorflags |= MNT_SNAPSHOT;
vfs_delopt(mp->optnew, "snapshot");
}
--
Craig Rodrigues
rodrigc at crodrigues.org
More information about the freebsd-bugs
mailing list