Module Name: src Committed By: martin Date: Fri Sep 1 09:59:11 UTC 2017
Modified Files: src/sys/dev [netbsd-8]: dksubr.c ld.c ldvar.h src/sys/dev/i2o [netbsd-8]: ld_iop.c src/sys/dev/ic [netbsd-8]: ld_cac.c ld_nvme.c src/sys/dev/pci [netbsd-8]: ld_virtio.c src/sys/dev/sdmmc [netbsd-8]: ld_sdmmc.c sdmmc_mem.c sdmmcvar.h Log Message: Pull up following revision(s) (requested by mlelstv in ticket #261): sys/dev/sdmmc/ld_sdmmc.c: revision 1.32 sys/dev/sdmmc/ld_sdmmc.c: revision 1.33 sys/dev/sdmmc/ld_sdmmc.c: revision 1.34 sys/dev/sdmmc/sdmmc_mem.c: revision 1.62 sys/dev/i2o/ld_iop.c: revision 1.39 sys/dev/ld.c: revision 1.102 sys/dev/ld.c: revision 1.103 sys/dev/dksubr.c: revision 1.98 sys/dev/dksubr.c: revision 1.99 sys/dev/sdmmc/sdmmcvar.h: revision 1.29 sys/dev/ic/ld_nvme.c: revision 1.17 sys/dev/ldvar.h: revision 1.31 sys/dev/ldvar.h: revision 1.32 sys/dev/ic/ld_cac.c: revision 1.31 sys/dev/pci/ld_virtio.c: revision 1.16 While ld(4) is MP safe, many backends are not. Add a flag for backends that are MP safe. Take KERNEL_LOCK when calling into a backend that doesn't have the flag set. Do the same for the discard routine. Fixes PR 52462. Defer sdmmc discard operations to the sdmmc task queue. Fixes a panic introduced by ld.c r1.102. validate length for discard operation and split operation when byte length doesn't fit into 'int'. make the sc_discard interface for the ld backend asynchronous and signal completion through new callback lddiscardend. Use a standard struct buf to pass disk address and range instead of two off_t values. make lddiscard synchronous again. This is a requirement of the current ffs discard code. Initialize error also in the case where len=0, which just succeeds. while here, assert that the len is indeed non-negative. this is already confirmed by sys_fdiscard, but let's be sure. reported by: GCC, but with different compile flags To generate a diff of this commit: cvs rdiff -u -r1.97 -r1.97.2.1 src/sys/dev/dksubr.c cvs rdiff -u -r1.101 -r1.101.2.1 src/sys/dev/ld.c cvs rdiff -u -r1.30 -r1.30.2.1 src/sys/dev/ldvar.h cvs rdiff -u -r1.37 -r1.37.6.1 src/sys/dev/i2o/ld_iop.c cvs rdiff -u -r1.30 -r1.30.8.1 src/sys/dev/ic/ld_cac.c cvs rdiff -u -r1.16 -r1.16.2.1 src/sys/dev/ic/ld_nvme.c cvs rdiff -u -r1.15 -r1.15.6.1 src/sys/dev/pci/ld_virtio.c cvs rdiff -u -r1.26.4.4 -r1.26.4.5 src/sys/dev/sdmmc/ld_sdmmc.c cvs rdiff -u -r1.56.4.3 -r1.56.4.4 src/sys/dev/sdmmc/sdmmc_mem.c cvs rdiff -u -r1.23.6.3 -r1.23.6.4 src/sys/dev/sdmmc/sdmmcvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.