Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jul 2000 22:28:35 -0700 (PDT)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/isofs/cd9660 cd9660_vfsops.c src/sys/kern vfs_subr.c vfs_vnops.c src/sys/miscfs/specfs spec_vnops.c src/sys/nfs nfs_subs.c src/sys/sys buf.h vnode.h src/sys/ufs/ffs ffs_extern.h ffs_softdep.c ffs_vfsops.c ffs_snapshot.c ...
Message-ID:  <200007240528.WAA13463@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
mckusick    2000/07/23 22:28:35 PDT

  Modified files:
    sys/isofs/cd9660     cd9660_vfsops.c 
    sys/kern             vfs_subr.c vfs_vnops.c 
    sys/miscfs/specfs    spec_vnops.c 
    sys/nfs              nfs_subs.c 
    sys/sys              buf.h vnode.h 
    sys/ufs/ffs          ffs_extern.h ffs_softdep.c ffs_vfsops.c 
                         ffs_snapshot.c 
    sys/ufs/mfs          mfs_vfsops.c 
    sys/ufs/ufs          ufs_bmap.c ufs_inode.c ufs_quota.c 
                         ufs_vnops.c 
  Log:
  This patch corrects the first round of panics and hangs reported
  with the new snapshot code.
  
  Update addaliasu to correctly implement the semantics of the old
  checkalias function. When a device vnode first comes into existence,
  check to see if an anonymous vnode for the same device was created
  at boot time by bdevvp(). If so, adopt the bdevvp vnode rather than
  creating a new vnode for the device. This corrects a problem which
  caused the kernel to panic when taking a snapshot of the root
  filesystem.
  
  Change the calling convention of vn_write_suspend_wait() to be the
  same as vn_start_write().
  
  Split out softdep_flushworklist() from softdep_flushfiles() so that
  it can be used to clear the work queue when suspending filesystem
  operations.
  
  Access to buffers becomes recursive so that snapshots can recursively
  traverse their indirect blocks using ffs_copyonwrite() when checking
  for the need for copy on write when flushing one of their own indirect
  blocks. This eliminates a deadlock between the syncer daemon and a
  process taking a snapshot.
  
  Ensure that softdep_process_worklist() can never block because of a
  snapshot being taken. This eliminates a problem with buffer starvation.
  
  Cleanup change in ffs_sync() which did not synchronously wait when
  MNT_WAIT was specified. The result was an unclean filesystem panic
  when doing forcible unmount with heavy filesystem I/O in progress.
  
  Return a zero'ed block when reading a block that was not in use at
  the time that a snapshot was taken. Normally, these blocks should
  never be read. However, the readahead code will occationally read
  them which can cause unexpected behavior.
  
  Clean up the debugging code that ensures that no blocks be written
  on a filesystem while it is suspended. Snapshots must explicitly
  label the blocks that they are writing during the suspension so that
  they do not cause a `write on suspended filesystem' panic.
  
  Reorganize ffs_copyonwrite() to eliminate a deadlock and also to
  prevent a race condition that would permit the same block to be
  copied twice. This change eliminates an unexpected soft updates
  inconsistency in fsck caused by the double allocation.
  
  Use bqrelse rather than brelse for buffers that will be needed
  soon again by the snapshot code. This improves snapshot performance.
  
  Revision  Changes    Path
  1.78      +3 -2      src/sys/isofs/cd9660/cd9660_vfsops.c
  1.267     +34 -4     src/sys/kern/vfs_subr.c
  1.99      +9 -7      src/sys/kern/vfs_vnops.c
  1.142     +5 -3      src/sys/miscfs/specfs/spec_vnops.c
  1.95      +3 -2      src/sys/nfs/nfs_subs.c
  1.106     +4 -3      src/sys/sys/buf.h
  1.120     +4 -3      src/sys/sys/vnode.h
  1.34      +2 -1      src/sys/ufs/ffs/ffs_extern.h
  1.71      +56 -37    src/sys/ufs/ffs/ffs_softdep.c
  1.125     +21 -12    src/sys/ufs/ffs/ffs_vfsops.c
  1.3       +47 -22    src/sys/ufs/ffs/ffs_snapshot.c
  1.85      +2 -2      src/sys/ufs/mfs/mfs_vfsops.c
  1.44      +24 -2     src/sys/ufs/ufs/ufs_bmap.c
  1.29      +4 -4      src/sys/ufs/ufs/ufs_inode.c
  1.35      +2 -2      src/sys/ufs/ufs/ufs_quota.c
  1.140     +3 -2      src/sys/ufs/ufs/ufs_vnops.c



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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