Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src



>>> "matthew green" <mrg%netbsd.org@localhost> wrote

> Module Name:	src
> Committed By:	mrg
> Date:		Thu Jan 18 00:32:49 UTC 2018
> 
> Modified Files:
> 	src/sbin/raidctl: raidctl.8 raidctl.c rf_configure.c
> 	src/sys/conf: files
> 	src/sys/dev/raidframe: files.raidframe raidframeio.h raidframevar.h
> 	    rf_compat50.c rf_decluster.c rf_decluster.h rf_kintf.h
> 	    rf_netbsdkintf.c rf_reconutil.c
> 	src/sys/modules/raid: Makefile
> 	src/sys/rump: Makefile.rump
> 	src/sys/rump/dev/lib/libraidframe: Makefile
> 	src/tests/dev/raidframe: t_raid.sh
> Added Files:
> 	src/sys/dev/raidframe: rf_compat32.c rf_compat32.h rf_compat80.c
> 	    rf_compat80.h
> 
> Log Message:
> implement 32-bit compat support for raidframe.
> 
> convert several raidframe ioctls to be bitsize idempotent so that
> they work the same in 32 and 64 bit worlds, allowing netbsd32 to
> configure and query raid properly.  remove useless 'row' in a few
> places.  add COMPAT_80 and put the old ioctls there.
> 
> raidframeio.h:
>   RAIDFRAME_TEST_ACC
>   - remove, unused
>   RAIDFRAME_GET_COMPONENT_LABEL
>   - convert to label not pointer to label
>   RAIDFRAME_CHECK_RECON_STATUS_EXT
>   RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
>   RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
>   - convert to progress info not pointer to info
>   RAIDFRAME_GET_INFO
>   - version entirely.
> raidframevar.h:
>   - rf_recon_req{} has row, flags and raidPtr removed (they're
>     not a useful part of this interface.)
>   - RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
>   - RF_RaidDisk_s{} is re-ordered slightly to fix alignment
>     padding - the actual data was already OK.
>   - InstallSpareTable() loses row argument
> 
> rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
> by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.
> 
> rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
> RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
> RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
> RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
> RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.
> 
> move several of the per-ioctl code blocks into separate functions.
> 
> add rf_recon_req_internal{} to replace old usage of global
> rf_recon_req{} that had unused void * in the structure, ruining
> it's 32/64 bit ABI.
> 
> add missing case for RAIDFRAME_GET_INFO50.
> 
> adjust raid tests to use the new .conf format, and add a case to
> test the old method as well.
> 
> raidctl:
> deal with lack of 'row' members in a couple of places.
> fail request no longer takes row.
> handle "START array" sections with just "numCol numSpare", ie
> no "numRow" specified.  for now, generate old-style configuration
> but update raidctl.8 to specify the new style (keeping reference
> to the old style.)
> 
> note that: RF_ComponentLabel_s::{row,num_rows} and
> RF_SingleComponent_s::row are obsolete but not removed yet.
> 
> 
> To generate a diff of this commit:
> cvs rdiff -u -r1.73 -r1.74 src/sbin/raidctl/raidctl.8
> cvs rdiff -u -r1.65 -r1.66 src/sbin/raidctl/raidctl.c
> cvs rdiff -u -r1.32 -r1.33 src/sbin/raidctl/rf_configure.c
> cvs rdiff -u -r1.1191 -r1.1192 src/sys/conf/files
> cvs rdiff -u -r1.9 -r1.10 src/sys/dev/raidframe/files.raidframe
> cvs rdiff -u -r1.7 -r1.8 src/sys/dev/raidframe/raidframeio.h \
>     src/sys/dev/raidframe/rf_decluster.h
> cvs rdiff -u -r1.17 -r1.18 src/sys/dev/raidframe/raidframevar.h
> cvs rdiff -u -r0 -r1.1 src/sys/dev/raidframe/rf_compat32.c \
>     src/sys/dev/raidframe/rf_compat32.h src/sys/dev/raidframe/rf_compat80.c \
>     src/sys/dev/raidframe/rf_compat80.h
> cvs rdiff -u -r1.2 -r1.3 src/sys/dev/raidframe/rf_compat50.c
> cvs rdiff -u -r1.24 -r1.25 src/sys/dev/raidframe/rf_decluster.c \
>     src/sys/dev/raidframe/rf_kintf.h
> cvs rdiff -u -r1.352 -r1.353 src/sys/dev/raidframe/rf_netbsdkintf.c
> cvs rdiff -u -r1.35 -r1.36 src/sys/dev/raidframe/rf_reconutil.c
> cvs rdiff -u -r1.1 -r1.2 src/sys/modules/raid/Makefile
> cvs rdiff -u -r1.122 -r1.123 src/sys/rump/Makefile.rump
> cvs rdiff -u -r1.10 -r1.11 src/sys/rump/dev/lib/libraidframe/Makefile
> cvs rdiff -u -r1.12 -r1.13 src/tests/dev/raidframe/t_raid.sh
> 
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.

The kernel with this changes cannot configure the RAIDframe device
with old raidctl(8) as follows, since RF_Config_s has been changed
(remove numRow) but no compat code.

| dk_lookup on device:  failed!
| RAIDFRAME: failed rf_ConfigureDisks with 2
| raidctl: ioctl (RAIDFRAME_CONFIGURE) failed: No such file or directory

-- Takeshi Nakayama


Home | Main Index | Thread Index | Old Index