Skip to content

Commit

Permalink
Merge commit 'refs/top-bases/top' into top
Browse files Browse the repository at this point in the history
  • Loading branch information
behlendorf committed Aug 13, 2010
2 parents 6c75d6f + 130331e commit 18568e1
Showing 1 changed file with 22 additions and 4 deletions.
26 changes: 22 additions & 4 deletions module/zfs/zio.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ int zio_buf_debug_limit = 16384;
int zio_buf_debug_limit = 0;
#endif

static inline void __zio_execute(zio_t *zio);

void
zio_init(void)
{
Expand Down Expand Up @@ -454,7 +456,7 @@ zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait)
if (--*countp == 0 && pio->io_stall == countp) {
pio->io_stall = NULL;
mutex_exit(&pio->io_lock);
zio_execute(pio);
__zio_execute(pio);
} else {
mutex_exit(&pio->io_lock);
}
Expand Down Expand Up @@ -1125,8 +1127,23 @@ zio_interrupt(zio_t *zio)
*/
static zio_pipe_stage_t *zio_pipeline[];

/*
* zio_execute() is a wrapper around the static function
* __zio_execute() so that we can force __zio_execute() to be
* inlined. This reduces stack overhead which is important
* because __zio_execute() is called recursively in several zio
* code paths. zio_execute() itself cannot be inlined because
* it is externally visible.
*/
void
zio_execute(zio_t *zio)
{
__zio_execute(zio);
}

__attribute__((always_inline))
static inline void
__zio_execute(zio_t *zio)
{
zio->io_executor = curthread;

Expand Down Expand Up @@ -1172,6 +1189,7 @@ zio_execute(zio_t *zio)
}
}


/*
* ==========================================================================
* Initiate I/O, either sync or async
Expand All @@ -1187,7 +1205,7 @@ zio_wait(zio_t *zio)

zio->io_waiter = curthread;

zio_execute(zio);
__zio_execute(zio);

mutex_enter(&zio->io_lock);
while (zio->io_executor != NULL)
Expand Down Expand Up @@ -1217,7 +1235,7 @@ zio_nowait(zio_t *zio)
zio_add_child(spa->spa_async_zio_root, zio);
}

zio_execute(zio);
__zio_execute(zio);
}

/*
Expand Down Expand Up @@ -1272,7 +1290,7 @@ zio_reexecute(zio_t *pio)
* responsibility of the caller to wait on him.
*/
if (!(pio->io_flags & ZIO_FLAG_GODFATHER))
zio_execute(pio);
__zio_execute(pio);
}

void
Expand Down

0 comments on commit 18568e1

Please sign in to comment.