Mercurial > illumos > illumos-gate
changeset 4480:0976678e58c5
6544140 assertion failed: err == 0 (0x11 == 0x0), file: ../../common/fs/zfs/zfs_znode.c, line: 555
6565044 small race condition between zfs_umount() and ZFS_ENTER()
author | gw25295 |
---|---|
date | Fri, 15 Jun 2007 15:04:37 -0700 |
parents | f252e40a86a6 |
children | 2bb321aaf3c3 |
files | usr/src/uts/common/fs/zfs/dnode_sync.c usr/src/uts/common/fs/zfs/zfs_replay.c usr/src/uts/common/fs/zfs/zfs_vfsops.c |
diffstat | 3 files changed, 13 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/dnode_sync.c Fri Jun 15 10:21:53 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/dnode_sync.c Fri Jun 15 15:04:37 2007 -0700 @@ -494,6 +494,7 @@ dn->dn_type = DMU_OT_NONE; dn->dn_maxblkid = 0; dn->dn_allocated_txg = 0; + dn->dn_free_txg = 0; mutex_exit(&dn->dn_mtx); ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT);
--- a/usr/src/uts/common/fs/zfs/zfs_replay.c Fri Jun 15 10:21:53 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/zfs_replay.c Fri Jun 15 15:04:37 2007 -0700 @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -104,6 +104,10 @@ ZFS_TIME_DECODE(&va.va_ctime, lr->lr_crtime); va.va_nblocks = lr->lr_gen; + error = dmu_object_info(zfsvfs->z_os, lr->lr_foid, NULL); + if (error != ENOENT) + goto out; + switch ((int)lr->lr_common.lrc_txtype) { case TX_CREATE: error = VOP_CREATE(ZTOV(dzp), name, &va, 0, 0, &vp, kcred, 0); @@ -122,6 +126,7 @@ error = ENOTSUP; } +out: if (error == 0 && vp != NULL) VN_RELE(vp);
--- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c Fri Jun 15 10:21:53 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c Fri Jun 15 15:04:37 2007 -0700 @@ -1011,6 +1011,12 @@ zfsvfs->z_unmounted1 = B_TRUE; /* + * Ensure that z_unmounted1 reaches global visibility + * before z_op_cnt. + */ + membar_producer(); + + /* * Wait for all zfs threads to leave zfs. * Grabbing a rwlock as reader in all vops and * as writer here doesn't work because it too easy to get