Module Name: src Committed By: christos Date: Thu Oct 10 03:44:00 UTC 2019
Modified Files: src/sys/dev/raidframe: raidframevar.h rf_callback.c rf_callback.h rf_copyback.c rf_dag.h rf_dagdegrd.c rf_dagdegrd.h rf_dagdegwr.c rf_dagdegwr.h rf_dagffrd.c rf_dagffwr.c rf_dagffwr.h rf_dagfuncs.c rf_dagfuncs.h rf_dagutils.c rf_dagutils.h rf_desc.h rf_diskqueue.c rf_diskqueue.h rf_driver.c rf_engine.c rf_engine.h rf_evenodd_dagfuncs.c rf_evenodd_dagfuncs.h rf_evenodd_dags.c rf_netbsd.h rf_paritylog.c rf_paritylog.h rf_paritylogDiskMgr.c rf_paritylogDiskMgr.h rf_parityloggingdags.c rf_parityloggingdags.h rf_parityscan.c rf_parityscan.h rf_pq.c rf_pq.h rf_psstatus.c rf_psstatus.h rf_raid.h rf_raid1.c rf_reconbuffer.c rf_reconstruct.c rf_reconstruct.h rf_states.c rf_states.h rf_stripelocks.h Log Message: fix the function pointer and callback mess: - callback functions return 0 and their result is not checked; make them void. - there are two types of callbacks and they used to overload their parameters and the callback structure; separate them into "function" and "value" callbacks. - make the wait function signature consistent. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/dev/raidframe/raidframevar.h \ src/sys/dev/raidframe/rf_dagffrd.c src/sys/dev/raidframe/rf_dagutils.h \ src/sys/dev/raidframe/rf_desc.h cvs rdiff -u -r1.23 -r1.24 src/sys/dev/raidframe/rf_callback.c \ src/sys/dev/raidframe/rf_evenodd_dagfuncs.c cvs rdiff -u -r1.6 -r1.7 src/sys/dev/raidframe/rf_callback.h \ src/sys/dev/raidframe/rf_dagdegwr.h src/sys/dev/raidframe/rf_engine.h \ src/sys/dev/raidframe/rf_parityloggingdags.h cvs rdiff -u -r1.51 -r1.52 src/sys/dev/raidframe/rf_copyback.c cvs rdiff -u -r1.19 -r1.20 src/sys/dev/raidframe/rf_dag.h \ src/sys/dev/raidframe/rf_paritylog.c cvs rdiff -u -r1.30 -r1.31 src/sys/dev/raidframe/rf_dagdegrd.c \ src/sys/dev/raidframe/rf_dagfuncs.c cvs rdiff -u -r1.8 -r1.9 src/sys/dev/raidframe/rf_dagdegrd.h \ src/sys/dev/raidframe/rf_parityscan.h \ src/sys/dev/raidframe/rf_stripelocks.h cvs rdiff -u -r1.34 -r1.35 src/sys/dev/raidframe/rf_dagdegwr.c cvs rdiff -u -r1.35 -r1.36 src/sys/dev/raidframe/rf_dagffwr.c \ src/sys/dev/raidframe/rf_parityscan.c cvs rdiff -u -r1.7 -r1.8 src/sys/dev/raidframe/rf_dagffwr.h cvs rdiff -u -r1.10 -r1.11 src/sys/dev/raidframe/rf_dagfuncs.h cvs rdiff -u -r1.56 -r1.57 src/sys/dev/raidframe/rf_dagutils.c cvs rdiff -u -r1.55 -r1.56 src/sys/dev/raidframe/rf_diskqueue.c cvs rdiff -u -r1.24 -r1.25 src/sys/dev/raidframe/rf_diskqueue.h cvs rdiff -u -r1.135 -r1.136 src/sys/dev/raidframe/rf_driver.c cvs rdiff -u -r1.52 -r1.53 src/sys/dev/raidframe/rf_engine.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/raidframe/rf_evenodd_dagfuncs.h \ src/sys/dev/raidframe/rf_pq.h cvs rdiff -u -r1.4 -r1.5 src/sys/dev/raidframe/rf_evenodd_dags.c \ src/sys/dev/raidframe/rf_paritylogDiskMgr.h \ src/sys/dev/raidframe/rf_states.h cvs rdiff -u -r1.33 -r1.34 src/sys/dev/raidframe/rf_netbsd.h cvs rdiff -u -r1.12 -r1.13 src/sys/dev/raidframe/rf_paritylog.h cvs rdiff -u -r1.29 -r1.30 src/sys/dev/raidframe/rf_paritylogDiskMgr.c cvs rdiff -u -r1.22 -r1.23 src/sys/dev/raidframe/rf_parityloggingdags.c cvs rdiff -u -r1.16 -r1.17 src/sys/dev/raidframe/rf_pq.c cvs rdiff -u -r1.36 -r1.37 src/sys/dev/raidframe/rf_psstatus.c \ src/sys/dev/raidframe/rf_raid1.c cvs rdiff -u -r1.14 -r1.15 src/sys/dev/raidframe/rf_psstatus.h cvs rdiff -u -r1.47 -r1.48 src/sys/dev/raidframe/rf_raid.h cvs rdiff -u -r1.25 -r1.26 src/sys/dev/raidframe/rf_reconbuffer.c cvs rdiff -u -r1.122 -r1.123 src/sys/dev/raidframe/rf_reconstruct.c cvs rdiff -u -r1.28 -r1.29 src/sys/dev/raidframe/rf_reconstruct.h cvs rdiff -u -r1.50 -r1.51 src/sys/dev/raidframe/rf_states.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/raidframe/raidframevar.h diff -u src/sys/dev/raidframe/raidframevar.h:1.20 src/sys/dev/raidframe/raidframevar.h:1.21 --- src/sys/dev/raidframe/raidframevar.h:1.20 Wed Sep 25 21:36:10 2019 +++ src/sys/dev/raidframe/raidframevar.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: raidframevar.h,v 1.20 2019/09/26 01:36:10 christos Exp $ */ +/* $NetBSD: raidframevar.h,v 1.21 2019/10/10 03:43:59 christos Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. * All rights reserved. @@ -210,7 +210,8 @@ typedef RF_uint32 RF_RaidAccessFlags_t; typedef struct RF_AccessStripeMap_s RF_AccessStripeMap_t; typedef struct RF_AccessStripeMapHeader_s RF_AccessStripeMapHeader_t; typedef struct RF_AllocListElem_s RF_AllocListElem_t; -typedef struct RF_CallbackDesc_s RF_CallbackDesc_t; +typedef struct RF_CallbackFuncDesc_s RF_CallbackFuncDesc_t; +typedef struct RF_CallbackValueDesc_s RF_CallbackValueDesc_t; typedef struct RF_ChunkDesc_s RF_ChunkDesc_t; typedef struct RF_CommonLogData_s RF_CommonLogData_t; typedef struct RF_Config_s RF_Config_t; Index: src/sys/dev/raidframe/rf_dagffrd.c diff -u src/sys/dev/raidframe/rf_dagffrd.c:1.20 src/sys/dev/raidframe/rf_dagffrd.c:1.21 --- src/sys/dev/raidframe/rf_dagffrd.c:1.20 Sun Dec 11 00:27:00 2016 +++ src/sys/dev/raidframe/rf_dagffrd.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagffrd.c,v 1.20 2016/12/11 05:27:00 nat Exp $ */ +/* $NetBSD: rf_dagffrd.c,v 1.21 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagffrd.c,v 1.20 2016/12/11 05:27:00 nat Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagffrd.c,v 1.21 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -132,7 +132,7 @@ rf_CreateNonredundantDAG(RF_Raid_t *raid RF_DagNode_t *diskNodes, *blockNode, *commitNode, *termNode; RF_DagNode_t *tmpNode, *tmpdiskNode; RF_PhysDiskAddr_t *pda = asmap->physInfo; - int (*doFunc) (RF_DagNode_t *), (*undoFunc) (RF_DagNode_t *); + void (*doFunc) (RF_DagNode_t *), (*undoFunc) (RF_DagNode_t *); int i, n; const char *name; @@ -323,7 +323,7 @@ static void CreateMirrorReadDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, RF_DagHeader_t *dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t *allocList, - int (*readfunc) (RF_DagNode_t * node)) + void (*readfunc) (RF_DagNode_t * node)) { RF_DagNode_t *readNodes, *blockNode, *commitNode, *termNode; RF_DagNode_t *tmpNode, *tmpreadNode; Index: src/sys/dev/raidframe/rf_dagutils.h diff -u src/sys/dev/raidframe/rf_dagutils.h:1.20 src/sys/dev/raidframe/rf_dagutils.h:1.21 --- src/sys/dev/raidframe/rf_dagutils.h:1.20 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_dagutils.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagutils.h,v 1.20 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_dagutils.h,v 1.21 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -42,9 +42,9 @@ #define _RF__RF_DAGUTILS_H_ struct RF_RedFuncs_s { - int (*regular) (RF_DagNode_t *); + void (*regular) (RF_DagNode_t *); const char *RegularName; - int (*simple) (RF_DagNode_t *); + void (*simple) (RF_DagNode_t *); const char *SimpleName; }; @@ -57,9 +57,9 @@ extern const RF_RedFuncs_t rf_xorFuncs; extern const RF_RedFuncs_t rf_xorRecoveryFuncs; void rf_InitNode(RF_DagNode_t *, RF_NodeStatus_t, int, - int (*) (RF_DagNode_t *), - int (*) (RF_DagNode_t *), - int (*) (RF_DagNode_t *, int), + void (*) (RF_DagNode_t *), + void (*) (RF_DagNode_t *), + void (*) (void *, int), int, int, int, int, RF_DagHeader_t *, const char *, RF_AllocListElem_t *); Index: src/sys/dev/raidframe/rf_desc.h diff -u src/sys/dev/raidframe/rf_desc.h:1.20 src/sys/dev/raidframe/rf_desc.h:1.21 --- src/sys/dev/raidframe/rf_desc.h:1.20 Sun Mar 4 01:02:36 2007 +++ src/sys/dev/raidframe/rf_desc.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_desc.h,v 1.20 2007/03/04 06:02:36 christos Exp $ */ +/* $NetBSD: rf_desc.h,v 1.21 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -87,7 +87,7 @@ struct RF_RaidAccessDesc_s { struct buf *bp; /* buf pointer for this RAID acc */ RF_AccTraceEntry_t tracerec; /* perf monitoring information for a * user access (not for dag stats) */ - void (*callbackFunc) (RF_CBParam_t); /* callback function for this + void (*callbackFunc) (void *); /* callback function for this * I/O */ void *callbackArg; /* arg to give to callback func */ RF_RaidAccessDesc_t *next; Index: src/sys/dev/raidframe/rf_callback.c diff -u src/sys/dev/raidframe/rf_callback.c:1.23 src/sys/dev/raidframe/rf_callback.c:1.24 --- src/sys/dev/raidframe/rf_callback.c:1.23 Sun Feb 10 12:13:33 2019 +++ src/sys/dev/raidframe/rf_callback.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_callback.c,v 1.23 2019/02/10 17:13:33 christos Exp $ */ +/* $NetBSD: rf_callback.c,v 1.24 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_callback.c,v 1.23 2019/02/10 17:13:33 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_callback.c,v 1.24 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> #include <sys/pool.h> @@ -54,28 +54,43 @@ static void rf_ShutdownCallback(void *); static void rf_ShutdownCallback(void *ignored) { - pool_destroy(&rf_pools.callback); + pool_destroy(&rf_pools.callbackf); + pool_destroy(&rf_pools.callbackv); } int rf_ConfigureCallback(RF_ShutdownList_t **listp) { - rf_pool_init(&rf_pools.callback, sizeof(RF_CallbackDesc_t), - "rf_callbackpl", RF_MIN_FREE_CALLBACK, RF_MAX_FREE_CALLBACK); + rf_pool_init(&rf_pools.callbackf, sizeof(RF_CallbackFuncDesc_t), + "rf_callbackfpl", RF_MIN_FREE_CALLBACK, RF_MAX_FREE_CALLBACK); + rf_pool_init(&rf_pools.callbackv, sizeof(RF_CallbackValueDesc_t), + "rf_callbackvpl", RF_MIN_FREE_CALLBACK, RF_MAX_FREE_CALLBACK); rf_ShutdownCreate(listp, rf_ShutdownCallback, NULL); return (0); } -RF_CallbackDesc_t * -rf_AllocCallbackDesc(void) +RF_CallbackFuncDesc_t * +rf_AllocCallbackFuncDesc(void) { - return pool_get(&rf_pools.callback, PR_WAITOK); + return pool_get(&rf_pools.callbackf, PR_WAITOK); } void -rf_FreeCallbackDesc(RF_CallbackDesc_t *p) +rf_FreeCallbackFuncDesc(RF_CallbackFuncDesc_t *p) { - pool_put(&rf_pools.callback, p); + pool_put(&rf_pools.callbackf, p); +} + +RF_CallbackValueDesc_t * +rf_AllocCallbackValueDesc(void) +{ + return pool_get(&rf_pools.callbackv, PR_WAITOK); +} + +void +rf_FreeCallbackValueDesc(RF_CallbackValueDesc_t *p) +{ + pool_put(&rf_pools.callbackv, p); } Index: src/sys/dev/raidframe/rf_evenodd_dagfuncs.c diff -u src/sys/dev/raidframe/rf_evenodd_dagfuncs.c:1.23 src/sys/dev/raidframe/rf_evenodd_dagfuncs.c:1.24 --- src/sys/dev/raidframe/rf_evenodd_dagfuncs.c:1.23 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_evenodd_dagfuncs.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_evenodd_dagfuncs.c,v 1.23 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_evenodd_dagfuncs.c,v 1.24 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_evenodd_dagfuncs.c,v 1.23 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_evenodd_dagfuncs.c,v 1.24 2019/10/10 03:43:59 christos Exp $"); #include "rf_archs.h" @@ -66,14 +66,11 @@ RF_RedFuncs_t rf_eoERecoveryFuncs = {rf_ /********************************************************************************************** * the following encoding node functions is used in EO_000_CreateLargeWriteDAG **********************************************************************************************/ -int +void rf_RegularPEFunc(RF_DagNode_t *node) { rf_RegularESubroutine(node, node->results[1]); rf_RegularXorFunc(node);/* does the wakeup here! */ -#if 1 - return (0); /* XXX This was missing... GO */ -#endif } @@ -95,7 +92,7 @@ rf_RegularPEFunc(RF_DagNode_t *node) old data and new data, then encode temp buf into old 'E' buf to form new 'E', but this approach take the same speed as the previous, and need more memory. */ -int +void rf_RegularONEFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -149,12 +146,9 @@ rf_RegularONEFunc(RF_DagNode_t *node) RF_ETIMER_EVAL(timer); tracerec->q_us += RF_ETIMER_VAL_US(timer); rf_GenericWakeupFunc(node, 0); -#if 1 - return (0); /* XXX this was missing.. GO */ -#endif } -int +void rf_SimpleONEFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -187,9 +181,9 @@ rf_SimpleONEFunc(RF_DagNode_t *node) tracerec->q_us += RF_ETIMER_VAL_US(timer); } - return (rf_GenericWakeupFunc(node, retcode)); /* call wake func - * explicitly since no - * I/O in this node */ + rf_GenericWakeupFunc(node, retcode); /* call wake func + * explicitly since no + * I/O in this node */ } @@ -225,14 +219,11 @@ rf_RegularESubroutine(RF_DagNode_t *node /******************************************************************************************* * Used in EO_001_CreateLargeWriteDAG ******************************************************************************************/ -int +void rf_RegularEFunc(RF_DagNode_t *node) { rf_RegularESubroutine(node, node->results[0]); rf_GenericWakeupFunc(node, 0); -#if 1 - return (0); /* XXX this was missing?.. GO */ -#endif } /******************************************************************************************* * This degraded function allow only two case: @@ -283,15 +274,11 @@ rf_DegrESubroutine(RF_DagNode_t *node, c * failed in the stripe but not accessed at this time, then we should, instead, use * the rf_EOWriteDoubleRecoveryFunc(). **************************************************************************************/ -int +void rf_Degraded_100_EOFunc(RF_DagNode_t *node) { rf_DegrESubroutine(node, node->results[1]); rf_RecoveryXorFunc(node); /* does the wakeup here! */ -#if 1 - return (0); /* XXX this was missing... SHould these be - * void functions??? GO */ -#endif } /************************************************************************************** * This function is to encode one sector in one of the data disks to the E disk. @@ -395,7 +382,7 @@ rf_e_encToBuf( * to recover the data in dead disk. This function is used in the recovery node of * for EO_110_CreateReadDAG **************************************************************************************/ -int +void rf_RecoveryEFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -432,20 +419,17 @@ rf_RecoveryEFunc(RF_DagNode_t *node) RF_ETIMER_EVAL(timer); tracerec->xor_us += RF_ETIMER_VAL_US(timer); } - return (rf_GenericWakeupFunc(node, 0)); /* node execute successfully */ + rf_GenericWakeupFunc(node, 0); /* node execute successfully */ } /************************************************************************************** * This function is used in the case where one data and the parity have filed. * (in EO_110_CreateWriteDAG ) **************************************************************************************/ -int +void rf_EO_DegradedWriteEFunc(RF_DagNode_t * node) { rf_DegrESubroutine(node, node->results[0]); rf_GenericWakeupFunc(node, 0); -#if 1 - return (0); /* XXX Yet another one!! GO */ -#endif } @@ -643,7 +627,7 @@ rf_doubleEOdecode( * EO_200_CreateReadDAG * ***************************************************************************************/ -int +void rf_EvenOddDoubleRecoveryFunc(RF_DagNode_t *node) { int ndataParam = 0; @@ -828,9 +812,6 @@ rf_EvenOddDoubleRecoveryFunc(RF_DagNode_ tracerec->q_us += RF_ETIMER_VAL_US(timer); } rf_GenericWakeupFunc(node, 0); -#if 1 - return (0); /* XXX is this even close!!?!?!!? GO */ -#endif } @@ -839,7 +820,7 @@ rf_EvenOddDoubleRecoveryFunc(RF_DagNode_ * many accesses of single stripe unit. */ -int +void rf_EOWriteDoubleRecoveryFunc(RF_DagNode_t *node) { int np = node->numParams; @@ -962,6 +943,5 @@ rf_EOWriteDoubleRecoveryFunc(RF_DagNode_ tracerec->q_us += RF_ETIMER_VAL_US(timer); } rf_GenericWakeupFunc(node, 0); - return (0); } #endif /* RF_INCLUDE_EVENODD > 0 */ Index: src/sys/dev/raidframe/rf_callback.h diff -u src/sys/dev/raidframe/rf_callback.h:1.6 src/sys/dev/raidframe/rf_callback.h:1.7 --- src/sys/dev/raidframe/rf_callback.h:1.6 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_callback.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_callback.h,v 1.6 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_callback.h,v 1.7 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -46,16 +46,23 @@ #include <dev/raidframe/raidframevar.h> -struct RF_CallbackDesc_s { - void (*callbackFunc) (RF_CBParam_t); /* function to call */ - RF_CBParam_t callbackArg; /* args to give to function, or just - * info about this callback */ +struct RF_CallbackFuncDesc_s { + void (*callbackFunc) (void *); /* function to call */ + void *callbackArg; /* args to give to function, or just + * info about this callback */ + RF_CallbackFuncDesc_t *next;/* next entry in list */ +}; + +struct RF_CallbackValueDesc_s { + RF_uint64 v; RF_RowCol_t col; /* column IDs to give to the callback func */ - RF_CallbackDesc_t *next;/* next entry in list */ + RF_CallbackValueDesc_t *next;/* next entry in list */ }; int rf_ConfigureCallback(RF_ShutdownList_t ** listp); -RF_CallbackDesc_t *rf_AllocCallbackDesc(void); -void rf_FreeCallbackDesc(RF_CallbackDesc_t * p); +RF_CallbackFuncDesc_t *rf_AllocCallbackFuncDesc(void); +void rf_FreeCallbackFuncDesc(RF_CallbackFuncDesc_t * p); +RF_CallbackValueDesc_t *rf_AllocCallbackValueDesc(void); +void rf_FreeCallbackValueDesc(RF_CallbackValueDesc_t * p); #endif /* !_RF__RF_CALLBACK_H_ */ Index: src/sys/dev/raidframe/rf_dagdegwr.h diff -u src/sys/dev/raidframe/rf_dagdegwr.h:1.6 src/sys/dev/raidframe/rf_dagdegwr.h:1.7 --- src/sys/dev/raidframe/rf_dagdegwr.h:1.6 Sun May 14 17:45:00 2006 +++ src/sys/dev/raidframe/rf_dagdegwr.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegwr.h,v 1.6 2006/05/14 21:45:00 elad Exp $ */ +/* $NetBSD: rf_dagdegwr.h,v 1.7 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -38,7 +38,7 @@ void rf_CreateDegradedWriteDAG(RF_Raid_t void rf_CommonCreateSimpleDegradedWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, - int nfaults, int (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); + int nfaults, void (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); void rf_WriteGenerateFailedAccessASMs(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_PhysDiskAddr_t ** pdap, @@ -49,6 +49,6 @@ void rf_DoubleDegSmallWrite(RF_Raid_t * RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, const char *redundantReadNodeName, const char *redundantWriteNodeName, const char *recoveryNodeName, - int (*recovFunc) (RF_DagNode_t *)); + void (*recovFunc) (RF_DagNode_t *)); #endif /* !_RF__RF_DAGDEGWR_H_ */ Index: src/sys/dev/raidframe/rf_engine.h diff -u src/sys/dev/raidframe/rf_engine.h:1.6 src/sys/dev/raidframe/rf_engine.h:1.7 --- src/sys/dev/raidframe/rf_engine.h:1.6 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_engine.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_engine.h,v 1.6 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_engine.h,v 1.7 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -36,7 +36,7 @@ #define _RF__RF_ENGINE_H_ int rf_ConfigureEngine(RF_ShutdownList_t **, RF_Raid_t *, RF_Config_t *); -int rf_FinishNode(RF_DagNode_t *, int); /* return finished node to engine */ +void rf_FinishNode(RF_DagNode_t *, int);/* return finished node to engine */ int rf_DispatchDAG(RF_DagHeader_t *, void (*cbFunc) (void *), void *); /* execute dag */ Index: src/sys/dev/raidframe/rf_parityloggingdags.h diff -u src/sys/dev/raidframe/rf_parityloggingdags.h:1.6 src/sys/dev/raidframe/rf_parityloggingdags.h:1.7 --- src/sys/dev/raidframe/rf_parityloggingdags.h:1.6 Thu Aug 17 13:11:28 2006 +++ src/sys/dev/raidframe/rf_parityloggingdags.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_parityloggingdags.h,v 1.6 2006/08/17 17:11:28 christos Exp $ */ +/* $NetBSD: rf_parityloggingdags.h,v 1.7 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -39,7 +39,7 @@ void rf_CommonCreateParityLoggingLargeWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, - int nfaults, int (*redFunc) (RF_DagNode_t *)); + int nfaults, void (*redFunc) (RF_DagNode_t *)); void rf_CommonCreateParityLoggingSmallWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, @@ -49,7 +49,7 @@ void rf_CommonCreateParityLoggingSmal void rf_CreateParityLoggingLargeWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, - int nfaults, int (*redFunc) (RF_DagNode_t *)); + int nfaults, void (*redFunc) (RF_DagNode_t *)); void rf_CreateParityLoggingSmallWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, Index: src/sys/dev/raidframe/rf_copyback.c diff -u src/sys/dev/raidframe/rf_copyback.c:1.51 src/sys/dev/raidframe/rf_copyback.c:1.52 --- src/sys/dev/raidframe/rf_copyback.c:1.51 Fri Feb 8 22:33:59 2019 +++ src/sys/dev/raidframe/rf_copyback.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_copyback.c,v 1.51 2019/02/09 03:33:59 christos Exp $ */ +/* $NetBSD: rf_copyback.c,v 1.52 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -38,7 +38,7 @@ ****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_copyback.c,v 1.51 2019/02/09 03:33:59 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_copyback.c,v 1.52 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -61,8 +61,8 @@ __KERNEL_RCSID(0, "$NetBSD: rf_copyback. int rf_copyback_in_progress; -static int rf_CopybackReadDoneProc(RF_CopybackDesc_t * desc, int status); -static int rf_CopybackWriteDoneProc(RF_CopybackDesc_t * desc, int status); +static void rf_CopybackReadDoneProc(void *, int); +static void rf_CopybackWriteDoneProc(void *, int); static void rf_CopybackOne(RF_CopybackDesc_t * desc, int typ, RF_RaidAddr_t addr, RF_RowCol_t testCol, RF_SectorNum_t testOffs); @@ -334,13 +334,11 @@ rf_CopybackOne(RF_CopybackDesc_t *desc, /* create reqs to read the old location & write the new */ desc->readreq = rf_CreateDiskQueueData(RF_IO_TYPE_READ, spOffs, - sectPerSU, desc->databuf, 0L, 0, - (int (*) (void *, int)) rf_CopybackReadDoneProc, desc, + sectPerSU, desc->databuf, 0L, 0, rf_CopybackReadDoneProc, desc, NULL, (void *) raidPtr, RF_DISKQUEUE_DATA_FLAGS_NONE, NULL, PR_WAITOK); desc->writereq = rf_CreateDiskQueueData(RF_IO_TYPE_WRITE, testOffs, - sectPerSU, desc->databuf, 0L, 0, - (int (*) (void *, int)) rf_CopybackWriteDoneProc, desc, + sectPerSU, desc->databuf, 0L, 0, rf_CopybackWriteDoneProc, desc, NULL, (void *) raidPtr, RF_DISKQUEUE_DATA_FLAGS_NONE, NULL, PR_WAITOK); desc->fcol = testCol; @@ -368,9 +366,10 @@ rf_CopybackOne(RF_CopybackDesc_t *desc, /* called at interrupt context when the read has completed. just send out the write */ -static int -rf_CopybackReadDoneProc(RF_CopybackDesc_t *desc, int status) +static void +rf_CopybackReadDoneProc(void *v, int status) { + RF_CopybackDesc_t *desc = v; if (status) { /* invoke the callback with bad status */ printf("raid%d: copyback read failed. Aborting.\n", desc->raidPtr->raidid); @@ -378,23 +377,22 @@ rf_CopybackReadDoneProc(RF_CopybackDesc_ } else { rf_DiskIOEnqueue(&(desc->raidPtr->Queues[desc->fcol]), desc->writereq, RF_IO_NORMAL_PRIORITY); } - return (0); } /* called at interrupt context when the write has completed. * at user level & in the kernel, wake up the copyback thread. * in the simulator, invoke the next copyback directly. * can't free diskqueuedata structs in the kernel b/c we're at interrupt context. */ -static int -rf_CopybackWriteDoneProc(RF_CopybackDesc_t *desc, int status) +static void +rf_CopybackWriteDoneProc(void *v, int status) { + RF_CopybackDesc_t *desc = v; if (status && status != -100) { printf("raid%d: copyback write failed. Aborting.\n", desc->raidPtr->raidid); } desc->status = status; rf_MCPairWakeupFunc(desc->mcpair); - return (0); } /* invoked when the copyback has completed */ static void Index: src/sys/dev/raidframe/rf_dag.h diff -u src/sys/dev/raidframe/rf_dag.h:1.19 src/sys/dev/raidframe/rf_dag.h:1.20 --- src/sys/dev/raidframe/rf_dag.h:1.19 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_dag.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dag.h,v 1.19 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_dag.h,v 1.20 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -89,11 +89,11 @@ typedef RF_uint8 RF_DagNodeFlags_t; struct RF_DagNode_s { RF_NodeStatus_t status; /* current status of this node */ - int (*doFunc) (RF_DagNode_t *); /* normal function */ - int (*undoFunc) (RF_DagNode_t *); /* func to remove effect of + void (*doFunc) (RF_DagNode_t *); /* normal function */ + void (*undoFunc) (RF_DagNode_t *); /* func to remove effect of * doFunc */ - int (*wakeFunc) (RF_DagNode_t *, int status); /* func called when the - * node completes an I/O */ + void (*wakeFunc) (void *, int); /* func called when the + * node completes an I/O */ int numParams; /* number of parameters required by *funcPtr */ int numResults; /* number of results produced by *funcPtr */ int numAntecedents; /* number of antecedents */ Index: src/sys/dev/raidframe/rf_paritylog.c diff -u src/sys/dev/raidframe/rf_paritylog.c:1.19 src/sys/dev/raidframe/rf_paritylog.c:1.20 --- src/sys/dev/raidframe/rf_paritylog.c:1.19 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_paritylog.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_paritylog.c,v 1.19 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_paritylog.c,v 1.20 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_paritylog.c,v 1.19 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_paritylog.c,v 1.20 2019/10/10 03:43:59 christos Exp $"); #include "rf_archs.h" @@ -262,7 +262,7 @@ rf_CreateParityLogData( RF_PhysDiskAddr_t * pda, void *bufPtr, RF_Raid_t * raidPtr, - int (*wakeFunc) (RF_DagNode_t * node, int status), + void (*wakeFunc)(void *, int), void *wakeArg, RF_AccTraceEntry_t * tracerec, RF_Etimer_t startTime) @@ -669,7 +669,7 @@ rf_ParityLogAppend( RF_ParityLog_t *log; RF_Raid_t *raidPtr; RF_Etimer_t timer; - int (*wakeFunc) (RF_DagNode_t * node, int status); + void (*wakeFunc) (void *, int); void *wakeArg; /* Add parity to the appropriate log, one sector at a time. This Index: src/sys/dev/raidframe/rf_dagdegrd.c diff -u src/sys/dev/raidframe/rf_dagdegrd.c:1.30 src/sys/dev/raidframe/rf_dagdegrd.c:1.31 --- src/sys/dev/raidframe/rf_dagdegrd.c:1.30 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_dagdegrd.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegrd.c,v 1.30 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_dagdegrd.c,v 1.31 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagdegrd.c,v 1.30 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagdegrd.c,v 1.31 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -1040,7 +1040,7 @@ rf_DoubleDegRead(RF_Raid_t *raidPtr, RF_ RF_AllocListElem_t *allocList, const char *redundantReadNodeName, const char *recoveryNodeName, - int (*recovFunc) (RF_DagNode_t *)) + void (*recovFunc) (RF_DagNode_t *)) { RF_RaidLayout_t *layoutPtr = &(raidPtr->Layout); RF_DagNode_t *nodes, *rudNodes, *rrdNodes, *recoveryNode, *blockNode, Index: src/sys/dev/raidframe/rf_dagfuncs.c diff -u src/sys/dev/raidframe/rf_dagfuncs.c:1.30 src/sys/dev/raidframe/rf_dagfuncs.c:1.31 --- src/sys/dev/raidframe/rf_dagfuncs.c:1.30 Mon Mar 23 14:38:54 2009 +++ src/sys/dev/raidframe/rf_dagfuncs.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagfuncs.c,v 1.30 2009/03/23 18:38:54 oster Exp $ */ +/* $NetBSD: rf_dagfuncs.c,v 1.31 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagfuncs.c,v 1.30 2009/03/23 18:38:54 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagfuncs.c,v 1.31 2019/10/10 03:43:59 christos Exp $"); #include <sys/param.h> #include <sys/ioctl.h> @@ -71,13 +71,13 @@ __KERNEL_RCSID(0, "$NetBSD: rf_dagfuncs. #include "rf_paritylog.h" #endif /* RF_INCLUDE_PARITYLOGGING > 0 */ -int (*rf_DiskReadFunc) (RF_DagNode_t *); -int (*rf_DiskWriteFunc) (RF_DagNode_t *); -int (*rf_DiskReadUndoFunc) (RF_DagNode_t *); -int (*rf_DiskWriteUndoFunc) (RF_DagNode_t *); -int (*rf_RegularXorUndoFunc) (RF_DagNode_t *); -int (*rf_SimpleXorUndoFunc) (RF_DagNode_t *); -int (*rf_RecoveryXorUndoFunc) (RF_DagNode_t *); +void (*rf_DiskReadFunc) (RF_DagNode_t *); +void (*rf_DiskWriteFunc) (RF_DagNode_t *); +void (*rf_DiskReadUndoFunc) (RF_DagNode_t *); +void (*rf_DiskWriteUndoFunc) (RF_DagNode_t *); +void (*rf_RegularXorUndoFunc) (RF_DagNode_t *); +void (*rf_SimpleXorUndoFunc) (RF_DagNode_t *); +void (*rf_RecoveryXorUndoFunc) (RF_DagNode_t *); /***************************************************************************** * main (only) configuration routine for this module @@ -102,18 +102,17 @@ rf_ConfigureDAGFuncs(RF_ShutdownList_t * /***************************************************************************** * the execution function associated with a terminate node ****************************************************************************/ -int +void rf_TerminateFunc(RF_DagNode_t *node) { RF_ASSERT(node->dagHdr->numCommits == node->dagHdr->numCommitNodes); node->status = rf_good; - return (rf_FinishNode(node, RF_THREAD_CONTEXT)); + rf_FinishNode(node, RF_THREAD_CONTEXT); } -int +void rf_TerminateUndoFunc(RF_DagNode_t *node) { - return (0); } @@ -130,32 +129,31 @@ rf_TerminateUndoFunc(RF_DagNode_t *node) * ****************************************************************************/ -int +void rf_DiskReadMirrorIdleFunc(RF_DagNode_t *node) { /* select the mirror copy with the shortest queue and fill in node * parameters with physical disk address */ rf_SelectMirrorDiskIdle(node); - return (rf_DiskReadFunc(node)); + rf_DiskReadFunc(node); } #if (RF_INCLUDE_CHAINDECLUSTER > 0) || (RF_INCLUDE_INTERDECLUSTER > 0) || (RF_DEBUG_VALIDATE_DAG > 0) -int +void rf_DiskReadMirrorPartitionFunc(RF_DagNode_t *node) { /* select the mirror copy with the shortest queue and fill in node * parameters with physical disk address */ rf_SelectMirrorDiskPartition(node); - return (rf_DiskReadFunc(node)); + rf_DiskReadFunc(node); } #endif -int +void rf_DiskReadMirrorUndoFunc(RF_DagNode_t *node) { - return (0); } @@ -164,7 +162,7 @@ rf_DiskReadMirrorUndoFunc(RF_DagNode_t * /***************************************************************************** * the execution function associated with a parity log update node ****************************************************************************/ -int +void rf_ParityLogUpdateFunc(RF_DagNode_t *node) { RF_PhysDiskAddr_t *pda = (RF_PhysDiskAddr_t *) node->params[0].p; @@ -181,7 +179,7 @@ rf_ParityLogUpdateFunc(RF_DagNode_t *nod #endif logData = rf_CreateParityLogData(RF_UPDATE, pda, bf, (RF_Raid_t *) (node->dagHdr->raidPtr), - node->wakeFunc, (void *) node, + node->wakeFunc, node, node->dagHdr->tracerec, timer); if (logData) rf_ParityLogAppend(logData, RF_FALSE, NULL, RF_FALSE); @@ -194,14 +192,13 @@ rf_ParityLogUpdateFunc(RF_DagNode_t *nod (node->wakeFunc) (node, ENOMEM); } } - return (0); } /***************************************************************************** * the execution function associated with a parity log overwrite node ****************************************************************************/ -int +void rf_ParityLogOverwriteFunc(RF_DagNode_t *node) { RF_PhysDiskAddr_t *pda = (RF_PhysDiskAddr_t *) node->params[0].p; @@ -218,7 +215,7 @@ rf_ParityLogOverwriteFunc(RF_DagNode_t * #endif logData = rf_CreateParityLogData(RF_OVERWRITE, pda, bf, (RF_Raid_t *) (node->dagHdr->raidPtr), - node->wakeFunc, (void *) node, node->dagHdr->tracerec, timer); + node->wakeFunc, node, node->dagHdr->tracerec, timer); if (logData) rf_ParityLogAppend(logData, RF_FALSE, NULL, RF_FALSE); else { @@ -230,44 +227,41 @@ rf_ParityLogOverwriteFunc(RF_DagNode_t * (node->wakeFunc) (node, ENOMEM); } } - return (0); } -int +void rf_ParityLogUpdateUndoFunc(RF_DagNode_t *node) { - return (0); } -int +void rf_ParityLogOverwriteUndoFunc(RF_DagNode_t *node) { - return (0); } #endif /* RF_INCLUDE_PARITYLOGGING > 0 */ /***************************************************************************** * the execution function associated with a NOP node ****************************************************************************/ -int +void rf_NullNodeFunc(RF_DagNode_t *node) { node->status = rf_good; - return (rf_FinishNode(node, RF_THREAD_CONTEXT)); + rf_FinishNode(node, RF_THREAD_CONTEXT); } -int +void rf_NullNodeUndoFunc(RF_DagNode_t *node) { node->status = rf_undone; - return (rf_FinishNode(node, RF_THREAD_CONTEXT)); + rf_FinishNode(node, RF_THREAD_CONTEXT); } /***************************************************************************** * the execution function associated with a disk-read node ****************************************************************************/ -int +void rf_DiskReadFuncForThreads(RF_DagNode_t *node) { RF_DiskQueueData_t *req; @@ -284,9 +278,7 @@ rf_DiskReadFuncForThreads(RF_DagNode_t * b_proc = (void *) ((struct buf *) node->dagHdr->bp)->b_proc; req = rf_CreateDiskQueueData(iotype, pda->startSector, pda->numSector, - bf, parityStripeID, which_ru, - (int (*) (void *, int)) node->wakeFunc, - node, + bf, parityStripeID, which_ru, node->wakeFunc, node, #if RF_ACC_TRACE > 0 node->dagHdr->tracerec, #else @@ -299,14 +291,13 @@ rf_DiskReadFuncForThreads(RF_DagNode_t * node->dagFuncData = (void *) req; rf_DiskIOEnqueue(&(dqs[pda->col]), req, priority); } - return (0); } /***************************************************************************** * the execution function associated with a disk-write node ****************************************************************************/ -int +void rf_DiskWriteFuncForThreads(RF_DagNode_t *node) { RF_DiskQueueData_t *req; @@ -324,9 +315,7 @@ rf_DiskWriteFuncForThreads(RF_DagNode_t /* normal processing (rollaway or forward recovery) begins here */ req = rf_CreateDiskQueueData(iotype, pda->startSector, pda->numSector, - bf, parityStripeID, which_ru, - (int (*) (void *, int)) node->wakeFunc, - (void *) node, + bf, parityStripeID, which_ru, node->wakeFunc, node, #if RF_ACC_TRACE > 0 node->dagHdr->tracerec, #else @@ -341,15 +330,13 @@ rf_DiskWriteFuncForThreads(RF_DagNode_t node->dagFuncData = (void *) req; rf_DiskIOEnqueue(&(dqs[pda->col]), req, priority); } - - return (0); } /***************************************************************************** * the undo function for disk nodes * Note: this is not a proper undo of a write node, only locks are released. * old data is not restored to disk! ****************************************************************************/ -int +void rf_DiskUndoFunc(RF_DagNode_t *node) { RF_DiskQueueData_t *req; @@ -357,9 +344,7 @@ rf_DiskUndoFunc(RF_DagNode_t *node) RF_DiskQueue_t *dqs = ((RF_Raid_t *) (node->dagHdr->raidPtr))->Queues; req = rf_CreateDiskQueueData(RF_IO_TYPE_NOP, - 0L, 0, NULL, 0L, 0, - (int (*) (void *, int)) node->wakeFunc, - (void *) node, + 0L, 0, NULL, 0L, 0, node->wakeFunc, node, #if RF_ACC_TRACE > 0 node->dagHdr->tracerec, #else @@ -373,8 +358,6 @@ rf_DiskUndoFunc(RF_DagNode_t *node) node->dagFuncData = (void *) req; rf_DiskIOEnqueue(&(dqs[pda->col]), req, RF_IO_NORMAL_PRIORITY); } - - return (0); } /***************************************************************************** @@ -382,9 +365,10 @@ rf_DiskUndoFunc(RF_DagNode_t *node) * op completes, the routine is called to set the node status and * inform the execution engine that the node has fired. ****************************************************************************/ -int -rf_GenericWakeupFunc(RF_DagNode_t *node, int status) +void +rf_GenericWakeupFunc(void *v, int status) { + RF_DagNode_t *node = v; switch (node->status) { case rf_fired: @@ -409,7 +393,7 @@ rf_GenericWakeupFunc(RF_DagNode_t *node, } if (node->dagFuncData) rf_FreeDiskQueueData((RF_DiskQueueData_t *) node->dagFuncData); - return (rf_FinishNode(node, RF_INTR_CONTEXT)); + rf_FinishNode(node, RF_INTR_CONTEXT); } @@ -438,7 +422,7 @@ rf_GenericWakeupFunc(RF_DagNode_t *node, * assume the result field points to a buffer that is the size of one * SU, and use the pda params to determine where within the buffer to * XOR the input buffers. */ -int +void rf_RegularXorFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -465,12 +449,12 @@ rf_RegularXorFunc(RF_DagNode_t *node) tracerec->xor_us += RF_ETIMER_VAL_US(timer); #endif } - return (rf_GenericWakeupFunc(node, retcode)); /* call wake func - * explicitly since no - * I/O in this node */ + rf_GenericWakeupFunc(node, retcode); /* call wake func + * explicitly since no + * I/O in this node */ } /* xor the inputs into the result buffer, ignoring placement issues */ -int +void rf_SimpleXorFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -496,9 +480,9 @@ rf_SimpleXorFunc(RF_DagNode_t *node) tracerec->xor_us += RF_ETIMER_VAL_US(timer); #endif } - return (rf_GenericWakeupFunc(node, retcode)); /* call wake func - * explicitly since no - * I/O in this node */ + rf_GenericWakeupFunc(node, retcode); /* call wake func + * explicitly since no + * I/O in this node */ } /* this xor is used by the degraded-mode dag functions to recover lost * data. the second-to-last parameter is the PDA for the failed @@ -507,7 +491,7 @@ rf_SimpleXorFunc(RF_DagNode_t *node) * sectors in the failed PDA. It then uses the other PDAs in the * parameter list to determine where within the target buffer the * corresponding data should be xored. */ -int +void rf_RecoveryXorFunc(RF_DagNode_t *node) { RF_Raid_t *raidPtr = (RF_Raid_t *) node->params[node->numParams - 1].p; @@ -540,7 +524,7 @@ rf_RecoveryXorFunc(RF_DagNode_t *node) tracerec->xor_us += RF_ETIMER_VAL_US(timer); #endif } - return (rf_GenericWakeupFunc(node, retcode)); + rf_GenericWakeupFunc(node, retcode); } /***************************************************************************** * The next three functions are utilities used by the above Index: src/sys/dev/raidframe/rf_dagdegrd.h diff -u src/sys/dev/raidframe/rf_dagdegrd.h:1.8 src/sys/dev/raidframe/rf_dagdegrd.h:1.9 --- src/sys/dev/raidframe/rf_dagdegrd.h:1.8 Wed Apr 26 13:08:48 2006 +++ src/sys/dev/raidframe/rf_dagdegrd.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegrd.h,v 1.8 2006/04/26 17:08:48 oster Exp $ */ +/* $NetBSD: rf_dagdegrd.h,v 1.9 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -58,6 +58,6 @@ void rf_DoubleDegRead(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, const char *redundantReadNodeName, - const char *recoveryNodeName, int (*recovFunc) (RF_DagNode_t *)); + const char *recoveryNodeName, void (*recovFunc) (RF_DagNode_t *)); #endif /* !_RF__RF_DAGDEGRD_H_ */ Index: src/sys/dev/raidframe/rf_parityscan.h diff -u src/sys/dev/raidframe/rf_parityscan.h:1.8 src/sys/dev/raidframe/rf_parityscan.h:1.9 --- src/sys/dev/raidframe/rf_parityscan.h:1.8 Tue Nov 17 13:54:26 2009 +++ src/sys/dev/raidframe/rf_parityscan.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_parityscan.h,v 1.8 2009/11/17 18:54:26 jld Exp $ */ +/* $NetBSD: rf_parityscan.h,v 1.9 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -42,7 +42,7 @@ int rf_VerifyParity(RF_Raid_t *, RF_Acce int rf_TryToRedirectPDA(RF_Raid_t *, RF_PhysDiskAddr_t *, int); int rf_VerifyDegrModeWrite(RF_Raid_t *, RF_AccessStripeMapHeader_t *); RF_DagHeader_t *rf_MakeSimpleDAG(RF_Raid_t *, int, int, char *, - int (*)(RF_DagNode_t *), int (*) (RF_DagNode_t *), const char *, + void (*)(RF_DagNode_t *), void (*) (RF_DagNode_t *), const char *, RF_AllocListElem_t *, RF_RaidAccessFlags_t, int); #define RF_DO_CORRECT_PARITY 1 Index: src/sys/dev/raidframe/rf_stripelocks.h diff -u src/sys/dev/raidframe/rf_stripelocks.h:1.8 src/sys/dev/raidframe/rf_stripelocks.h:1.9 --- src/sys/dev/raidframe/rf_stripelocks.h:1.8 Thu May 5 04:21:29 2011 +++ src/sys/dev/raidframe/rf_stripelocks.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_stripelocks.h,v 1.8 2011/05/05 08:21:29 mrg Exp $ */ +/* $NetBSD: rf_stripelocks.h,v 1.9 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -54,7 +54,7 @@ struct RF_LockReqDesc_s { RF_IoType_t type; /* read or write */ RF_int64 start, stop; /* start and end of range to be locked */ RF_int64 start2, stop2; /* start and end of 2nd range to be locked */ - void (*cbFunc) (struct buf *); /* callback function */ + void (*cbFunc) (void *); /* callback function */ void *cbArg; /* argument to callback function */ RF_LockReqDesc_t *next; /* next element in chain */ RF_LockReqDesc_t *templink; /* for making short-lived lists of Index: src/sys/dev/raidframe/rf_dagdegwr.c diff -u src/sys/dev/raidframe/rf_dagdegwr.c:1.34 src/sys/dev/raidframe/rf_dagdegwr.c:1.35 --- src/sys/dev/raidframe/rf_dagdegwr.c:1.34 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_dagdegwr.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegwr.c,v 1.34 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_dagdegwr.c,v 1.35 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagdegwr.c,v 1.34 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagdegwr.c,v 1.35 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -160,7 +160,7 @@ rf_CommonCreateSimpleDegradedWriteDAG(RF RF_RaidAccessFlags_t flags, RF_AllocListElem_t *allocList, int nfaults, - int (*redFunc) (RF_DagNode_t *), + void (*redFunc) (RF_DagNode_t *), int allowBufferRecycle) { int nRrdNodes, nWndNodes, nXorBufs, i, j, paramNum, @@ -716,7 +716,7 @@ rf_DoubleDegSmallWrite(RF_Raid_t *raidPt const char *redundantReadNodeName, const char *redundantWriteNodeName, const char *recoveryNodeName, - int (*recovFunc) (RF_DagNode_t *)) + void (*recovFunc) (RF_DagNode_t *)) { RF_RaidLayout_t *layoutPtr = &(raidPtr->Layout); RF_DagNode_t *nodes, *wudNodes, *rrdNodes, *recoveryNode, *blockNode, Index: src/sys/dev/raidframe/rf_dagffwr.c diff -u src/sys/dev/raidframe/rf_dagffwr.c:1.35 src/sys/dev/raidframe/rf_dagffwr.c:1.36 --- src/sys/dev/raidframe/rf_dagffwr.c:1.35 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_dagffwr.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagffwr.c,v 1.35 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_dagffwr.c,v 1.36 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagffwr.c,v 1.35 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagffwr.c,v 1.36 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -165,7 +165,7 @@ rf_CommonCreateLargeWriteDAG(RF_Raid_t * RF_DagHeader_t *dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t *allocList, - int nfaults, int (*redFunc) (RF_DagNode_t *), + int nfaults, void (*redFunc) (RF_DagNode_t *), int allowBufferRecycle) { RF_DagNode_t *wndNodes, *rodNodes, *xorNode, *wnpNode, *tmpNode; @@ -538,8 +538,8 @@ rf_CommonCreateSmallWriteDAG(RF_Raid_t * #endif int i, j, nNodes; RF_ReconUnitNum_t which_ru; - int (*func) (RF_DagNode_t *), (*undoFunc) (RF_DagNode_t *); - int (*qfunc) (RF_DagNode_t *) __unused; + void (*func) (RF_DagNode_t *), (*undoFunc) (RF_DagNode_t *); + void (*qfunc) (RF_DagNode_t *) __unused; int numDataNodes, numParityNodes; RF_StripeNum_t parityStripeID; RF_PhysDiskAddr_t *pda; Index: src/sys/dev/raidframe/rf_parityscan.c diff -u src/sys/dev/raidframe/rf_parityscan.c:1.35 src/sys/dev/raidframe/rf_parityscan.c:1.36 --- src/sys/dev/raidframe/rf_parityscan.c:1.35 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_parityscan.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_parityscan.c,v 1.35 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_parityscan.c,v 1.36 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ ****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_parityscan.c,v 1.35 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_parityscan.c,v 1.36 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -417,8 +417,8 @@ rf_VerifyDegrModeWrite(RF_Raid_t *raidPt */ RF_DagHeader_t * rf_MakeSimpleDAG(RF_Raid_t *raidPtr, int nNodes, int bytesPerSU, char *databuf, - int (*doFunc) (RF_DagNode_t * node), - int (*undoFunc) (RF_DagNode_t * node), + void (*doFunc) (RF_DagNode_t * node), + void (*undoFunc) (RF_DagNode_t * node), const char *name, RF_AllocListElem_t *alloclist, RF_RaidAccessFlags_t flags, int priority) { Index: src/sys/dev/raidframe/rf_dagffwr.h diff -u src/sys/dev/raidframe/rf_dagffwr.h:1.7 src/sys/dev/raidframe/rf_dagffwr.h:1.8 --- src/sys/dev/raidframe/rf_dagffwr.h:1.7 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_dagffwr.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagffwr.h,v 1.7 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_dagffwr.h,v 1.8 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -53,24 +53,24 @@ void rf_CommonCreateLargeWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, int nfaults, - int (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); - void rf_CommonCreateLargeWriteDAGFwd(RF_Raid_t * raidPtr, - RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, - RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, int nfaults, - int (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); - void rf_CommonCreateSmallWriteDAG(RF_Raid_t * raidPtr, - RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, - RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, - const RF_RedFuncs_t * pfuncs, const RF_RedFuncs_t * qfuncs); - void rf_CommonCreateSmallWriteDAGFwd(RF_Raid_t * raidPtr, - RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, - RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, + void (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); +void rf_CommonCreateLargeWriteDAGFwd(RF_Raid_t * raidPtr, + RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, + RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, int nfaults, + void (*redFunc) (RF_DagNode_t *), int allowBufferRecycle); +void rf_CommonCreateSmallWriteDAG(RF_Raid_t * raidPtr, + RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, + RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, + const RF_RedFuncs_t * pfuncs, const RF_RedFuncs_t * qfuncs); +void rf_CommonCreateSmallWriteDAGFwd(RF_Raid_t * raidPtr, + RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, + RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, const RF_RedFuncs_t * pfuncs, const RF_RedFuncs_t * qfuncs); - void rf_CreateRaidOneWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, - RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, - RF_AllocListElem_t * allocList); - void rf_CreateRaidOneWriteDAGFwd(RF_Raid_t * raidPtr, - RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, - RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList); +void rf_CreateRaidOneWriteDAG(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap, + RF_DagHeader_t * dag_h, void *bp, RF_RaidAccessFlags_t flags, + RF_AllocListElem_t * allocList); +void rf_CreateRaidOneWriteDAGFwd(RF_Raid_t * raidPtr, + RF_AccessStripeMap_t * asmap, RF_DagHeader_t * dag_h, void *bp, + RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList); #endif /* !_RF__RF_DAGFFWR_H_ */ Index: src/sys/dev/raidframe/rf_dagfuncs.h diff -u src/sys/dev/raidframe/rf_dagfuncs.h:1.10 src/sys/dev/raidframe/rf_dagfuncs.h:1.11 --- src/sys/dev/raidframe/rf_dagfuncs.h:1.10 Sun Jan 8 20:33:27 2006 +++ src/sys/dev/raidframe/rf_dagfuncs.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagfuncs.h,v 1.10 2006/01/09 01:33:27 oster Exp $ */ +/* $NetBSD: rf_dagfuncs.h,v 1.11 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -36,24 +36,24 @@ #define _RF__RF_DAGFUNCS_H_ int rf_ConfigureDAGFuncs(RF_ShutdownList_t ** listp); -int rf_TerminateFunc(RF_DagNode_t * node); -int rf_TerminateUndoFunc(RF_DagNode_t * node); -int rf_DiskReadMirrorIdleFunc(RF_DagNode_t * node); -int rf_DiskReadMirrorPartitionFunc(RF_DagNode_t * node); -int rf_DiskReadMirrorUndoFunc(RF_DagNode_t * node); -int rf_ParityLogUpdateFunc(RF_DagNode_t * node); -int rf_ParityLogOverwriteFunc(RF_DagNode_t * node); -int rf_ParityLogUpdateUndoFunc(RF_DagNode_t * node); -int rf_ParityLogOverwriteUndoFunc(RF_DagNode_t * node); -int rf_NullNodeFunc(RF_DagNode_t * node); -int rf_NullNodeUndoFunc(RF_DagNode_t * node); -int rf_DiskReadFuncForThreads(RF_DagNode_t * node); -int rf_DiskWriteFuncForThreads(RF_DagNode_t * node); -int rf_DiskUndoFunc(RF_DagNode_t * node); -int rf_GenericWakeupFunc(RF_DagNode_t * node, int status); -int rf_RegularXorFunc(RF_DagNode_t * node); -int rf_SimpleXorFunc(RF_DagNode_t * node); -int rf_RecoveryXorFunc(RF_DagNode_t * node); +void rf_TerminateFunc(RF_DagNode_t * node); +void rf_TerminateUndoFunc(RF_DagNode_t * node); +void rf_DiskReadMirrorIdleFunc(RF_DagNode_t * node); +void rf_DiskReadMirrorPartitionFunc(RF_DagNode_t * node); +void rf_DiskReadMirrorUndoFunc(RF_DagNode_t * node); +void rf_ParityLogUpdateFunc(RF_DagNode_t * node); +void rf_ParityLogOverwriteFunc(RF_DagNode_t * node); +void rf_ParityLogUpdateUndoFunc(RF_DagNode_t * node); +void rf_ParityLogOverwriteUndoFunc(RF_DagNode_t * node); +void rf_NullNodeFunc(RF_DagNode_t * node); +void rf_NullNodeUndoFunc(RF_DagNode_t * node); +void rf_DiskReadFuncForThreads(RF_DagNode_t * node); +void rf_DiskWriteFuncForThreads(RF_DagNode_t * node); +void rf_DiskUndoFunc(RF_DagNode_t * node); +void rf_GenericWakeupFunc(void *, int); +void rf_RegularXorFunc(RF_DagNode_t * node); +void rf_SimpleXorFunc(RF_DagNode_t * node); +void rf_RecoveryXorFunc(RF_DagNode_t * node); int rf_XorIntoBuffer(RF_Raid_t * raidPtr, RF_PhysDiskAddr_t * pda, char *srcbuf, char *targbuf); @@ -68,13 +68,13 @@ rf_bxor3(unsigned char *dst, unsigned ch unsigned char *c, unsigned long len, void *bp); /* function ptrs defined in ConfigureDAGFuncs() */ -extern int (*rf_DiskReadFunc) (RF_DagNode_t *); -extern int (*rf_DiskWriteFunc) (RF_DagNode_t *); -extern int (*rf_DiskReadUndoFunc) (RF_DagNode_t *); -extern int (*rf_DiskWriteUndoFunc) (RF_DagNode_t *); -extern int (*rf_SimpleXorUndoFunc) (RF_DagNode_t *); -extern int (*rf_RegularXorUndoFunc) (RF_DagNode_t *); -extern int (*rf_RecoveryXorUndoFunc) (RF_DagNode_t *); +extern void (*rf_DiskReadFunc) (RF_DagNode_t *); +extern void (*rf_DiskWriteFunc) (RF_DagNode_t *); +extern void (*rf_DiskReadUndoFunc) (RF_DagNode_t *); +extern void (*rf_DiskWriteUndoFunc) (RF_DagNode_t *); +extern void (*rf_SimpleXorUndoFunc) (RF_DagNode_t *); +extern void (*rf_RegularXorUndoFunc) (RF_DagNode_t *); +extern void (*rf_RecoveryXorUndoFunc) (RF_DagNode_t *); /* macros for manipulating the param[3] in a read or write node */ #define RF_CREATE_PARAM3(pri, wru) (((RF_uint64)(((wru&0xFFFFFF)<<8)|((pri)&0xF)) )) Index: src/sys/dev/raidframe/rf_dagutils.c diff -u src/sys/dev/raidframe/rf_dagutils.c:1.56 src/sys/dev/raidframe/rf_dagutils.c:1.57 --- src/sys/dev/raidframe/rf_dagutils.c:1.56 Sun Feb 10 12:13:33 2019 +++ src/sys/dev/raidframe/rf_dagutils.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagutils.c,v 1.56 2019/02/10 17:13:33 christos Exp $ */ +/* $NetBSD: rf_dagutils.c,v 1.57 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ *****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_dagutils.c,v 1.56 2019/02/10 17:13:33 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagutils.c,v 1.57 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -91,9 +91,9 @@ have a few kicking around. *****************************************************************************/ void rf_InitNode(RF_DagNode_t *node, RF_NodeStatus_t initstatus, int commit, - int (*doFunc) (RF_DagNode_t *node), - int (*undoFunc) (RF_DagNode_t *node), - int (*wakeFunc) (RF_DagNode_t *node, int status), + void (*doFunc) (RF_DagNode_t *node), + void (*undoFunc) (RF_DagNode_t *node), + void (*wakeFunc) (void *node, int status), int nSucc, int nAnte, int nParam, int nResult, RF_DagHeader_t *hdr, const char *name, RF_AllocListElem_t *alist) { Index: src/sys/dev/raidframe/rf_diskqueue.c diff -u src/sys/dev/raidframe/rf_diskqueue.c:1.55 src/sys/dev/raidframe/rf_diskqueue.c:1.56 --- src/sys/dev/raidframe/rf_diskqueue.c:1.55 Sun Feb 10 12:13:33 2019 +++ src/sys/dev/raidframe/rf_diskqueue.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_diskqueue.c,v 1.55 2019/02/10 17:13:33 christos Exp $ */ +/* $NetBSD: rf_diskqueue.c,v 1.56 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -66,7 +66,7 @@ ****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_diskqueue.c,v 1.55 2019/02/10 17:13:33 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_diskqueue.c,v 1.56 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -360,7 +360,7 @@ rf_CreateDiskQueueData(RF_IoType_t typ, RF_SectorCount_t nsect, void *bf, RF_StripeNum_t parityStripeID, RF_ReconUnitNum_t which_ru, - int (*wakeF) (void *, int), void *arg, + void (*wakeF) (void *, int), void *arg, RF_AccTraceEntry_t *tracerec, RF_Raid_t *raidPtr, RF_DiskQueueDataFlags_t flags, void *kb_proc, int waitflag) Index: src/sys/dev/raidframe/rf_diskqueue.h diff -u src/sys/dev/raidframe/rf_diskqueue.h:1.24 src/sys/dev/raidframe/rf_diskqueue.h:1.25 --- src/sys/dev/raidframe/rf_diskqueue.h:1.24 Thu May 5 02:04:09 2011 +++ src/sys/dev/raidframe/rf_diskqueue.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_diskqueue.h,v 1.24 2011/05/05 06:04:09 mrg Exp $ */ +/* $NetBSD: rf_diskqueue.h,v 1.25 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -62,7 +62,7 @@ struct RF_DiskQueueData_s { * access is for */ RF_ReconUnitNum_t which_ru; /* which RU within this parity stripe */ int priority; /* the priority of this request */ - int (*CompleteFunc) (void *, int); /* function to be called upon + void (*CompleteFunc) (void *, int); /* function to be called upon * completion */ void *argument; /* argument to be passed to CompleteFunc */ RF_Raid_t *raidPtr; /* needed for simulation */ @@ -141,7 +141,7 @@ int rf_DiskIOPromote(RF_DiskQueue_t *, R RF_DiskQueueData_t *rf_CreateDiskQueueData(RF_IoType_t, RF_SectorNum_t, RF_SectorCount_t , void *, RF_StripeNum_t, RF_ReconUnitNum_t, - int (*wakeF) (void *, int), + void (*wakeF) (void *, int), void *, RF_AccTraceEntry_t *, RF_Raid_t *, RF_DiskQueueDataFlags_t, Index: src/sys/dev/raidframe/rf_driver.c diff -u src/sys/dev/raidframe/rf_driver.c:1.135 src/sys/dev/raidframe/rf_driver.c:1.136 --- src/sys/dev/raidframe/rf_driver.c:1.135 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_driver.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_driver.c,v 1.135 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_driver.c,v 1.136 2019/10/10 03:43:59 christos Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. * All rights reserved. @@ -66,7 +66,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.135 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.136 2019/10/10 03:43:59 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_raid_diagnostic.h" @@ -812,7 +812,7 @@ rf_SuspendNewRequestsAndWait(RF_Raid_t * void rf_ResumeNewRequests(RF_Raid_t *raidPtr) { - RF_CallbackDesc_t *t, *cb; + RF_CallbackFuncDesc_t *t, *cb; #if RF_DEBUG_QUIESCE if (rf_quiesceDebug) @@ -832,7 +832,7 @@ rf_ResumeNewRequests(RF_Raid_t *raidPtr) t = cb; cb = cb->next; (t->callbackFunc) (t->callbackArg); - rf_FreeCallbackDesc(t); + rf_FreeCallbackFuncDesc(t); } } /***************************************************************************************** Index: src/sys/dev/raidframe/rf_engine.c diff -u src/sys/dev/raidframe/rf_engine.c:1.52 src/sys/dev/raidframe/rf_engine.c:1.53 --- src/sys/dev/raidframe/rf_engine.c:1.52 Sun Dec 11 00:27:00 2016 +++ src/sys/dev/raidframe/rf_engine.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_engine.c,v 1.52 2016/12/11 05:27:00 nat Exp $ */ +/* $NetBSD: rf_engine.c,v 1.53 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -55,7 +55,7 @@ ****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_engine.c,v 1.52 2016/12/11 05:27:00 nat Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_engine.c,v 1.53 2019/10/10 03:43:59 christos Exp $"); #include <sys/errno.h> @@ -684,14 +684,11 @@ ProcessNode(RF_DagNode_t *node, int cont * This routine is called by each node execution function to mark the node * as complete and fire off any successors that have been enabled. */ -int +void rf_FinishNode(RF_DagNode_t *node, int context) { - int retcode = RF_FALSE; node->dagHdr->numNodesCompleted++; ProcessNode(node, context); - - return (retcode); } Index: src/sys/dev/raidframe/rf_evenodd_dagfuncs.h diff -u src/sys/dev/raidframe/rf_evenodd_dagfuncs.h:1.5 src/sys/dev/raidframe/rf_evenodd_dagfuncs.h:1.6 --- src/sys/dev/raidframe/rf_evenodd_dagfuncs.h:1.5 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_evenodd_dagfuncs.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_evenodd_dagfuncs.h,v 1.5 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_evenodd_dagfuncs.h,v 1.6 2019/10/10 03:43:59 christos Exp $ */ /* * rf_evenodd_dagfuncs.h */ @@ -38,26 +38,26 @@ extern RF_RedFuncs_t rf_eoERecoveryFuncs extern RF_RedFuncs_t rf_eoPRecoveryFuncs; extern RF_RedFuncs_t rf_eoERecoveryFuncs; -int rf_RegularPEFunc(RF_DagNode_t * node); -int rf_RegularONEFunc(RF_DagNode_t * node); -int rf_SimpleONEFunc(RF_DagNode_t * node); +void rf_RegularPEFunc(RF_DagNode_t * node); +void rf_RegularONEFunc(RF_DagNode_t * node); +void rf_SimpleONEFunc(RF_DagNode_t * node); void rf_RegularESubroutine(RF_DagNode_t * node, char *ebuf); -int rf_RegularEFunc(RF_DagNode_t * node); +void rf_RegularEFunc(RF_DagNode_t * node); void rf_DegrESubroutine(RF_DagNode_t * node, char *ebuf); -int rf_Degraded_100_EOFunc(RF_DagNode_t * node); +void rf_Degraded_100_EOFunc(RF_DagNode_t * node); void rf_e_EncOneSect(RF_RowCol_t srcLogicCol, char *srcSecbuf, RF_RowCol_t destLogicCol, char *destSecbuf, int bytesPerSector); void rf_e_encToBuf(RF_Raid_t * raidPtr, RF_RowCol_t srcLogicCol, char *srcbuf, RF_RowCol_t destLogicCol, char *destbuf, int numSector); -int rf_RecoveryEFunc(RF_DagNode_t * node); -int rf_EO_DegradedWriteEFunc(RF_DagNode_t * node); +void rf_RecoveryEFunc(RF_DagNode_t * node); +void rf_EO_DegradedWriteEFunc(RF_DagNode_t * node); void rf_doubleEOdecode(RF_Raid_t * raidPtr, char **rrdbuf, char **dest, RF_RowCol_t * fcol, char *pbuf, char *ebuf); -int rf_EvenOddDoubleRecoveryFunc(RF_DagNode_t * node); -int rf_EOWriteDoubleRecoveryFunc(RF_DagNode_t * node); +void rf_EvenOddDoubleRecoveryFunc(RF_DagNode_t * node); +void rf_EOWriteDoubleRecoveryFunc(RF_DagNode_t * node); #define rf_EUCol(_layoutPtr_, _addr_ ) \ ( (_addr_)%( (_layoutPtr_)->dataSectorsPerStripe ) )/((_layoutPtr_)->sectorsPerStripeUnit) Index: src/sys/dev/raidframe/rf_pq.h diff -u src/sys/dev/raidframe/rf_pq.h:1.5 src/sys/dev/raidframe/rf_pq.h:1.6 --- src/sys/dev/raidframe/rf_pq.h:1.5 Sun Dec 11 07:23:37 2005 +++ src/sys/dev/raidframe/rf_pq.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_pq.h,v 1.5 2005/12/11 12:23:37 christos Exp $ */ +/* $NetBSD: rf_pq.h,v 1.6 2019/10/10 03:43:59 christos Exp $ */ /* * rf_pq.h */ @@ -37,10 +37,10 @@ extern RF_RedFuncs_t rf_pFuncs; extern RF_RedFuncs_t rf_pRecoveryFuncs; -int rf_RegularONPFunc(RF_DagNode_t * node); -int rf_SimpleONPFunc(RF_DagNode_t * node); -int rf_RecoveryPFunc(RF_DagNode_t * node); -int rf_RegularPFunc(RF_DagNode_t * node); +void rf_RegularONPFunc(RF_DagNode_t * node); +void rf_SimpleONPFunc(RF_DagNode_t * node); +void rf_RecoveryPFunc(RF_DagNode_t * node); +void rf_RegularPFunc(RF_DagNode_t * node); #if (RF_INCLUDE_DECL_PQ > 0) || (RF_INCLUDE_RAID6 > 0) @@ -52,14 +52,14 @@ void rf_PQDagSelect(RF_Raid_t * raidPtr, RF_IoType_t type, RF_AccessStripeMap_t * asmap, RF_VoidFuncPtr * createFunc); RF_CREATE_DAG_FUNC_DECL(rf_PQCreateLargeWriteDAG); -int rf_RegularONQFunc(RF_DagNode_t * node); -int rf_SimpleONQFunc(RF_DagNode_t * node); +void rf_RegularONQFunc(RF_DagNode_t * node); +void rf_SimpleONQFunc(RF_DagNode_t * node); RF_CREATE_DAG_FUNC_DECL(rf_PQCreateSmallWriteDAG); -int rf_RegularPQFunc(RF_DagNode_t * node); -int rf_RegularQFunc(RF_DagNode_t * node); +void rf_RegularPQFunc(RF_DagNode_t * node); +void rf_RegularQFunc(RF_DagNode_t * node); void rf_Degraded_100_PQFunc(RF_DagNode_t * node); -int rf_RecoveryQFunc(RF_DagNode_t * node); -int rf_RecoveryPQFunc(RF_DagNode_t * node); +void rf_RecoveryQFunc(RF_DagNode_t * node); +void rf_RecoveryPQFunc(RF_DagNode_t * node); void rf_PQ_DegradedWriteQFunc(RF_DagNode_t * node); void rf_IncQ(unsigned long *dest, unsigned long *buf, unsigned length, Index: src/sys/dev/raidframe/rf_evenodd_dags.c diff -u src/sys/dev/raidframe/rf_evenodd_dags.c:1.4 src/sys/dev/raidframe/rf_evenodd_dags.c:1.5 --- src/sys/dev/raidframe/rf_evenodd_dags.c:1.4 Tue Nov 13 02:11:14 2001 +++ src/sys/dev/raidframe/rf_evenodd_dags.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_evenodd_dags.c,v 1.4 2001/11/13 07:11:14 lukem Exp $ */ +/* $NetBSD: rf_evenodd_dags.c,v 1.5 2019/10/10 03:43:59 christos Exp $ */ /* * rf_evenodd_dags.c */ @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_evenodd_dags.c,v 1.4 2001/11/13 07:11:14 lukem Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_evenodd_dags.c,v 1.5 2019/10/10 03:43:59 christos Exp $"); #include "rf_archs.h" @@ -103,7 +103,7 @@ RF_CREATE_DAG_FUNC_DECL(rf_EO_100_Create if (asmap->numStripeUnitsAccessed != 1 && asmap->failedPDAs[0]->numSector != raidPtr->Layout.sectorsPerStripeUnit) RF_PANIC(); - rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags, allocList, 2, (int (*) (RF_DagNode_t *)) rf_Degraded_100_EOFunc, RF_TRUE); + rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags, allocList, 2, rf_Degraded_100_EOFunc, RF_TRUE); } /* * E is dead. Small write. @@ -162,7 +162,7 @@ RF_CREATE_DAG_FUNC_DECL(rf_EO_110_Create temp = asmap->parityInfo; asmap->parityInfo = asmap->qInfo; asmap->qInfo = temp; - rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags, allocList, 1, (int (*) (RF_DagNode_t *)) rf_EO_DegradedWriteEFunc, RF_FALSE); + rf_CommonCreateSimpleDegradedWriteDAG(raidPtr, asmap, dag_h, bp, flags, allocList, 1, rf_EO_DegradedWriteEFunc, RF_FALSE); /* is the regular E func the right one to call? */ } RF_CREATE_DAG_FUNC_DECL(rf_EO_101_CreateWriteDAG) Index: src/sys/dev/raidframe/rf_paritylogDiskMgr.h diff -u src/sys/dev/raidframe/rf_paritylogDiskMgr.h:1.4 src/sys/dev/raidframe/rf_paritylogDiskMgr.h:1.5 --- src/sys/dev/raidframe/rf_paritylogDiskMgr.h:1.4 Thu Oct 4 11:58:55 2001 +++ src/sys/dev/raidframe/rf_paritylogDiskMgr.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_paritylogDiskMgr.h,v 1.4 2001/10/04 15:58:55 oster Exp $ */ +/* $NetBSD: rf_paritylogDiskMgr.h,v 1.5 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -36,6 +36,6 @@ #include <dev/raidframe/raidframevar.h> int rf_ShutdownLogging(RF_Raid_t * raidPtr); -int rf_ParityLoggingDiskManager(RF_Raid_t * raidPtr); +void rf_ParityLoggingDiskManager(void *); #endif /* !_RF__RF_PARITYLOGDISKMGR_H_ */ Index: src/sys/dev/raidframe/rf_states.h diff -u src/sys/dev/raidframe/rf_states.h:1.4 src/sys/dev/raidframe/rf_states.h:1.5 --- src/sys/dev/raidframe/rf_states.h:1.4 Thu Oct 4 11:58:56 2001 +++ src/sys/dev/raidframe/rf_states.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_states.h,v 1.4 2001/10/04 15:58:56 oster Exp $ */ +/* $NetBSD: rf_states.h,v 1.5 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -31,7 +31,7 @@ #include <dev/raidframe/raidframevar.h> -void rf_ContinueRaidAccess(RF_RaidAccessDesc_t * desc); +void rf_ContinueRaidAccess(void *); void rf_ContinueDagAccess(RF_DagList_t * dagList); int rf_State_LastState(RF_RaidAccessDesc_t * desc); int rf_State_IncrAccessCount(RF_RaidAccessDesc_t * desc); Index: src/sys/dev/raidframe/rf_netbsd.h diff -u src/sys/dev/raidframe/rf_netbsd.h:1.33 src/sys/dev/raidframe/rf_netbsd.h:1.34 --- src/sys/dev/raidframe/rf_netbsd.h:1.33 Tue Feb 5 21:49:09 2019 +++ src/sys/dev/raidframe/rf_netbsd.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_netbsd.h,v 1.33 2019/02/06 02:49:09 oster Exp $ */ +/* $NetBSD: rf_netbsd.h,v 1.34 2019/10/10 03:43:59 christos Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -61,7 +61,8 @@ struct RF_Pools_s { struct pool asm_hdr; /* Access Stripe Map Header */ struct pool asmap; /* Access Stripe Map */ struct pool asmhle; /* Access Stripe Map Header List Elements */ - struct pool callback; /* Callback descriptors */ + struct pool callbackf; /* Callback function descriptors */ + struct pool callbackv; /* Callback value descriptors */ struct pool dagh; /* DAG headers */ struct pool dagnode; /* DAG nodes */ struct pool daglist; /* DAG lists */ Index: src/sys/dev/raidframe/rf_paritylog.h diff -u src/sys/dev/raidframe/rf_paritylog.h:1.12 src/sys/dev/raidframe/rf_paritylog.h:1.13 --- src/sys/dev/raidframe/rf_paritylog.h:1.12 Wed May 11 14:13:12 2011 +++ src/sys/dev/raidframe/rf_paritylog.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_paritylog.h,v 1.12 2011/05/11 18:13:12 mrg Exp $ */ +/* $NetBSD: rf_paritylog.h,v 1.13 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -49,8 +49,7 @@ struct RF_CommonLogData_s { rf_declare_mutex2(mutex); /* protects cnt */ int cnt; /* when 0, time to call wakeFunc */ RF_Raid_t *raidPtr; -/* int (*wakeFunc)(struct buf *); */ - int (*wakeFunc) (RF_DagNode_t * node, int status); + void (*wakeFunc) (void *, int); void *wakeArg; RF_AccTraceEntry_t *tracerec; RF_Etimer_t startTime; @@ -166,7 +165,7 @@ struct RF_RegionInfo_s { RF_ParityLogData_t * rf_CreateParityLogData(RF_ParityRecordType_t operation, RF_PhysDiskAddr_t * pda, void *bufPtr, RF_Raid_t * raidPtr, - int (*wakeFunc) (RF_DagNode_t * node, int status), + void (*wakeFunc) (void *, int), void *wakeArg, RF_AccTraceEntry_t * tracerec, RF_Etimer_t startTime); RF_ParityLogData_t *rf_SearchAndDequeueParityLogData(RF_Raid_t * raidPtr, Index: src/sys/dev/raidframe/rf_paritylogDiskMgr.c diff -u src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.29 src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.30 --- src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.29 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_paritylogDiskMgr.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_paritylogDiskMgr.c,v 1.29 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_paritylogDiskMgr.c,v 1.30 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_paritylogDiskMgr.c,v 1.29 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_paritylogDiskMgr.c,v 1.30 2019/10/10 03:43:59 christos Exp $"); #include "rf_archs.h" @@ -583,9 +583,10 @@ rf_ShutdownLogging(RF_Raid_t * raidPtr) return (0); } -int -rf_ParityLoggingDiskManager(RF_Raid_t * raidPtr) +void +rf_ParityLoggingDiskManager(void *v) { + RF_Raid_t *raidPtr = v; RF_ParityLog_t *reintQueue, *flushQueue; int workNeeded, done = RF_FALSE; int s; Index: src/sys/dev/raidframe/rf_parityloggingdags.c diff -u src/sys/dev/raidframe/rf_parityloggingdags.c:1.22 src/sys/dev/raidframe/rf_parityloggingdags.c:1.23 --- src/sys/dev/raidframe/rf_parityloggingdags.c:1.22 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_parityloggingdags.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_parityloggingdags.c,v 1.22 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_parityloggingdags.c,v 1.23 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_parityloggingdags.c,v 1.22 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_parityloggingdags.c,v 1.23 2019/10/10 03:43:59 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_raid_diagnostic.h" @@ -82,7 +82,7 @@ rf_CommonCreateParityLoggingLargeWriteDA RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, int nfaults, - int (*redFunc) (RF_DagNode_t *)) + void (*redFunc) (RF_DagNode_t *)) { RF_DagNode_t *nodes, *wndNodes, *rodNodes = NULL, *syncNode, *xorNode, *lpoNode, *blockNode, *unblockNode, *termNode; @@ -337,7 +337,7 @@ rf_CommonCreateParityLoggingSmallWriteDA int numParityNodes = (asmap->parityInfo->next) ? 2 : 1; int i, j, nNodes, totalNumNodes; RF_ReconUnitNum_t which_ru; - int (*func) (RF_DagNode_t * node), (*undoFunc) (RF_DagNode_t * node); + void (*func) (RF_DagNode_t * node), (*undoFunc) (RF_DagNode_t * node); const char *name; RF_StripeNum_t parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddress, &which_ru); long nfaults __unused = qfuncs ? 2 : 1; @@ -633,7 +633,7 @@ rf_CreateParityLoggingLargeWriteDAG( RF_RaidAccessFlags_t flags, RF_AllocListElem_t * allocList, int nfaults, - int (*redFunc) (RF_DagNode_t *)) + void (*redFunc) (RF_DagNode_t *)) { dag_h->creator = "ParityLoggingSmallWriteDAG"; rf_CommonCreateParityLoggingLargeWriteDAG(raidPtr, asmap, dag_h, bp, flags, allocList, 1, rf_RegularXorFunc); Index: src/sys/dev/raidframe/rf_pq.c diff -u src/sys/dev/raidframe/rf_pq.c:1.16 src/sys/dev/raidframe/rf_pq.c:1.17 --- src/sys/dev/raidframe/rf_pq.c:1.16 Sat Mar 14 11:36:20 2009 +++ src/sys/dev/raidframe/rf_pq.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_pq.c,v 1.16 2009/03/14 15:36:20 dsl Exp $ */ +/* $NetBSD: rf_pq.c,v 1.17 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_pq.c,v 1.16 2009/03/14 15:36:20 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_pq.c,v 1.17 2019/10/10 03:43:59 christos Exp $"); #include "rf_archs.h" @@ -56,31 +56,31 @@ __KERNEL_RCSID(0, "$NetBSD: rf_pq.c,v 1. RF_RedFuncs_t rf_pFuncs = {rf_RegularONPFunc, "Regular Old-New P", rf_SimpleONPFunc, "Simple Old-New P"}; RF_RedFuncs_t rf_pRecoveryFuncs = {rf_RecoveryPFunc, "Recovery P Func", rf_RecoveryPFunc, "Recovery P Func"}; -int +void rf_RegularONPFunc(RF_DagNode_t *node) { - return (rf_RegularXorFunc(node)); + rf_RegularXorFunc(node); } /* same as simpleONQ func, but the coefficient is always 1 */ -int +void rf_SimpleONPFunc(RF_DagNode_t *node) { - return (rf_SimpleXorFunc(node)); + rf_SimpleXorFunc(node); } -int +void rf_RecoveryPFunc(RF_DagNode_t *node) { - return (rf_RecoveryXorFunc(node)); + rf_RecoveryXorFunc(node); } -int +void rf_RegularPFunc(RF_DagNode_t *node) { - return (rf_RegularXorFunc(node)); + rf_RegularXorFunc(node); } #endif /* (RF_INCLUDE_DECL_PQ > 0) || (RF_INCLUDE_RAID6 > 0) || (RF_INCLUDE_EVENODD > 0) */ #if (RF_INCLUDE_DECL_PQ > 0) || (RF_INCLUDE_RAID6 > 0) Index: src/sys/dev/raidframe/rf_psstatus.c diff -u src/sys/dev/raidframe/rf_psstatus.c:1.36 src/sys/dev/raidframe/rf_psstatus.c:1.37 --- src/sys/dev/raidframe/rf_psstatus.c:1.36 Sun Feb 10 12:13:33 2019 +++ src/sys/dev/raidframe/rf_psstatus.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_psstatus.c,v 1.36 2019/02/10 17:13:33 christos Exp $ */ +/* $NetBSD: rf_psstatus.c,v 1.37 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -37,7 +37,7 @@ *****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_psstatus.c,v 1.36 2019/02/10 17:13:33 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_psstatus.c,v 1.37 2019/10/10 03:43:59 christos Exp $"); #include <dev/raidframe/raidframevar.h> @@ -220,7 +220,7 @@ rf_RemoveFromActiveReconTable(RF_Raid_t { RF_PSStatusHeader_t *hdr = &(raidPtr->reconControl->pssTable[RF_HASH_PSID(raidPtr, psid)]); RF_ReconParityStripeStatus_t *p, *pt; - RF_CallbackDesc_t *cb, *cb1; + RF_CallbackFuncDesc_t *cb, *cb1; rf_lock_mutex2(hdr->mutex); while(hdr->lock) { @@ -257,7 +257,7 @@ rf_RemoveFromActiveReconTable(RF_Raid_t Dprintf1("Waking up access waiting on parity stripe ID %ld\n", p->parityStripeID); cb1 = cb->next; (cb->callbackFunc) (cb->callbackArg); - rf_FreeCallbackDesc(cb); + rf_FreeCallbackFuncDesc(cb); cb = cb1; } @@ -285,17 +285,18 @@ RealPrintPSStatusTable(RF_Raid_t *raidPt { int i, j, procsWaiting, blocksWaiting, bufsWaiting; RF_ReconParityStripeStatus_t *p; - RF_CallbackDesc_t *cb; + RF_CallbackValueDesc_t *vb; + RF_CallbackFuncDesc_t *fb; printf("\nParity Stripe Status Table\n"); for (i = 0; i < raidPtr->pssTableSize; i++) { for (p = pssTable[i].chain; p; p = p->next) { procsWaiting = blocksWaiting = bufsWaiting = 0; - for (cb = p->procWaitList; cb; cb = cb->next) + for (fb = p->procWaitList; fb; fb = fb->next) procsWaiting++; - for (cb = p->blockWaitList; cb; cb = cb->next) + for (vb = p->blockWaitList; vb; vb = vb->next) blocksWaiting++; - for (cb = p->bufWaitList; cb; cb = cb->next) + for (vb = p->bufWaitList; vb; vb = vb->next) bufsWaiting++; printf("PSID %ld RU %d : blockCount %d %d/%d/%d proc/block/buf waiting, issued ", (long) p->parityStripeID, p->which_ru, p->blockCount, procsWaiting, blocksWaiting, bufsWaiting); Index: src/sys/dev/raidframe/rf_raid1.c diff -u src/sys/dev/raidframe/rf_raid1.c:1.36 src/sys/dev/raidframe/rf_raid1.c:1.37 --- src/sys/dev/raidframe/rf_raid1.c:1.36 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_raid1.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_raid1.c,v 1.36 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_raid1.c,v 1.37 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ *****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.36 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.37 2019/10/10 03:43:59 christos Exp $"); #include "rf_raid.h" #include "rf_raid1.h" @@ -551,7 +551,7 @@ rf_SubmitReconBufferRAID1(RF_ReconBuffer RF_ReconParityStripeStatus_t *pssPtr; RF_ReconCtrl_t *reconCtrlPtr; int retcode; - RF_CallbackDesc_t *cb, *p; + RF_CallbackValueDesc_t *cb, *p; RF_ReconBuffer_t *t; RF_Raid_t *raidPtr; void *ta; @@ -646,9 +646,9 @@ rf_SubmitReconBufferRAID1(RF_ReconBuffer RF_PANIC(); } pssPtr->flags |= RF_PSS_BUFFERWAIT; - cb = rf_AllocCallbackDesc(); + cb = rf_AllocCallbackValueDesc(); cb->col = rbuf->col; - cb->callbackArg.v = rbuf->parityStripeID; + cb->v = rbuf->parityStripeID; cb->next = NULL; if (reconCtrlPtr->bufferWaitList == NULL) { /* we are the wait list- lucky us */ Index: src/sys/dev/raidframe/rf_psstatus.h diff -u src/sys/dev/raidframe/rf_psstatus.h:1.14 src/sys/dev/raidframe/rf_psstatus.h:1.15 --- src/sys/dev/raidframe/rf_psstatus.h:1.14 Tue May 3 04:18:43 2011 +++ src/sys/dev/raidframe/rf_psstatus.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_psstatus.h,v 1.14 2011/05/03 08:18:43 mrg Exp $ */ +/* $NetBSD: rf_psstatus.h,v 1.15 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -87,12 +87,12 @@ struct RF_ReconParityStripeStatus_s { * this parity stripe */ char issued[RF_MAXCOL]; /* issued[i]==1 <=> column i has already * issued a read request for the indicated RU */ - RF_CallbackDesc_t *procWaitList; /* list of user procs waiting + RF_CallbackFuncDesc_t *procWaitList; /* list of user procs waiting * for recon to be done */ - RF_CallbackDesc_t *blockWaitList; /* list of disks blocked + RF_CallbackValueDesc_t *blockWaitList; /* list of disks blocked * waiting for user write to * complete */ - RF_CallbackDesc_t *bufWaitList; /* list of disks blocked waiting to + RF_CallbackValueDesc_t *bufWaitList; /* list of disks blocked waiting to * acquire a buffer for this RU */ RF_ReconParityStripeStatus_t *next; }; Index: src/sys/dev/raidframe/rf_raid.h diff -u src/sys/dev/raidframe/rf_raid.h:1.47 src/sys/dev/raidframe/rf_raid.h:1.48 --- src/sys/dev/raidframe/rf_raid.h:1.47 Tue Feb 5 21:49:09 2019 +++ src/sys/dev/raidframe/rf_raid.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_raid.h,v 1.47 2019/02/06 02:49:09 oster Exp $ */ +/* $NetBSD: rf_raid.h,v 1.48 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -201,7 +201,7 @@ struct RF_Raid_s { RF_IoCount_t accs_in_flight; int access_suspend_release; int waiting_for_quiescence; - RF_CallbackDesc_t *quiesce_wait_list; + RF_CallbackFuncDesc_t *quiesce_wait_list; /* * Statistics Index: src/sys/dev/raidframe/rf_reconbuffer.c diff -u src/sys/dev/raidframe/rf_reconbuffer.c:1.25 src/sys/dev/raidframe/rf_reconbuffer.c:1.26 --- src/sys/dev/raidframe/rf_reconbuffer.c:1.25 Mon May 2 03:29:18 2011 +++ src/sys/dev/raidframe/rf_reconbuffer.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_reconbuffer.c,v 1.25 2011/05/02 07:29:18 mrg Exp $ */ +/* $NetBSD: rf_reconbuffer.c,v 1.26 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ ***************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_reconbuffer.c,v 1.25 2011/05/02 07:29:18 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_reconbuffer.c,v 1.26 2019/10/10 03:43:59 christos Exp $"); #include "rf_raid.h" #include "rf_reconbuffer.h" @@ -126,7 +126,7 @@ rf_SubmitReconBufferBasic(RF_ReconBuffer RF_ReconBuffer_t *targetRbuf, *t = NULL; /* temporary rbuf * pointers */ void *ta; /* temporary data buffer pointer */ - RF_CallbackDesc_t *cb, *p; + RF_CallbackValueDesc_t *cb, *p; int retcode = 0; RF_Etimer_t timer; @@ -233,10 +233,10 @@ rf_SubmitReconBufferBasic(RF_ReconBuffer RF_PANIC(); } pssPtr->flags |= RF_PSS_BUFFERWAIT; - cb = rf_AllocCallbackDesc(); /* append to buf wait list in + cb = rf_AllocCallbackValueDesc();/* append to buf wait list in * recon ctrl structure */ cb->col = rbuf->col; - cb->callbackArg.v = rbuf->parityStripeID; + cb->v = rbuf->parityStripeID; cb->next = NULL; if (!reconCtrlPtr->bufferWaitList) reconCtrlPtr->bufferWaitList = cb; @@ -399,7 +399,7 @@ void rf_ReleaseFloatingReconBuffer(RF_Raid_t *raidPtr, RF_ReconBuffer_t *rbuf) { RF_ReconCtrl_t *rcPtr = raidPtr->reconControl; - RF_CallbackDesc_t *cb; + RF_CallbackValueDesc_t *cb; Dprintf2("RECON: releasing rbuf for psid %ld ru %d\n", (long) rbuf->parityStripeID, rbuf->which_ru); @@ -413,7 +413,7 @@ rf_ReleaseFloatingReconBuffer(RF_Raid_t rcPtr->bufferWaitList = cb->next; rf_CauseReconEvent(raidPtr, cb->col, (void *) 1, RF_REVENT_BUFCLEAR); /* arg==1 => we've * committed a buffer */ - rf_FreeCallbackDesc(cb); + rf_FreeCallbackValueDesc(cb); raidPtr->procsInBufWait--; } else { rbuf->next = rcPtr->floatingRbufs; Index: src/sys/dev/raidframe/rf_reconstruct.c diff -u src/sys/dev/raidframe/rf_reconstruct.c:1.122 src/sys/dev/raidframe/rf_reconstruct.c:1.123 --- src/sys/dev/raidframe/rf_reconstruct.c:1.122 Fri Feb 8 22:34:00 2019 +++ src/sys/dev/raidframe/rf_reconstruct.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_reconstruct.c,v 1.122 2019/02/09 03:34:00 christos Exp $ */ +/* $NetBSD: rf_reconstruct.c,v 1.123 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ ************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.122 2019/02/09 03:34:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.123 2019/10/10 03:43:59 christos Exp $"); #include <sys/param.h> #include <sys/time.h> @@ -115,8 +115,8 @@ static int ComputePSDiskOffsets(RF_Raid_ RF_SectorNum_t *, RF_SectorNum_t *, RF_RowCol_t *, RF_SectorNum_t *); static int IssueNextWriteRequest(RF_Raid_t *); -static int ReconReadDoneProc(void *, int); -static int ReconWriteDoneProc(void *, int); +static void ReconReadDoneProc(void *, int); +static void ReconWriteDoneProc(void *, int); static void CheckForNewMinHeadSep(RF_Raid_t *, RF_HeadSepLimit_t); static int CheckHeadSeparation(RF_Raid_t *, RF_PerDiskReconCtrl_t *, RF_RowCol_t, RF_HeadSepLimit_t, @@ -1516,7 +1516,7 @@ IssueNextWriteRequest(RF_Raid_t *raidPtr * called at interrupt context in the kernel, so don't do anything * illegal here. */ -static int +static void ReconReadDoneProc(void *arg, int status) { RF_PerDiskReconCtrl_t *ctrl = (RF_PerDiskReconCtrl_t *) arg; @@ -1527,14 +1527,14 @@ ReconReadDoneProc(void *arg, int status) There won't be anyone listening for this event anyway */ if (ctrl->reconCtrl == NULL) - return(0); + return; raidPtr = ctrl->reconCtrl->reconDesc->raidPtr; if (status) { printf("raid%d: Recon read failed: %d\n", raidPtr->raidid, status); rf_CauseReconEvent(raidPtr, ctrl->col, NULL, RF_REVENT_READ_FAILED); - return(0); + return; } #if RF_ACC_TRACE > 0 RF_ETIMER_STOP(raidPtr->recon_tracerecs[ctrl->col].recon_timer); @@ -1544,14 +1544,14 @@ ReconReadDoneProc(void *arg, int status) RF_ETIMER_START(raidPtr->recon_tracerecs[ctrl->col].recon_timer); #endif rf_CauseReconEvent(raidPtr, ctrl->col, NULL, RF_REVENT_READDONE); - return (0); + return; } /* this gets called upon the completion of a reconstruction write operation. * the arg is a pointer to the rbuf that was just written * * called at interrupt context in the kernel, so don't do anything illegal here. */ -static int +static void ReconWriteDoneProc(void *arg, int status) { RF_ReconBuffer_t *rbuf = (RF_ReconBuffer_t *) arg; @@ -1561,16 +1561,15 @@ ReconWriteDoneProc(void *arg, int status There won't be anyone listening for this event anyway */ if (rbuf->raidPtr->reconControl == NULL) - return(0); + return; Dprintf2("Reconstruction completed on psid %ld ru %d\n", rbuf->parityStripeID, rbuf->which_ru); if (status) { printf("raid%d: Recon write failed (status %d(0x%x))!\n", rbuf->raidPtr->raidid,status,status); rf_CauseReconEvent(rbuf->raidPtr, rbuf->col, arg, RF_REVENT_WRITE_FAILED); - return(0); + return; } rf_CauseReconEvent(rbuf->raidPtr, rbuf->col, arg, RF_REVENT_WRITEDONE); - return (0); } @@ -1584,7 +1583,7 @@ CheckForNewMinHeadSep(RF_Raid_t *raidPtr RF_ReconCtrl_t *reconCtrlPtr = raidPtr->reconControl; RF_HeadSepLimit_t new_min; RF_RowCol_t i; - RF_CallbackDesc_t *p; + RF_CallbackValueDesc_t *p; RF_ASSERT(hsCtr >= reconCtrlPtr->minHeadSepCounter); /* from the definition * of a minimum */ @@ -1607,13 +1606,13 @@ CheckForNewMinHeadSep(RF_Raid_t *raidPtr reconCtrlPtr->minHeadSepCounter = new_min; Dprintf1("RECON: new min head pos counter val is %ld\n", new_min); while (reconCtrlPtr->headSepCBList) { - if (reconCtrlPtr->headSepCBList->callbackArg.v > new_min) + if (reconCtrlPtr->headSepCBList->v > new_min) break; p = reconCtrlPtr->headSepCBList; reconCtrlPtr->headSepCBList = p->next; p->next = NULL; rf_CauseReconEvent(raidPtr, p->col, NULL, RF_REVENT_HEADSEPCLEAR); - rf_FreeCallbackDesc(p); + rf_FreeCallbackValueDesc(p); } } @@ -1641,7 +1640,7 @@ CheckHeadSeparation(RF_Raid_t *raidPtr, RF_ReconUnitNum_t which_ru) { RF_ReconCtrl_t *reconCtrlPtr = raidPtr->reconControl; - RF_CallbackDesc_t *cb, *p, *pt; + RF_CallbackValueDesc_t *cb, *p, *pt; int retval = 0; /* if we're too far ahead of the slowest disk, stop working on this @@ -1664,10 +1663,10 @@ CheckHeadSeparation(RF_Raid_t *raidPtr, raidPtr->raidid, col, ctrl->headSepCounter, reconCtrlPtr->minHeadSepCounter, raidPtr->headSepLimit); - cb = rf_AllocCallbackDesc(); + cb = rf_AllocCallbackValueDesc(); /* the minHeadSepCounter value we have to get to before we'll * wake up. build in 20% hysteresis. */ - cb->callbackArg.v = (ctrl->headSepCounter - raidPtr->headSepLimit + raidPtr->headSepLimit / 5); + cb->v = (ctrl->headSepCounter - raidPtr->headSepLimit + raidPtr->headSepLimit / 5); cb->col = col; cb->next = NULL; @@ -1677,11 +1676,11 @@ CheckHeadSeparation(RF_Raid_t *raidPtr, if (!p) reconCtrlPtr->headSepCBList = cb; else - if (cb->callbackArg.v < p->callbackArg.v) { + if (cb->v < p->v) { cb->next = reconCtrlPtr->headSepCBList; reconCtrlPtr->headSepCBList = cb; } else { - for (pt = p, p = p->next; p && (p->callbackArg.v < cb->callbackArg.v); pt = p, p = p->next); + for (pt = p, p = p->next; p && (p->v < cb->v); pt = p, p = p->next); cb->next = p; pt->next = cb; } @@ -1712,7 +1711,7 @@ CheckForcedOrBlockedReconstruction(RF_Ra RF_StripeNum_t psid, RF_ReconUnitNum_t which_ru) { - RF_CallbackDesc_t *cb; + RF_CallbackValueDesc_t *cb; int retcode = 0; if ((pssPtr->flags & RF_PSS_FORCED_ON_READ) || (pssPtr->flags & RF_PSS_FORCED_ON_WRITE)) @@ -1720,7 +1719,7 @@ CheckForcedOrBlockedReconstruction(RF_Ra else if (pssPtr->flags & RF_PSS_RECON_BLOCKED) { Dprintf3("RECON: col %d blocked at psid %ld ru %d\n", col, psid, which_ru); - cb = rf_AllocCallbackDesc(); /* append ourselves to + cb = rf_AllocCallbackValueDesc(); /* append ourselves to * the blockage-wait * list */ cb->col = col; @@ -1744,7 +1743,7 @@ CheckForcedOrBlockedReconstruction(RF_Ra */ int rf_ForceOrBlockRecon(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, - void (*cbFunc)(RF_Raid_t *, void *), void *cbArg) + void (*cbFunc)(void *), void *cbArg) { RF_StripeNum_t stripeID = asmap->stripeID; /* the stripe ID we're * forcing recon on */ @@ -1759,7 +1758,7 @@ rf_ForceOrBlockRecon(RF_Raid_t *raidPtr, RF_RowCol_t fcol, diskno, i; RF_ReconBuffer_t *new_rbuf; /* ptr to newly allocated rbufs */ RF_DiskQueueData_t *req;/* disk I/O req to be enqueued */ - RF_CallbackDesc_t *cb; + RF_CallbackFuncDesc_t *cb; int nPromoted; psid = rf_MapStripeIDToParityStripeID(&raidPtr->Layout, stripeID, &which_ru); @@ -1821,7 +1820,9 @@ rf_ForceOrBlockRecon(RF_Raid_t *raidPtr, /* use NULL b_proc b/c all addrs * should be in kernel space */ req = rf_CreateDiskQueueData(RF_IO_TYPE_READ, offset + which_ru * sectorsPerRU, sectorsPerRU, new_rbuf->buffer, - psid, which_ru, (int (*) (void *, int)) ForceReconReadDoneProc, (void *) new_rbuf, + psid, which_ru, + ForceReconReadDoneProc, + (void *) new_rbuf, NULL, (void *) raidPtr, 0, NULL, PR_WAITOK); new_rbuf->arg = req; @@ -1838,11 +1839,9 @@ rf_ForceOrBlockRecon(RF_Raid_t *raidPtr, } /* install a callback descriptor to be invoked when recon completes on * this parity stripe. */ - cb = rf_AllocCallbackDesc(); - /* XXX the following is bogus.. These functions don't really match!! - * GO */ - cb->callbackFunc = (void (*) (RF_CBParam_t)) cbFunc; - cb->callbackArg.p = (void *) cbArg; + cb = rf_AllocCallbackFuncDesc(); + cb->callbackFunc = cbFunc; + cb->callbackArg = cbArg; cb->next = pssPtr->procWaitList; pssPtr->procWaitList = cb; DDprintf2("raid%d: Waiting for forced recon on psid %ld\n", @@ -1882,7 +1881,7 @@ rf_UnblockRecon(RF_Raid_t *raidPtr, RF_A RF_ReconParityStripeStatus_t *pssPtr; RF_ReconUnitNum_t which_ru; RF_StripeNum_t psid; - RF_CallbackDesc_t *cb; + RF_CallbackValueDesc_t *cb; psid = rf_MapStripeIDToParityStripeID(&raidPtr->Layout, stripeID, &which_ru); RF_LOCK_PSS_MUTEX(raidPtr, psid); @@ -1919,7 +1918,7 @@ rf_UnblockRecon(RF_Raid_t *raidPtr, RF_A pssPtr->blockWaitList = cb->next; cb->next = NULL; rf_CauseReconEvent(raidPtr, cb->col, NULL, RF_REVENT_BLOCKCLEAR); - rf_FreeCallbackDesc(cb); + rf_FreeCallbackValueDesc(cb); } if (!(pssPtr->flags & RF_PSS_UNDER_RECON)) { /* if no recon was requested while recon was blocked */ @@ -1934,7 +1933,7 @@ out: void rf_WakeupHeadSepCBWaiters(RF_Raid_t *raidPtr) { - RF_CallbackDesc_t *p; + RF_CallbackValueDesc_t *p; rf_lock_mutex2(raidPtr->reconControl->rb_mutex); while(raidPtr->reconControl->rb_lock) { @@ -1950,7 +1949,7 @@ rf_WakeupHeadSepCBWaiters(RF_Raid_t *rai raidPtr->reconControl->headSepCBList = p->next; p->next = NULL; rf_CauseReconEvent(raidPtr, p->col, NULL, RF_REVENT_HEADSEPCLEAR); - rf_FreeCallbackDesc(p); + rf_FreeCallbackValueDesc(p); } rf_lock_mutex2(raidPtr->reconControl->rb_mutex); raidPtr->reconControl->rb_lock = 0; Index: src/sys/dev/raidframe/rf_reconstruct.h diff -u src/sys/dev/raidframe/rf_reconstruct.h:1.28 src/sys/dev/raidframe/rf_reconstruct.h:1.29 --- src/sys/dev/raidframe/rf_reconstruct.h:1.28 Mon May 2 03:29:18 2011 +++ src/sys/dev/raidframe/rf_reconstruct.h Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_reconstruct.h,v 1.28 2011/05/02 07:29:18 mrg Exp $ */ +/* $NetBSD: rf_reconstruct.h,v 1.29 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -156,7 +156,7 @@ struct RF_ReconCtrl_s { * waiting disk */ RF_ReconBuffer_t *fullBufferList; /* full buffers waiting to be * written out */ - RF_CallbackDesc_t *bufferWaitList; /* disks that are currently + RF_CallbackValueDesc_t *bufferWaitList; /* disks that are currently * blocked waiting for buffers */ /* parity stripe status table */ @@ -166,7 +166,7 @@ struct RF_ReconCtrl_s { /* maximum-head separation control */ RF_HeadSepLimit_t minHeadSepCounter; /* the minimum hs counter over * all disks */ - RF_CallbackDesc_t *headSepCBList; /* list of callbacks to be + RF_CallbackValueDesc_t *headSepCBList; /* list of callbacks to be * done as minPSID advances */ /* performance monitoring */ @@ -181,8 +181,7 @@ int rf_ReconstructFailedDiskBasic(RF_Rai int rf_ReconstructInPlace(RF_Raid_t *, RF_RowCol_t); int rf_ContinueReconstructFailedDisk(RF_RaidReconDesc_t *); int rf_ForceOrBlockRecon(RF_Raid_t *, RF_AccessStripeMap_t *, - void (*cbFunc) (RF_Raid_t *, void *), - void *); + void (*cbFunc) (void *), void *); int rf_UnblockRecon(RF_Raid_t *, RF_AccessStripeMap_t *); void rf_WakeupHeadSepCBWaiters(RF_Raid_t *); Index: src/sys/dev/raidframe/rf_states.c diff -u src/sys/dev/raidframe/rf_states.c:1.50 src/sys/dev/raidframe/rf_states.c:1.51 --- src/sys/dev/raidframe/rf_states.c:1.50 Sun Jan 3 03:17:24 2016 +++ src/sys/dev/raidframe/rf_states.c Wed Oct 9 23:43:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_states.c,v 1.50 2016/01/03 08:17:24 mlelstv Exp $ */ +/* $NetBSD: rf_states.c,v 1.51 2019/10/10 03:43:59 christos Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_states.c,v 1.50 2016/01/03 08:17:24 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_states.c,v 1.51 2019/10/10 03:43:59 christos Exp $"); #include <sys/errno.h> @@ -94,8 +94,9 @@ StateName(RF_AccessState_t state) #endif void -rf_ContinueRaidAccess(RF_RaidAccessDesc_t *desc) +rf_ContinueRaidAccess(void *v) { + RF_RaidAccessDesc_t *desc = v; int suspended = RF_FALSE; int current_state_index = desc->state; RF_AccessState_t current_state = desc->states[current_state_index]; @@ -211,10 +212,8 @@ rf_ContinueDagAccess(RF_DagList_t *dagLi int rf_State_LastState(RF_RaidAccessDesc_t *desc) { - void (*callbackFunc) (RF_CBParam_t) = desc->callbackFunc; - RF_CBParam_t callbackArg; - - callbackArg.p = desc->callbackArg; + void (*callbackFunc) (void *) = desc->callbackFunc; + void * callbackArg = desc->callbackArg; /* * We don't support non-async IO. @@ -281,7 +280,7 @@ rf_State_Quiesce(RF_RaidAccessDesc_t *de RF_AccTraceEntry_t *tracerec = &desc->tracerec; RF_Etimer_t timer; #endif - RF_CallbackDesc_t *cb; + RF_CallbackFuncDesc_t *cb; RF_Raid_t *raidPtr; int suspended = RF_FALSE; int need_cb, used_cb; @@ -307,13 +306,13 @@ rf_State_Quiesce(RF_RaidAccessDesc_t *de if (need_cb) { /* create a callback if we might need it... and we likely do. */ - cb = rf_AllocCallbackDesc(); + cb = rf_AllocCallbackFuncDesc(); } rf_lock_mutex2(raidPtr->access_suspend_mutex); if (raidPtr->accesses_suspended) { - cb->callbackFunc = (void (*) (RF_CBParam_t)) rf_ContinueRaidAccess; - cb->callbackArg.p = (void *) desc; + cb->callbackFunc = rf_ContinueRaidAccess; + cb->callbackArg = desc; cb->next = raidPtr->quiesce_wait_list; raidPtr->quiesce_wait_list = cb; suspended = RF_TRUE; @@ -322,7 +321,7 @@ rf_State_Quiesce(RF_RaidAccessDesc_t *de rf_unlock_mutex2(raidPtr->access_suspend_mutex); if ((need_cb == 1) && (used_cb == 0)) { - rf_FreeCallbackDesc(cb); + rf_FreeCallbackFuncDesc(cb); } #if RF_ACC_TRACE > 0 @@ -394,7 +393,7 @@ rf_State_Lock(RF_RaidAccessDesc_t *desc) lastStripeID = asm_p->stripeID; RF_INIT_LOCK_REQ_DESC(asm_p->lockReqDesc, desc->type, - (void (*) (struct buf *)) rf_ContinueRaidAccess, desc, asm_p, + rf_ContinueRaidAccess, desc, asm_p, raidPtr->Layout.dataSectorsPerStripe); if (rf_AcquireStripeLock(raidPtr->lockTable, asm_p->stripeID, &asm_p->lockReqDesc)) { @@ -409,7 +408,7 @@ rf_State_Lock(RF_RaidAccessDesc_t *desc) asm_p->flags |= RF_ASM_FLAGS_FORCE_TRIED; val = rf_ForceOrBlockRecon(raidPtr, asm_p, - (void (*) (RF_Raid_t *, void *)) rf_ContinueRaidAccess, desc); + rf_ContinueRaidAccess, desc); if (val == 0) { asm_p->flags |= RF_ASM_FLAGS_RECON_BLOCKED; } else {