Date: Sat, 14 Feb 1998 22:25:53 -0600 From: Chris Csanady <ccsanady@friley585.res.iastate.edu> To: freebsd-current@FreeBSD.ORG Subject: Soft Updates/CCD's don't work together--larger problems perhaps Message-ID: <199802150425.WAA00407@friley585.res.iastate.edu>
next in thread | raw e-mail | index | archive | help
As I have mentioned before, using Soft Updates and CCD's together cause
a panic in softdep_disk_io_initiation(). The problems seem to be
related to the ordering of the bioops.io_start() calls in
kern/vfs_cluster.c--it is possible to call this function with B_READ,
which will immediately causes the panic.
A couple thoughts.. Would it be ok to move around the flag assignment
as follows? Also, does there really need to be a call to bioops.io_start()
from cluster_rbuild? I noticed that OpenBSD has rearranged things so
that the flags are set before the call to bioops.io_start(), to avoid
just this problem. Also, they do not call it from cluster_rbuild either..
Could someone who knows more about the VFS code have a look at how the
Soft Updates code is integrated here?
Thanks,
Chris
*** vfs_cluster.c.old Sat Feb 14 22:16:20 1998
--- vfs_cluster.c Sat Feb 14 21:36:45 1998
***************
*** 722,727 ****
--- 722,729 ----
tbp->b_flags &= ~B_DONE;
splx(s);
}
+ tbp->b_flags &= ~(B_READ | B_DONE | B_ERROR |
B_DELWRI);
+ tbp->b_flags |= B_ASYNC;
/* check for latent dependencies to be handled */
if ((LIST_FIRST(&tbp->b_dep)) != NULL &&
bioops.io_start)
***************
*** 752,759 ****
bp->b_bufsize += size;
--numdirtybuffers;
- tbp->b_flags &= ~(B_READ | B_DONE | B_ERROR |
B_DELWRI);
- tbp->b_flags |= B_ASYNC;
s = splbio();
reassignbuf(tbp, tbp->b_vp); /* put on clean list */
++tbp->b_vp->v_numoutput;
--- 754,759 ----
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802150425.WAA00407>
