Deleted Added
full compact
vfs_cluster.c (34206) vfs_cluster.c (34266)
1/*-
2 * Copyright (c) 1993
3 * The Regents of the University of California. All rights reserved.
4 * Modifications/enhancements:
5 * Copyright (c) 1995 John S. Dyson. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 19 unchanged lines hidden (view full) ---

28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * @(#)vfs_cluster.c 8.7 (Berkeley) 2/13/94
1/*-
2 * Copyright (c) 1993
3 * The Regents of the University of California. All rights reserved.
4 * Modifications/enhancements:
5 * Copyright (c) 1995 John S. Dyson. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 19 unchanged lines hidden (view full) ---

28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * @(#)vfs_cluster.c 8.7 (Berkeley) 2/13/94
36 * $Id: vfs_cluster.c,v 1.55 1998/02/06 12:13:30 eivind Exp $
36 * $Id: vfs_cluster.c,v 1.56 1998/03/07 21:35:28 dyson Exp $
37 */
38
39#include "opt_debug_cluster.h"
40
41#include <sys/param.h>
42#include <sys/systm.h>
43#include <sys/proc.h>
44#include <sys/buf.h>

--- 349 unchanged lines hidden (view full) ---

394 tbp->b_flags |= B_READ | B_ASYNC;
395 if (tbp->b_blkno == tbp->b_lblkno) {
396 tbp->b_blkno = bn;
397 } else if (tbp->b_blkno != bn) {
398 brelse(tbp);
399 break;
400 }
401 }
37 */
38
39#include "opt_debug_cluster.h"
40
41#include <sys/param.h>
42#include <sys/systm.h>
43#include <sys/proc.h>
44#include <sys/buf.h>

--- 349 unchanged lines hidden (view full) ---

394 tbp->b_flags |= B_READ | B_ASYNC;
395 if (tbp->b_blkno == tbp->b_lblkno) {
396 tbp->b_blkno = bn;
397 } else if (tbp->b_blkno != bn) {
398 brelse(tbp);
399 break;
400 }
401 }
402 /* check for latent dependencies to be handled */
403 if ((LIST_FIRST(&tbp->b_dep)) != NULL && bioops.io_start)
404 (*bioops.io_start)(tbp);
402 TAILQ_INSERT_TAIL(&bp->b_cluster.cluster_head,
403 tbp, b_cluster.cluster_entry);
404 for (j = 0; j < tbp->b_npages; j += 1) {
405 vm_page_t m;
406 m = tbp->b_pages[j];
407 ++m->busy;
408 ++m->object->paging_in_progress;
409 if ((bp->b_npages == 0) ||

--- 269 unchanged lines hidden (view full) ---

679
680 bp->b_blkno = tbp->b_blkno;
681 bp->b_lblkno = tbp->b_lblkno;
682 (vm_offset_t) bp->b_data |= ((vm_offset_t) tbp->b_data) & PAGE_MASK;
683 bp->b_flags |= B_CALL | B_BUSY | B_CLUSTER |
684 (tbp->b_flags & (B_VMIO|B_NEEDCOMMIT));
685 bp->b_iodone = cluster_callback;
686 pbgetvp(vp, bp);
405 TAILQ_INSERT_TAIL(&bp->b_cluster.cluster_head,
406 tbp, b_cluster.cluster_entry);
407 for (j = 0; j < tbp->b_npages; j += 1) {
408 vm_page_t m;
409 m = tbp->b_pages[j];
410 ++m->busy;
411 ++m->object->paging_in_progress;
412 if ((bp->b_npages == 0) ||

--- 269 unchanged lines hidden (view full) ---

682
683 bp->b_blkno = tbp->b_blkno;
684 bp->b_lblkno = tbp->b_lblkno;
685 (vm_offset_t) bp->b_data |= ((vm_offset_t) tbp->b_data) & PAGE_MASK;
686 bp->b_flags |= B_CALL | B_BUSY | B_CLUSTER |
687 (tbp->b_flags & (B_VMIO|B_NEEDCOMMIT));
688 bp->b_iodone = cluster_callback;
689 pbgetvp(vp, bp);
687
688 for (i = 0; i < len; ++i, ++start_lbn) {
689 if (i != 0) {
690 s = splbio();
691 if ((tbp = gbincore(vp, start_lbn)) == NULL) {
692 splx(s);
693 break;
694 }
695

--- 13 unchanged lines hidden (view full) ---

709 splx(s);
710 break;
711 }
712 bremfree(tbp);
713 tbp->b_flags |= B_BUSY;
714 tbp->b_flags &= ~B_DONE;
715 splx(s);
716 }
690 for (i = 0; i < len; ++i, ++start_lbn) {
691 if (i != 0) {
692 s = splbio();
693 if ((tbp = gbincore(vp, start_lbn)) == NULL) {
694 splx(s);
695 break;
696 }
697

--- 13 unchanged lines hidden (view full) ---

711 splx(s);
712 break;
713 }
714 bremfree(tbp);
715 tbp->b_flags |= B_BUSY;
716 tbp->b_flags &= ~B_DONE;
717 splx(s);
718 }
717
719 /* check for latent dependencies to be handled */
720 if ((LIST_FIRST(&tbp->b_dep)) != NULL &&
721 bioops.io_start)
722 (*bioops.io_start)(tbp);
718 if (tbp->b_flags & B_VMIO) {
719 vm_page_t m;
720
721 if (i != 0) {
722 for (j = 0; j < tbp->b_npages; j += 1) {
723 m = tbp->b_pages[j];
724 if (m->flags & PG_BUSY)
725 goto finishcluster;

--- 71 unchanged lines hidden ---
723 if (tbp->b_flags & B_VMIO) {
724 vm_page_t m;
725
726 if (i != 0) {
727 for (j = 0; j < tbp->b_npages; j += 1) {
728 m = tbp->b_pages[j];
729 if (m->flags & PG_BUSY)
730 goto finishcluster;

--- 71 unchanged lines hidden ---