No inline to keep dmu_recv_stream() stack frame less than 1024 bytes.

Recent builds against 2.6.31 flagged dmu_recv_stream() as stack heavy.
As a quick simple way to resolve this I'm preventing the inlining of
certain functions which gcc will inline here because this is the only
place they are called.  Futher analysis of this function should be
performed to futher reduce its stack usage.
This commit is contained in:
Brian Behlendorf 2009-12-18 14:22:02 -08:00
parent 83937eae80
commit 70ddc1393f
1 changed files with 5 additions and 5 deletions

View File

@ -689,7 +689,7 @@ restore_read(struct restorearg *ra, int len)
return (rv); return (rv);
} }
static void noinline static void
backup_byteswap(dmu_replay_record_t *drr) backup_byteswap(dmu_replay_record_t *drr)
{ {
#define DO64(X) (drr->drr_u.X = BSWAP_64(drr->drr_u.X)) #define DO64(X) (drr->drr_u.X = BSWAP_64(drr->drr_u.X))
@ -740,7 +740,7 @@ backup_byteswap(dmu_replay_record_t *drr)
#undef DO32 #undef DO32
} }
static int noinline static int
restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro) restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro)
{ {
int err; int err;
@ -822,7 +822,7 @@ restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro)
} }
/* ARGSUSED */ /* ARGSUSED */
static int noinline static int
restore_freeobjects(struct restorearg *ra, objset_t *os, restore_freeobjects(struct restorearg *ra, objset_t *os,
struct drr_freeobjects *drrfo) struct drr_freeobjects *drrfo)
{ {
@ -846,7 +846,7 @@ restore_freeobjects(struct restorearg *ra, objset_t *os,
return (0); return (0);
} }
static int noinline static int
restore_write(struct restorearg *ra, objset_t *os, restore_write(struct restorearg *ra, objset_t *os,
struct drr_write *drrw) struct drr_write *drrw)
{ {
@ -883,7 +883,7 @@ restore_write(struct restorearg *ra, objset_t *os,
} }
/* ARGSUSED */ /* ARGSUSED */
static int noinline static int
restore_free(struct restorearg *ra, objset_t *os, restore_free(struct restorearg *ra, objset_t *os,
struct drr_free *drrf) struct drr_free *drrf)
{ {