diff options
| author | torben | 2015-11-05 15:25:43 +0100 |
|---|---|---|
| committer | torben | 2015-11-05 15:25:43 +0100 |
| commit | 5d853b5a1f037ef0888fd039fdf4bd86739fcb11 (patch) | |
| tree | 1d92b1a99fb8a3faf79cb3aec130bf4929fa87cc | |
| parent | Merge branch 'master' of git.openslx.org:openslx-ng/systemd-init (diff) | |
| download | systemd-init-5d853b5a1f037ef0888fd039fdf4bd86739fcb11.tar.gz systemd-init-5d853b5a1f037ef0888fd039fdf4bd86739fcb11.tar.xz systemd-init-5d853b5a1f037ef0888fd039fdf4bd86739fcb11.zip | |
Refactor structure.
27 files changed, 3107 insertions, 94 deletions
diff --git a/builder/dnbd3-qcow2-rootfs/binaries/busybox b/builder/dnbd3-qcow2-rootfs/binaries/busybox/busybox Binary files differindex 7eceacf7..7eceacf7 100755 --- a/builder/dnbd3-qcow2-rootfs/binaries/busybox +++ b/builder/dnbd3-qcow2-rootfs/binaries/busybox/busybox diff --git a/builder/dnbd3-qcow2-rootfs/binaries/dnbd3 b/builder/dnbd3-qcow2-rootfs/binaries/dnbd3 new file mode 160000 +Subproject c3c050851dc866f2311d33a262ed81af8c57ce2 diff --git a/builder/dnbd3-qcow2-rootfs/binaries/dnbd3-client b/builder/dnbd3-qcow2-rootfs/binaries/dnbd3-client Binary files differdeleted file mode 100755 index 76924b49..00000000 --- a/builder/dnbd3-qcow2-rootfs/binaries/dnbd3-client +++ /dev/null diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.ko.cmd b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.ko.cmd new file mode 100644 index 00000000..17386f08 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.ko.cmd @@ -0,0 +1 @@ +cmd_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.ko /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.mod.o.cmd b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.mod.o.cmd new file mode 100644 index 00000000..1248ea8a --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.mod.o.cmd @@ -0,0 +1,595 @@ +cmd_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o := gcc -Wp,-MD,/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/.nbd.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(nbd.mod)" -D"KBUILD_MODNAME=KBUILD_STR(nbd)" -DMODULE -c -o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.c + +source_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o := /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.c + +deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o := \ + $(wildcard include/config/module/unload.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/vm86.h \ + arch/x86/include/uapi/asm/vm86.h \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/sigcontext.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/vermagic.h \ + include/generated/utsrelease.h \ + +/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o: $(deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o) + +$(deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.mod.o): diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.o.cmd b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.o.cmd new file mode 100644 index 00000000..b4c40a04 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.nbd.o.cmd @@ -0,0 +1,1145 @@ +cmd_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o := gcc -Wp,-MD,/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/.nbd.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(nbd)" -D"KBUILD_MODNAME=KBUILD_STR(nbd)" -c -o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/.tmp_nbd.o /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.c + +source_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o := /media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.c + +deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o := \ + $(wildcard include/config/debug/fs.h) \ + include/uapi/linux/major.h \ + include/linux/blkdev.h \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/blk/dev/bsg.h) \ + $(wildcard include/config/blk/dev/throttling.h) \ + $(wildcard include/config/bounce.h) \ + $(wildcard include/config/mmu.h) \ + include/linux/sched.h \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/no/hz/common.h) \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/smt.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/memcg/kmem.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/proc/fs.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + $(wildcard include/config/preempt.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + include/linux/capability.h \ + $(wildcard include/config/multiuser.h) \ + include/uapi/linux/capability.h \ + include/linux/types.h \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ + $(wildcard include/config/base/small.h) \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + /usr/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/modversions.h) \ + $(wildcard include/config/unused/symbols.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + include/uapi/linux/const.h \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/tracer.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + include/linux/bug.h \ + $(wildcard include/config/generic/bug.h) \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/vm86.h \ + arch/x86/include/uapi/asm/vm86.h \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/sigcontext.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/uapi/linux/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/linux/jiffies.h \ + include/generated/timeconst.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/rbtree.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/nodemask.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/movable/node.h) \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + $(wildcard include/config/compaction.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + arch/x86/include/uapi/asm/auxvec.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + include/linux/osq_lock.h \ + arch/x86/include/asm/rwsem.h \ + include/linux/uprobes.h \ + arch/x86/include/asm/uprobes.h \ + include/linux/notifier.h \ + include/linux/mutex.h \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/srcu.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + $(wildcard include/config/sysfs.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/uapi/linux/sysctl.h \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + arch/x86/include/asm/mmu.h \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + $(wildcard include/config/memory/hotremove.h) \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + $(wildcard include/config/have/memoryless/nodes.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/pfn.h \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/cma.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/gfp.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/uapi/linux/limits.h \ + include/linux/idr.h \ + include/linux/percpu-refcount.h \ + include/linux/percpu-rwsem.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/debug.h) \ + include/linux/genhd.h \ + $(wildcard include/config/fail/make/request.h) \ + $(wildcard include/config/solaris/x86/partition.h) \ + $(wildcard include/config/bsd/disklabel.h) \ + $(wildcard include/config/unixware/disklabel.h) \ + $(wildcard include/config/minix/subpartition.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + $(wildcard include/config/kasan/shadow/offset.h) \ + include/linux/device.h \ + $(wildcard include/config/debug/devres.h) \ + $(wildcard include/config/pinctrl.h) \ + $(wildcard include/config/dma/cma.h) \ + $(wildcard include/config/of.h) \ + $(wildcard include/config/devtmpfs.h) \ + $(wildcard include/config/sysfs/deprecated.h) \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/kobject_ns.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/kref.h \ + include/linux/klist.h \ + include/linux/pinctrl/devinfo.h \ + include/linux/pinctrl/consumer.h \ + include/linux/seq_file.h \ + include/linux/pinctrl/pinctrl-state.h \ + include/linux/ratelimit.h \ + arch/x86/include/asm/device.h \ + $(wildcard include/config/x86/dev/dma/ops.h) \ + $(wildcard include/config/intel/iommu.h) \ + $(wildcard include/config/amd/iommu.h) \ + include/linux/pm_wakeup.h \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/migration.h) \ + include/linux/dcache.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/blk_types.h \ + include/uapi/linux/fs.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/page_ext.h \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/pageflags/extended.h) \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + include/linux/backing-dev-defs.h \ + include/linux/flex_proportions.h \ + include/linux/mempool.h \ + include/linux/bio.h \ + include/linux/ioprio.h \ + include/linux/iocontext.h \ + include/linux/bsg.h \ + include/uapi/linux/bsg.h \ + include/linux/scatterlist.h \ + $(wildcard include/config/debug/sg.h) \ + $(wildcard include/config/need/sg/dma/length.h) \ + $(wildcard include/config/arch/has/sg/chain.h) \ + include/linux/elevator.h \ + include/linux/hashtable.h \ + include/linux/hash.h \ + $(wildcard include/config/arch/has/fast/multiplier.h) \ + include/linux/module.h \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/kmod.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/file.h \ + include/net/sock.h \ + $(wildcard include/config/net.h) \ + $(wildcard include/config/ipv6.h) \ + $(wildcard include/config/rps.h) \ + $(wildcard include/config/net/rx/busy/poll.h) \ + $(wildcard include/config/xfrm.h) \ + $(wildcard include/config/inet.h) \ + include/linux/list_nulls.h \ + include/linux/netdevice.h \ + $(wildcard include/config/dcb.h) \ + $(wildcard include/config/wlan.h) \ + $(wildcard include/config/ax25.h) \ + $(wildcard include/config/mac80211/mesh.h) \ + $(wildcard include/config/net/ipip.h) \ + $(wildcard include/config/net/ipgre.h) \ + $(wildcard include/config/ipv6/sit.h) \ + $(wildcard include/config/ipv6/tunnel.h) \ + $(wildcard include/config/netpoll.h) \ + $(wildcard include/config/xps.h) \ + $(wildcard include/config/bql.h) \ + $(wildcard include/config/rfs/accel.h) \ + $(wildcard include/config/fcoe.h) \ + $(wildcard include/config/net/poll/controller.h) \ + $(wildcard include/config/libfcoe.h) \ + $(wildcard include/config/wireless/ext.h) \ + $(wildcard include/config/net/switchdev.h) \ + $(wildcard include/config/vlan/8021q.h) \ + $(wildcard include/config/net/dsa.h) \ + $(wildcard include/config/tipc.h) \ + $(wildcard include/config/mpls/routing.h) \ + $(wildcard include/config/net/cls/act.h) \ + $(wildcard include/config/netfilter/ingress.h) \ + $(wildcard include/config/net/flow/limit.h) \ + include/linux/delay.h \ + arch/x86/include/asm/delay.h \ + include/asm-generic/delay.h \ + include/linux/prefetch.h \ + include/linux/dmaengine.h \ + $(wildcard include/config/async/tx/enable/channel/switch.h) \ + $(wildcard include/config/dma/engine.h) \ + $(wildcard include/config/rapidio/dma/engine.h) \ + $(wildcard include/config/async/tx/dma.h) \ + include/linux/uio.h \ + include/uapi/linux/uio.h \ + include/linux/dynamic_queue_limits.h \ + include/linux/ethtool.h \ + include/linux/compat.h \ + $(wildcard include/config/compat/old/sigaction.h) \ + $(wildcard include/config/odd/rt/sigaction.h) \ + include/linux/socket.h \ + arch/x86/include/uapi/asm/socket.h \ + include/uapi/asm-generic/socket.h \ + arch/x86/include/uapi/asm/sockios.h \ + include/uapi/asm-generic/sockios.h \ + include/uapi/linux/sockios.h \ + include/uapi/linux/socket.h \ + include/uapi/linux/if.h \ + include/uapi/linux/hdlc/ioctl.h \ + include/uapi/linux/aio_abi.h \ + arch/x86/include/asm/compat.h \ + arch/x86/include/asm/user32.h \ + include/uapi/linux/ethtool.h \ + include/linux/if_ether.h \ + include/linux/skbuff.h \ + $(wildcard include/config/nf/conntrack.h) \ + $(wildcard include/config/bridge/netfilter.h) \ + $(wildcard include/config/ipv6/ndisc/nodetype.h) \ + $(wildcard include/config/net/sched.h) \ + $(wildcard include/config/network/secmark.h) \ + $(wildcard include/config/network/phy/timestamping.h) \ + $(wildcard include/config/netfilter/xt/target/trace.h) \ + $(wildcard include/config/nf/tables.h) \ + include/linux/kmemcheck.h \ + include/linux/net.h \ + include/linux/random.h \ + $(wildcard include/config/arch/random.h) \ + include/uapi/linux/random.h \ + arch/x86/include/asm/archrandom.h \ + include/uapi/linux/net.h \ + include/linux/textsearch.h \ + include/net/checksum.h \ + arch/x86/include/asm/checksum.h \ + arch/x86/include/asm/checksum_64.h \ + include/linux/dma-mapping.h \ + $(wildcard include/config/has/dma.h) \ + $(wildcard include/config/arch/has/dma/set/coherent/mask.h) \ + $(wildcard include/config/have/dma/attrs.h) \ + $(wildcard include/config/need/dma/map/state.h) \ + include/linux/dma-attrs.h \ + include/linux/dma-direction.h \ + arch/x86/include/asm/dma-mapping.h \ + $(wildcard include/config/isa.h) \ + $(wildcard include/config/x86/dma/remap.h) \ + include/linux/dma-debug.h \ + $(wildcard include/config/dma/api/debug.h) \ + arch/x86/include/asm/swiotlb.h \ + $(wildcard include/config/swiotlb.h) \ + include/linux/swiotlb.h \ + include/asm-generic/dma-coherent.h \ + $(wildcard include/config/have/generic/dma/coherent.h) \ + include/linux/dma-contiguous.h \ + include/asm-generic/dma-mapping-common.h \ + include/linux/netdev_features.h \ + include/net/flow_dissector.h \ + include/linux/in6.h \ + include/uapi/linux/in6.h \ + include/uapi/linux/libc-compat.h \ + include/uapi/linux/if_ether.h \ + include/linux/splice.h \ + include/linux/pipe_fs_i.h \ + include/net/net_namespace.h \ + $(wildcard include/config/ieee802154/6lowpan.h) \ + $(wildcard include/config/ip/sctp.h) \ + $(wildcard include/config/ip/dccp.h) \ + $(wildcard include/config/netfilter.h) \ + $(wildcard include/config/nf/defrag/ipv6.h) \ + $(wildcard include/config/wext/core.h) \ + $(wildcard include/config/ip/vs.h) \ + $(wildcard include/config/mpls.h) \ + $(wildcard include/config/net/ns.h) \ + include/net/flow.h \ + include/net/netns/core.h \ + include/net/netns/mib.h \ + $(wildcard include/config/xfrm/statistics.h) \ + include/net/snmp.h \ + include/uapi/linux/snmp.h \ + include/linux/u64_stats_sync.h \ + include/net/netns/unix.h \ + include/net/netns/packet.h \ + include/net/netns/ipv4.h \ + $(wildcard include/config/ip/multiple/tables.h) \ + $(wildcard include/config/ip/route/classid.h) \ + $(wildcard include/config/ip/mroute.h) \ + $(wildcard include/config/ip/mroute/multiple/tables.h) \ + include/net/inet_frag.h \ + include/net/netns/ipv6.h \ + $(wildcard include/config/ipv6/multiple/tables.h) \ + $(wildcard include/config/ipv6/mroute.h) \ + $(wildcard include/config/ipv6/mroute/multiple/tables.h) \ + include/net/dst_ops.h \ + include/net/netns/ieee802154_6lowpan.h \ + include/net/netns/sctp.h \ + include/net/netns/dccp.h \ + include/net/netns/netfilter.h \ + include/linux/netfilter_defs.h \ + include/uapi/linux/netfilter.h \ + include/linux/in.h \ + include/uapi/linux/in.h \ + include/net/netns/x_tables.h \ + $(wildcard include/config/bridge/nf/ebtables.h) \ + include/net/netns/conntrack.h \ + $(wildcard include/config/nf/conntrack/proc/compat.h) \ + $(wildcard include/config/nf/conntrack/events.h) \ + $(wildcard include/config/nf/conntrack/labels.h) \ + $(wildcard include/config/nf/nat/needed.h) \ + include/linux/netfilter/nf_conntrack_tcp.h \ + include/uapi/linux/netfilter/nf_conntrack_tcp.h \ + include/net/netns/nftables.h \ + include/net/netns/xfrm.h \ + include/uapi/linux/xfrm.h \ + include/net/flowcache.h \ + include/linux/interrupt.h \ + $(wildcard include/config/irq/forced/threading.h) \ + $(wildcard include/config/generic/irq/probe.h) \ + include/net/netns/mpls.h \ + include/linux/ns_common.h \ + include/linux/seq_file_net.h \ + include/net/dsa.h \ + $(wildcard include/config/net/dsa/hwmon.h) \ + include/linux/of.h \ + $(wildcard include/config/sparc.h) \ + $(wildcard include/config/of/dynamic.h) \ + $(wildcard include/config/attach/node.h) \ + $(wildcard include/config/detach/node.h) \ + $(wildcard include/config/add/property.h) \ + $(wildcard include/config/remove/property.h) \ + $(wildcard include/config/update/property.h) \ + $(wildcard include/config/no/change.h) \ + $(wildcard include/config/change/add.h) \ + $(wildcard include/config/change/remove.h) \ + $(wildcard include/config/of/resolve.h) \ + $(wildcard include/config/of/overlay.h) \ + include/linux/mod_devicetable.h \ + include/linux/uuid.h \ + include/uapi/linux/uuid.h \ + include/linux/property.h \ + include/linux/fwnode.h \ + include/linux/phy.h \ + include/linux/mii.h \ + include/uapi/linux/mii.h \ + include/linux/phy_fixed.h \ + $(wildcard include/config/fixed/phy.h) \ + include/net/netprio_cgroup.h \ + include/linux/cgroup.h \ + include/uapi/linux/cgroupstats.h \ + include/uapi/linux/taskstats.h \ + include/uapi/linux/neighbour.h \ + include/linux/netlink.h \ + include/net/scm.h \ + $(wildcard include/config/security/network.h) \ + include/linux/security.h \ + $(wildcard include/config/security/network/xfrm.h) \ + $(wildcard include/config/security/path.h) \ + $(wildcard include/config/securityfs.h) \ + include/linux/nsproxy.h \ + include/uapi/linux/netlink.h \ + include/uapi/linux/netdevice.h \ + include/uapi/linux/if_packet.h \ + include/linux/if_link.h \ + include/uapi/linux/if_link.h \ + include/uapi/linux/if_bonding.h \ + include/linux/page_counter.h \ + include/linux/memcontrol.h \ + $(wildcard include/config/memcg/swap.h) \ + include/linux/filter.h \ + $(wildcard include/config/bpf/jit.h) \ + include/uapi/linux/filter.h \ + include/uapi/linux/bpf_common.h \ + include/uapi/linux/bpf.h \ + include/linux/rculist_nulls.h \ + include/linux/poll.h \ + include/uapi/linux/poll.h \ + arch/x86/include/uapi/asm/poll.h \ + include/uapi/asm-generic/poll.h \ + include/net/dst.h \ + include/linux/rtnetlink.h \ + $(wildcard include/config/net/ingress.h) \ + include/uapi/linux/rtnetlink.h \ + include/uapi/linux/if_addr.h \ + include/net/neighbour.h \ + include/net/rtnetlink.h \ + include/net/netlink.h \ + include/net/tcp_states.h \ + include/uapi/linux/net_tstamp.h \ + include/linux/kthread.h \ + include/linux/debugfs.h \ + include/uapi/linux/nbd.h \ + +/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o: $(deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o) + +$(deps_/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o): diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/.tmp_versions/nbd.mod b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.tmp_versions/nbd.mod new file mode 100644 index 00000000..f2bc3309 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/.tmp_versions/nbd.mod @@ -0,0 +1,2 @@ +/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.ko +/media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.o diff --git a/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/Makefile b/builder/dnbd3-qcow2-rootfs/binaries/nbd/Makefile index ca0423f5..ca0423f5 100644 --- a/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/Makefile +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/Makefile diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/Module.symvers b/builder/dnbd3-qcow2-rootfs/binaries/nbd/Module.symvers new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/Module.symvers diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/modules.order b/builder/dnbd3-qcow2-rootfs/binaries/nbd/modules.order new file mode 100644 index 00000000..8f303a78 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/modules.order @@ -0,0 +1 @@ +kernel//media/sf_project/systemd-init/builder/dnbd3-qcow2-rootfs/kernel_modules/nbd/nbd.ko diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.c b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.c new file mode 100644 index 00000000..1b876233 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.c @@ -0,0 +1,1136 @@ +/* + * Network block device - make block devices work over TCP + * + * Note that you can not swap over this thing, yet. Seems to work but + * deadlocks sometimes - you can not swap over TCP in general. + * + * Copyright 1997-2000, 2008 Pavel Machek <pavel@ucw.cz> + * Parts copyright 2001 Steven Whitehouse <steve@chygwyn.com> + * + * This file is released under GPLv2 or later. + * + * (part of code stolen from loop.c) + */ + +#include <linux/major.h> + +#include <linux/blkdev.h> +#include <linux/module.h> +#include <linux/init.h> +#include <linux/sched.h> +#include <linux/fs.h> +#include <linux/bio.h> +#include <linux/stat.h> +#include <linux/errno.h> +#include <linux/file.h> +#include <linux/ioctl.h> +#include <linux/mutex.h> +#include <linux/compiler.h> +#include <linux/err.h> +#include <linux/kernel.h> +#include <linux/slab.h> +#include <net/sock.h> +#include <linux/net.h> +#include <linux/kthread.h> +#include <linux/types.h> +#include <linux/debugfs.h> + +#include <asm/uaccess.h> +#include <asm/types.h> + +#include <linux/nbd.h> + +struct nbd_device { + u32 flags; + struct socket * sock; /* If == NULL, device is not ready, yet */ + int magic; + + spinlock_t queue_lock; + struct list_head queue_head; /* Requests waiting result */ + struct request *active_req; + wait_queue_head_t active_wq; + struct list_head waiting_queue; /* Requests to be sent */ + wait_queue_head_t waiting_wq; + + struct mutex tx_lock; + struct gendisk *disk; + int blksize; + loff_t bytesize; + int xmit_timeout; + bool disconnect; /* a disconnect has been requested by user */ + + struct timer_list timeout_timer; + spinlock_t tasks_lock; + struct task_struct *task_recv; + struct task_struct *task_send; + +#if IS_ENABLED(CONFIG_DEBUG_FS) + struct dentry *dbg_dir; +#endif +}; + +#if IS_ENABLED(CONFIG_DEBUG_FS) +static struct dentry *nbd_dbg_dir; +#endif + +#define nbd_name(nbd) ((nbd)->disk->disk_name) + +#define NBD_MAGIC 0x68797548 + +static unsigned int nbds_max = 16; +static struct nbd_device *nbd_dev; +static int max_part; + +/* + * Use just one lock (or at most 1 per NIC). Two arguments for this: + * 1. Each NIC is essentially a synchronization point for all servers + * accessed through that NIC so there's no need to have more locks + * than NICs anyway. + * 2. More locks lead to more "Dirty cache line bouncing" which will slow + * down each lock to the point where they're actually slower than just + * a single lock. + * Thanks go to Jens Axboe and Al Viro for their LKML emails explaining this! + */ +static DEFINE_SPINLOCK(nbd_lock); + +static inline struct device *nbd_to_dev(struct nbd_device *nbd) +{ + return disk_to_dev(nbd->disk); +} + +static const char *nbdcmd_to_ascii(int cmd) +{ + switch (cmd) { + case NBD_CMD_READ: return "read"; + case NBD_CMD_WRITE: return "write"; + case NBD_CMD_DISC: return "disconnect"; + case NBD_CMD_FLUSH: return "flush"; + case NBD_CMD_TRIM: return "trim/discard"; + } + return "invalid"; +} + +static void nbd_end_request(struct nbd_device *nbd, struct request *req) +{ + int error = req->errors ? -EIO : 0; + struct request_queue *q = req->q; + unsigned long flags; + + dev_dbg(nbd_to_dev(nbd), "request %p: %s\n", req, + error ? "failed" : "done"); + + spin_lock_irqsave(q->queue_lock, flags); + __blk_end_request_all(req, error); + spin_unlock_irqrestore(q->queue_lock, flags); +} + +/* + * Forcibly shutdown the socket causing all listeners to error + */ +static void sock_shutdown(struct nbd_device *nbd) +{ + if (!nbd->sock) + return; + + dev_warn(disk_to_dev(nbd->disk), "shutting down socket\n"); + kernel_sock_shutdown(nbd->sock, SHUT_RDWR); + nbd->sock = NULL; + del_timer_sync(&nbd->timeout_timer); +} + +static void nbd_xmit_timeout(unsigned long arg) +{ + struct nbd_device *nbd = (struct nbd_device *)arg; + unsigned long flags; + + if (list_empty(&nbd->queue_head)) + return; + + nbd->disconnect = true; + + spin_lock_irqsave(&nbd->tasks_lock, flags); + + if (nbd->task_recv) + force_sig(SIGKILL, nbd->task_recv); + + if (nbd->task_send) + force_sig(SIGKILL, nbd->task_send); + + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + dev_err(nbd_to_dev(nbd), "Connection timed out, killed receiver and sender, shutting down connection\n"); +} + +/* + * Send or receive packet. + */ +static int sock_xmit(struct nbd_device *nbd, int send, void *buf, int size, + int msg_flags) +{ + struct socket *sock = nbd->sock; + int result; + struct msghdr msg; + struct kvec iov; + sigset_t blocked, oldset; + unsigned long pflags = current->flags; + + if (unlikely(!sock)) { + dev_err(disk_to_dev(nbd->disk), + "Attempted %s on closed socket in sock_xmit\n", + (send ? "send" : "recv")); + return -EINVAL; + } + + /* Allow interception of SIGKILL only + * Don't allow other signals to interrupt the transmission */ + siginitsetinv(&blocked, sigmask(SIGKILL)); + sigprocmask(SIG_SETMASK, &blocked, &oldset); + + current->flags |= PF_MEMALLOC; + do { + sock->sk->sk_allocation = GFP_NOIO | __GFP_MEMALLOC; + iov.iov_base = buf; + iov.iov_len = size; + msg.msg_name = NULL; + msg.msg_namelen = 0; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = msg_flags | MSG_NOSIGNAL; + + if (send) + result = kernel_sendmsg(sock, &msg, &iov, 1, size); + else + result = kernel_recvmsg(sock, &msg, &iov, 1, size, + msg.msg_flags); + + if (result <= 0) { + if (result == 0) + result = -EPIPE; /* short read */ + break; + } + size -= result; + buf += result; + } while (size > 0); + + sigprocmask(SIG_SETMASK, &oldset, NULL); + tsk_restore_flags(current, pflags, PF_MEMALLOC); + + if (!send && nbd->xmit_timeout) + mod_timer(&nbd->timeout_timer, jiffies + nbd->xmit_timeout); + + return result; +} + +static inline int sock_send_bvec(struct nbd_device *nbd, struct bio_vec *bvec, + int flags) +{ + int result; + void *kaddr = kmap(bvec->bv_page); + result = sock_xmit(nbd, 1, kaddr + bvec->bv_offset, + bvec->bv_len, flags); + kunmap(bvec->bv_page); + return result; +} + +/* always call with the tx_lock held */ +static int nbd_send_req(struct nbd_device *nbd, struct request *req) +{ + int result, flags; + struct nbd_request request; + unsigned long size = blk_rq_bytes(req); + u32 type; + + if (req->cmd_type == REQ_TYPE_DRV_PRIV) + type = NBD_CMD_DISC; + else if (req->cmd_flags & REQ_DISCARD) + type = NBD_CMD_TRIM; + else if (req->cmd_flags & REQ_FLUSH) + type = NBD_CMD_FLUSH; + else if (rq_data_dir(req) == WRITE) + type = NBD_CMD_WRITE; + else + type = NBD_CMD_READ; + + memset(&request, 0, sizeof(request)); + request.magic = htonl(NBD_REQUEST_MAGIC); + request.type = htonl(type); + if (type != NBD_CMD_FLUSH && type != NBD_CMD_DISC) { + request.from = cpu_to_be64((u64)blk_rq_pos(req) << 9); + request.len = htonl(size); + } + memcpy(request.handle, &req, sizeof(req)); + + dev_dbg(nbd_to_dev(nbd), "request %p: sending control (%s@%llu,%uB)\n", + req, nbdcmd_to_ascii(type), + (unsigned long long)blk_rq_pos(req) << 9, blk_rq_bytes(req)); + result = sock_xmit(nbd, 1, &request, sizeof(request), + (type == NBD_CMD_WRITE) ? MSG_MORE : 0); + if (result <= 0) { + dev_err(disk_to_dev(nbd->disk), + "Send control failed (result %d)\n", result); + return -EIO; + } + + if (type == NBD_CMD_WRITE) { + struct req_iterator iter; + struct bio_vec bvec; + /* + * we are really probing at internals to determine + * whether to set MSG_MORE or not... + */ + rq_for_each_segment(bvec, req, iter) { + flags = 0; + if (!rq_iter_last(bvec, iter)) + flags = MSG_MORE; + dev_dbg(nbd_to_dev(nbd), "request %p: sending %d bytes data\n", + req, bvec.bv_len); + result = sock_send_bvec(nbd, &bvec, flags); + if (result <= 0) { + dev_err(disk_to_dev(nbd->disk), + "Send data failed (result %d)\n", + result); + return -EIO; + } + } + } + return 0; +} + +static struct request *nbd_find_request(struct nbd_device *nbd, + struct request *xreq) +{ + struct request *req, *tmp; + int err; + + err = wait_event_interruptible(nbd->active_wq, nbd->active_req != xreq); + if (unlikely(err)) + return ERR_PTR(err); + + spin_lock(&nbd->queue_lock); + list_for_each_entry_safe(req, tmp, &nbd->queue_head, queuelist) { + if (req != xreq) + continue; + list_del_init(&req->queuelist); + spin_unlock(&nbd->queue_lock); + return req; + } + spin_unlock(&nbd->queue_lock); + + return ERR_PTR(-ENOENT); +} + +static inline int sock_recv_bvec(struct nbd_device *nbd, struct bio_vec *bvec) +{ + int result; + void *kaddr = kmap(bvec->bv_page); + result = sock_xmit(nbd, 0, kaddr + bvec->bv_offset, bvec->bv_len, + MSG_WAITALL); + kunmap(bvec->bv_page); + return result; +} + +/* NULL returned = something went wrong, inform userspace */ +static struct request *nbd_read_stat(struct nbd_device *nbd) +{ + int result; + struct nbd_reply reply; + struct request *req; + + reply.magic = 0; + result = sock_xmit(nbd, 0, &reply, sizeof(reply), MSG_WAITALL); + if (result <= 0) { + dev_err(disk_to_dev(nbd->disk), + "Receive control failed (result %d)\n", result); + return ERR_PTR(result); + } + + if (ntohl(reply.magic) != NBD_REPLY_MAGIC) { + dev_err(disk_to_dev(nbd->disk), "Wrong magic (0x%lx)\n", + (unsigned long)ntohl(reply.magic)); + return ERR_PTR(-EPROTO); + } + + req = nbd_find_request(nbd, *(struct request **)reply.handle); + if (IS_ERR(req)) { + result = PTR_ERR(req); + if (result != -ENOENT) + return ERR_PTR(result); + + dev_err(disk_to_dev(nbd->disk), "Unexpected reply (%p)\n", + reply.handle); + return ERR_PTR(-EBADR); + } + + if (ntohl(reply.error)) { + dev_err(disk_to_dev(nbd->disk), "Other side returned error (%d)\n", + ntohl(reply.error)); + req->errors++; + return req; + } + + dev_dbg(nbd_to_dev(nbd), "request %p: got reply\n", req); + if (rq_data_dir(req) != WRITE) { + struct req_iterator iter; + struct bio_vec bvec; + + rq_for_each_segment(bvec, req, iter) { + result = sock_recv_bvec(nbd, &bvec); + if (result <= 0) { + dev_err(disk_to_dev(nbd->disk), "Receive data failed (result %d)\n", + result); + req->errors++; + return req; + } + dev_dbg(nbd_to_dev(nbd), "request %p: got %d bytes data\n", + req, bvec.bv_len); + } + } + return req; +} + +static ssize_t pid_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct gendisk *disk = dev_to_disk(dev); + struct nbd_device *nbd = (struct nbd_device *)disk->private_data; + + return sprintf(buf, "%d\n", task_pid_nr(nbd->task_recv)); +} + +static struct device_attribute pid_attr = { + .attr = { .name = "pid", .mode = S_IRUGO}, + .show = pid_show, +}; + +static int nbd_thread_recv(struct nbd_device *nbd) +{ + struct request *req; + int ret; + unsigned long flags; + + BUG_ON(nbd->magic != NBD_MAGIC); + + sk_set_memalloc(nbd->sock->sk); + + spin_lock_irqsave(&nbd->tasks_lock, flags); + nbd->task_recv = current; + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + ret = device_create_file(disk_to_dev(nbd->disk), &pid_attr); + if (ret) { + dev_err(disk_to_dev(nbd->disk), "device_create_file failed!\n"); + + spin_lock_irqsave(&nbd->tasks_lock, flags); + nbd->task_recv = NULL; + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + return ret; + } + + while (1) { + req = nbd_read_stat(nbd); + if (IS_ERR(req)) { + ret = PTR_ERR(req); + break; + } + + nbd_end_request(nbd, req); + } + + device_remove_file(disk_to_dev(nbd->disk), &pid_attr); + + spin_lock_irqsave(&nbd->tasks_lock, flags); + nbd->task_recv = NULL; + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + if (signal_pending(current)) { + siginfo_t info; + + ret = dequeue_signal_lock(current, ¤t->blocked, &info); + dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", + task_pid_nr(current), current->comm, ret); + mutex_lock(&nbd->tx_lock); + sock_shutdown(nbd); + mutex_unlock(&nbd->tx_lock); + ret = -ETIMEDOUT; + } + + return ret; +} + +static void nbd_clear_que(struct nbd_device *nbd) +{ + struct request *req; + + BUG_ON(nbd->magic != NBD_MAGIC); + + /* + * Because we have set nbd->sock to NULL under the tx_lock, all + * modifications to the list must have completed by now. For + * the same reason, the active_req must be NULL. + * + * As a consequence, we don't need to take the spin lock while + * purging the list here. + */ + BUG_ON(nbd->sock); + BUG_ON(nbd->active_req); + + while (!list_empty(&nbd->queue_head)) { + req = list_entry(nbd->queue_head.next, struct request, + queuelist); + list_del_init(&req->queuelist); + req->errors++; + nbd_end_request(nbd, req); + } + + while (!list_empty(&nbd->waiting_queue)) { + req = list_entry(nbd->waiting_queue.next, struct request, + queuelist); + list_del_init(&req->queuelist); + req->errors++; + nbd_end_request(nbd, req); + } + dev_dbg(disk_to_dev(nbd->disk), "queue cleared\n"); +} + + +static void nbd_handle_req(struct nbd_device *nbd, struct request *req) +{ + if (req->cmd_type != REQ_TYPE_FS) + goto error_out; + + if (rq_data_dir(req) == WRITE && + (nbd->flags & NBD_FLAG_READ_ONLY)) { + dev_err(disk_to_dev(nbd->disk), + "Write on read-only\n"); + goto error_out; + } + + req->errors = 0; + + mutex_lock(&nbd->tx_lock); + if (unlikely(!nbd->sock)) { + mutex_unlock(&nbd->tx_lock); + dev_err(disk_to_dev(nbd->disk), + "Attempted send on closed socket\n"); + goto error_out; + } + + nbd->active_req = req; + + if (nbd->xmit_timeout && list_empty_careful(&nbd->queue_head)) + mod_timer(&nbd->timeout_timer, jiffies + nbd->xmit_timeout); + + if (nbd_send_req(nbd, req) != 0) { + dev_err(disk_to_dev(nbd->disk), "Request send failed\n"); + req->errors++; + nbd_end_request(nbd, req); + } else { + spin_lock(&nbd->queue_lock); + list_add_tail(&req->queuelist, &nbd->queue_head); + spin_unlock(&nbd->queue_lock); + } + + nbd->active_req = NULL; + mutex_unlock(&nbd->tx_lock); + wake_up_all(&nbd->active_wq); + + return; + +error_out: + req->errors++; + nbd_end_request(nbd, req); +} + +static int nbd_thread_send(void *data) +{ + struct nbd_device *nbd = data; + struct request *req; + unsigned long flags; + + spin_lock_irqsave(&nbd->tasks_lock, flags); + nbd->task_send = current; + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + set_user_nice(current, MIN_NICE); + while (!kthread_should_stop() || !list_empty(&nbd->waiting_queue)) { + /* wait for something to do */ + wait_event_interruptible(nbd->waiting_wq, + kthread_should_stop() || + !list_empty(&nbd->waiting_queue)); + + if (signal_pending(current)) { + siginfo_t info; + int ret; + + ret = dequeue_signal_lock(current, ¤t->blocked, + &info); + dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", + task_pid_nr(current), current->comm, ret); + mutex_lock(&nbd->tx_lock); + sock_shutdown(nbd); + mutex_unlock(&nbd->tx_lock); + break; + } + + /* extract request */ + if (list_empty(&nbd->waiting_queue)) + continue; + + spin_lock_irq(&nbd->queue_lock); + req = list_entry(nbd->waiting_queue.next, struct request, + queuelist); + list_del_init(&req->queuelist); + spin_unlock_irq(&nbd->queue_lock); + + /* handle request */ + nbd_handle_req(nbd, req); + } + + spin_lock_irqsave(&nbd->tasks_lock, flags); + nbd->task_send = NULL; + spin_unlock_irqrestore(&nbd->tasks_lock, flags); + + /* Clear maybe pending signals */ + if (signal_pending(current)) { + siginfo_t info; + dequeue_signal_lock(current, ¤t->blocked, &info); + } + + return 0; +} + +/* + * We always wait for result of write, for now. It would be nice to make it optional + * in future + * if ((rq_data_dir(req) == WRITE) && (nbd->flags & NBD_WRITE_NOCHK)) + * { printk( "Warning: Ignoring result!\n"); nbd_end_request( req ); } + */ + +static void nbd_request_handler(struct request_queue *q) + __releases(q->queue_lock) __acquires(q->queue_lock) +{ + struct request *req; + + while ((req = blk_fetch_request(q)) != NULL) { + struct nbd_device *nbd; + + spin_unlock_irq(q->queue_lock); + + nbd = req->rq_disk->private_data; + + BUG_ON(nbd->magic != NBD_MAGIC); + + dev_dbg(nbd_to_dev(nbd), "request %p: dequeued (flags=%x)\n", + req, req->cmd_type); + + if (unlikely(!nbd->sock)) { + dev_err(disk_to_dev(nbd->disk), + "Attempted send on closed socket\n"); + req->errors++; + nbd_end_request(nbd, req); + spin_lock_irq(q->queue_lock); + continue; + } + + spin_lock_irq(&nbd->queue_lock); + list_add_tail(&req->queuelist, &nbd->waiting_queue); + spin_unlock_irq(&nbd->queue_lock); + + wake_up(&nbd->waiting_wq); + + spin_lock_irq(q->queue_lock); + } +} + +static int nbd_dev_dbg_init(struct nbd_device *nbd); +static void nbd_dev_dbg_close(struct nbd_device *nbd); + +/* Must be called with tx_lock held */ + +static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, + unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case NBD_DISCONNECT: { + struct request sreq; + + dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n"); + if (!nbd->sock) + return -EINVAL; + + mutex_unlock(&nbd->tx_lock); + fsync_bdev(bdev); + mutex_lock(&nbd->tx_lock); + blk_rq_init(NULL, &sreq); + sreq.cmd_type = REQ_TYPE_DRV_PRIV; + + /* Check again after getting mutex back. */ + if (!nbd->sock) + return -EINVAL; + + nbd->disconnect = true; + + nbd_send_req(nbd, &sreq); + return 0; + } + + case NBD_CLEAR_SOCK: { + struct socket *sock = nbd->sock; + nbd->sock = NULL; + nbd_clear_que(nbd); + BUG_ON(!list_empty(&nbd->queue_head)); + BUG_ON(!list_empty(&nbd->waiting_queue)); + kill_bdev(bdev); + if (sock) + sockfd_put(sock); + return 0; + } + + case NBD_SET_SOCK: { + struct socket *sock; + int err; + if (nbd->sock) + return -EBUSY; + sock = sockfd_lookup(arg, &err); + if (sock) { + nbd->sock = sock; + if (max_part > 0) + bdev->bd_invalidated = 1; + nbd->disconnect = false; /* we're connected now */ + return 0; + } + return -EINVAL; + } + + case NBD_SET_BLKSIZE: + nbd->blksize = arg; + nbd->bytesize &= ~(nbd->blksize-1); + bdev->bd_inode->i_size = nbd->bytesize; + set_blocksize(bdev, nbd->blksize); + set_capacity(nbd->disk, nbd->bytesize >> 9); + return 0; + + case NBD_SET_SIZE: + nbd->bytesize = arg & ~(nbd->blksize-1); + bdev->bd_inode->i_size = nbd->bytesize; + set_blocksize(bdev, nbd->blksize); + set_capacity(nbd->disk, nbd->bytesize >> 9); + return 0; + + case NBD_SET_TIMEOUT: + nbd->xmit_timeout = arg * HZ; + if (arg) + mod_timer(&nbd->timeout_timer, + jiffies + nbd->xmit_timeout); + else + del_timer_sync(&nbd->timeout_timer); + + return 0; + + case NBD_SET_FLAGS: + nbd->flags = arg; + return 0; + + case NBD_SET_SIZE_BLOCKS: + nbd->bytesize = ((u64) arg) * nbd->blksize; + bdev->bd_inode->i_size = nbd->bytesize; + set_blocksize(bdev, nbd->blksize); + set_capacity(nbd->disk, nbd->bytesize >> 9); + return 0; + + case NBD_DO_IT: { + struct task_struct *thread; + struct socket *sock; + int error; + + if (nbd->task_recv) + return -EBUSY; + if (!nbd->sock) + return -EINVAL; + + mutex_unlock(&nbd->tx_lock); + + if (nbd->flags & NBD_FLAG_READ_ONLY) + set_device_ro(bdev, true); + if (nbd->flags & NBD_FLAG_SEND_TRIM) + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, + nbd->disk->queue); + if (nbd->flags & NBD_FLAG_SEND_FLUSH) + blk_queue_flush(nbd->disk->queue, REQ_FLUSH); + else + blk_queue_flush(nbd->disk->queue, 0); + + thread = kthread_run(nbd_thread_send, nbd, "%s", + nbd_name(nbd)); + if (IS_ERR(thread)) { + mutex_lock(&nbd->tx_lock); + return PTR_ERR(thread); + } + + nbd_dev_dbg_init(nbd); + error = nbd_thread_recv(nbd); + nbd_dev_dbg_close(nbd); + kthread_stop(thread); + + mutex_lock(&nbd->tx_lock); + + sock_shutdown(nbd); + sock = nbd->sock; + nbd->sock = NULL; + nbd_clear_que(nbd); + kill_bdev(bdev); + queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, nbd->disk->queue); + set_device_ro(bdev, false); + if (sock) + sockfd_put(sock); + nbd->flags = 0; + nbd->bytesize = 0; + bdev->bd_inode->i_size = 0; + set_capacity(nbd->disk, 0); + if (max_part > 0) + blkdev_reread_part(bdev); + if (nbd->disconnect) /* user requested, ignore socket errors */ + return 0; + return error; + } + + case NBD_CLEAR_QUE: + /* + * This is for compatibility only. The queue is always cleared + * by NBD_DO_IT or NBD_CLEAR_SOCK. + */ + return 0; + + case NBD_PRINT_DEBUG: + dev_info(disk_to_dev(nbd->disk), + "next = %p, prev = %p, head = %p\n", + nbd->queue_head.next, nbd->queue_head.prev, + &nbd->queue_head); + return 0; + } + return -ENOTTY; +} + +static int nbd_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct nbd_device *nbd = bdev->bd_disk->private_data; + int error; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + BUG_ON(nbd->magic != NBD_MAGIC); + + mutex_lock(&nbd->tx_lock); + error = __nbd_ioctl(bdev, nbd, cmd, arg); + mutex_unlock(&nbd->tx_lock); + + return error; +} + +static const struct block_device_operations nbd_fops = +{ + .owner = THIS_MODULE, + .ioctl = nbd_ioctl, +}; + +#if IS_ENABLED(CONFIG_DEBUG_FS) + +static int nbd_dbg_tasks_show(struct seq_file *s, void *unused) +{ + struct nbd_device *nbd = s->private; + + if (nbd->task_recv) + seq_printf(s, "recv: %d\n", task_pid_nr(nbd->task_recv)); + if (nbd->task_send) + seq_printf(s, "send: %d\n", task_pid_nr(nbd->task_send)); + + return 0; +} + +static int nbd_dbg_tasks_open(struct inode *inode, struct file *file) +{ + return single_open(file, nbd_dbg_tasks_show, inode->i_private); +} + +static const struct file_operations nbd_dbg_tasks_ops = { + .open = nbd_dbg_tasks_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int nbd_dbg_flags_show(struct seq_file *s, void *unused) +{ + struct nbd_device *nbd = s->private; + u32 flags = nbd->flags; + + seq_printf(s, "Hex: 0x%08x\n\n", flags); + + seq_puts(s, "Known flags:\n"); + + if (flags & NBD_FLAG_HAS_FLAGS) + seq_puts(s, "NBD_FLAG_HAS_FLAGS\n"); + if (flags & NBD_FLAG_READ_ONLY) + seq_puts(s, "NBD_FLAG_READ_ONLY\n"); + if (flags & NBD_FLAG_SEND_FLUSH) + seq_puts(s, "NBD_FLAG_SEND_FLUSH\n"); + if (flags & NBD_FLAG_SEND_TRIM) + seq_puts(s, "NBD_FLAG_SEND_TRIM\n"); + + return 0; +} + +static int nbd_dbg_flags_open(struct inode *inode, struct file *file) +{ + return single_open(file, nbd_dbg_flags_show, inode->i_private); +} + +static const struct file_operations nbd_dbg_flags_ops = { + .open = nbd_dbg_flags_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int nbd_dev_dbg_init(struct nbd_device *nbd) +{ + struct dentry *dir; + struct dentry *f; + + dir = debugfs_create_dir(nbd_name(nbd), nbd_dbg_dir); + if (IS_ERR_OR_NULL(dir)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs dir for '%s' (%ld)\n", + nbd_name(nbd), PTR_ERR(dir)); + return PTR_ERR(dir); + } + nbd->dbg_dir = dir; + + f = debugfs_create_file("tasks", 0444, dir, nbd, &nbd_dbg_tasks_ops); + if (IS_ERR_OR_NULL(f)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'tasks', %ld\n", + PTR_ERR(f)); + return PTR_ERR(f); + } + + f = debugfs_create_u64("size_bytes", 0444, dir, &nbd->bytesize); + if (IS_ERR_OR_NULL(f)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'size_bytes', %ld\n", + PTR_ERR(f)); + return PTR_ERR(f); + } + + f = debugfs_create_u32("timeout", 0444, dir, &nbd->xmit_timeout); + if (IS_ERR_OR_NULL(f)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'timeout', %ld\n", + PTR_ERR(f)); + return PTR_ERR(f); + } + + f = debugfs_create_u32("blocksize", 0444, dir, &nbd->blksize); + if (IS_ERR_OR_NULL(f)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'blocksize', %ld\n", + PTR_ERR(f)); + return PTR_ERR(f); + } + + f = debugfs_create_file("flags", 0444, dir, &nbd, &nbd_dbg_flags_ops); + if (IS_ERR_OR_NULL(f)) { + dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'flags', %ld\n", + PTR_ERR(f)); + return PTR_ERR(f); + } + + return 0; +} + +static void nbd_dev_dbg_close(struct nbd_device *nbd) +{ + debugfs_remove_recursive(nbd->dbg_dir); +} + +static int nbd_dbg_init(void) +{ + struct dentry *dbg_dir; + + dbg_dir = debugfs_create_dir("nbd", NULL); + if (IS_ERR(dbg_dir)) + return PTR_ERR(dbg_dir); + + nbd_dbg_dir = dbg_dir; + + return 0; +} + +static void nbd_dbg_close(void) +{ + debugfs_remove_recursive(nbd_dbg_dir); +} + +#else /* IS_ENABLED(CONFIG_DEBUG_FS) */ + +static int nbd_dev_dbg_init(struct nbd_device *nbd) +{ + return 0; +} + +static void nbd_dev_dbg_close(struct nbd_device *nbd) +{ +} + +static int nbd_dbg_init(void) +{ + return 0; +} + +static void nbd_dbg_close(void) +{ +} + +#endif + +/* + * And here should be modules and kernel interface + * (Just smiley confuses emacs :-) + */ + +static int __init nbd_init(void) +{ + int err = -ENOMEM; + int i; + int part_shift; + + BUILD_BUG_ON(sizeof(struct nbd_request) != 28); + + if (max_part < 0) { + printk(KERN_ERR "nbd: max_part must be >= 0\n"); + return -EINVAL; + } + + part_shift = 0; + if (max_part > 0) { + part_shift = fls(max_part); + + /* + * Adjust max_part according to part_shift as it is exported + * to user space so that user can know the max number of + * partition kernel should be able to manage. + * + * Note that -1 is required because partition 0 is reserved + * for the whole disk. + */ + max_part = (1UL << part_shift) - 1; + } + + if ((1UL << part_shift) > DISK_MAX_PARTS) + return -EINVAL; + + if (nbds_max > 1UL << (MINORBITS - part_shift)) + return -EINVAL; + + nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL); + if (!nbd_dev) + return -ENOMEM; + + for (i = 0; i < nbds_max; i++) { + struct gendisk *disk = alloc_disk(1 << part_shift); + if (!disk) + goto out; + nbd_dev[i].disk = disk; + /* + * The new linux 2.5 block layer implementation requires + * every gendisk to have its very own request_queue struct. + * These structs are big so we dynamically allocate them. + */ + disk->queue = blk_init_queue(nbd_request_handler, &nbd_lock); + if (!disk->queue) { + put_disk(disk); + goto out; + } + /* + * Tell the block layer that we are not a rotational device + */ + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue); + queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, disk->queue); + disk->queue->limits.discard_granularity = 512; + blk_queue_max_discard_sectors(disk->queue, UINT_MAX); + disk->queue->limits.discard_zeroes_data = 0; + blk_queue_max_hw_sectors(disk->queue, 65536); + disk->queue->limits.max_sectors = 256; + } + + if (register_blkdev(NBD_MAJOR, "nbd")) { + err = -EIO; + goto out; + } + + printk(KERN_INFO "nbd: registered device at major %d\n", NBD_MAJOR); + + nbd_dbg_init(); + + for (i = 0; i < nbds_max; i++) { + struct gendisk *disk = nbd_dev[i].disk; + nbd_dev[i].magic = NBD_MAGIC; + INIT_LIST_HEAD(&nbd_dev[i].waiting_queue); + spin_lock_init(&nbd_dev[i].queue_lock); + spin_lock_init(&nbd_dev[i].tasks_lock); + INIT_LIST_HEAD(&nbd_dev[i].queue_head); + mutex_init(&nbd_dev[i].tx_lock); + init_timer(&nbd_dev[i].timeout_timer); + nbd_dev[i].timeout_timer.function = nbd_xmit_timeout; + nbd_dev[i].timeout_timer.data = (unsigned long)&nbd_dev[i]; + init_waitqueue_head(&nbd_dev[i].active_wq); + init_waitqueue_head(&nbd_dev[i].waiting_wq); + nbd_dev[i].blksize = 1024; + nbd_dev[i].bytesize = 0; + disk->major = NBD_MAJOR; + disk->first_minor = i << part_shift; + disk->fops = &nbd_fops; + disk->private_data = &nbd_dev[i]; + sprintf(disk->disk_name, "nbd%d", i); + set_capacity(disk, 0); + add_disk(disk); + } + + return 0; +out: + while (i--) { + blk_cleanup_queue(nbd_dev[i].disk->queue); + put_disk(nbd_dev[i].disk); + } + kfree(nbd_dev); + return err; +} + +static void __exit nbd_cleanup(void) +{ + int i; + + nbd_dbg_close(); + + for (i = 0; i < nbds_max; i++) { + struct gendisk *disk = nbd_dev[i].disk; + nbd_dev[i].magic = 0; + if (disk) { + del_gendisk(disk); + blk_cleanup_queue(disk->queue); + put_disk(disk); + } + } + unregister_blkdev(NBD_MAJOR, "nbd"); + kfree(nbd_dev); + printk(KERN_INFO "nbd: unregistered device at major %d\n", NBD_MAJOR); +} + +module_init(nbd_init); +module_exit(nbd_cleanup); + +MODULE_DESCRIPTION("Network Block Device"); +MODULE_LICENSE("GPL"); + +module_param(nbds_max, int, 0444); +MODULE_PARM_DESC(nbds_max, "number of network block devices to initialize (default: 16)"); +module_param(max_part, int, 0444); +MODULE_PARM_DESC(max_part, "number of partitions per device (default: 0)"); diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.ko b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.ko Binary files differnew file mode 100644 index 00000000..4829b5b6 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.ko diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.c b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.c new file mode 100644 index 00000000..8e9bffe6 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.c @@ -0,0 +1,105 @@ +#include <linux/module.h> +#include <linux/vermagic.h> +#include <linux/compiler.h> + +MODULE_INFO(vermagic, VERMAGIC_STRING); + +__visible struct module __this_module +__attribute__((section(".gnu.linkonce.this_module"))) = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +static const struct modversion_info ____versions[] +__used +__attribute__((section("__versions"))) = { + { 0x6455f54, __VMLINUX_SYMBOL_STR(module_layout) }, + { 0x50c7d0f8, __VMLINUX_SYMBOL_STR(single_release) }, + { 0x950ca83f, __VMLINUX_SYMBOL_STR(seq_read) }, + { 0xef9b791f, __VMLINUX_SYMBOL_STR(seq_lseek) }, + { 0x5538af9, __VMLINUX_SYMBOL_STR(param_ops_int) }, + { 0xb5a459dc, __VMLINUX_SYMBOL_STR(unregister_blkdev) }, + { 0x1b9e8318, __VMLINUX_SYMBOL_STR(del_gendisk) }, + { 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) }, + { 0x981936b7, __VMLINUX_SYMBOL_STR(blk_cleanup_queue) }, + { 0x73107d7d, __VMLINUX_SYMBOL_STR(add_disk) }, + { 0x9e88526, __VMLINUX_SYMBOL_STR(__init_waitqueue_head) }, + { 0x9580deb, __VMLINUX_SYMBOL_STR(init_timer_key) }, + { 0x69436492, __VMLINUX_SYMBOL_STR(__mutex_init) }, + { 0x71a50dbc, __VMLINUX_SYMBOL_STR(register_blkdev) }, + { 0x1ecdaab, __VMLINUX_SYMBOL_STR(blk_queue_max_hw_sectors) }, + { 0x1a67801d, __VMLINUX_SYMBOL_STR(blk_queue_max_discard_sectors) }, + { 0x86a65424, __VMLINUX_SYMBOL_STR(put_disk) }, + { 0x89897b2, __VMLINUX_SYMBOL_STR(blk_init_queue) }, + { 0xb1f77288, __VMLINUX_SYMBOL_STR(alloc_disk) }, + { 0xd2b09ce5, __VMLINUX_SYMBOL_STR(__kmalloc) }, + { 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) }, + { 0xc6cbbc89, __VMLINUX_SYMBOL_STR(capable) }, + { 0x98402f5a, __VMLINUX_SYMBOL_STR(blkdev_reread_part) }, + { 0xee59790e, __VMLINUX_SYMBOL_STR(set_device_ro) }, + { 0xae71b343, __VMLINUX_SYMBOL_STR(kthread_stop) }, + { 0xfd67e92, __VMLINUX_SYMBOL_STR(debugfs_remove_recursive) }, + { 0xae5350d, __VMLINUX_SYMBOL_STR(device_remove_file) }, + { 0xb43b11d2, __VMLINUX_SYMBOL_STR(device_create_file) }, + { 0xbe49dab0, __VMLINUX_SYMBOL_STR(sk_set_memalloc) }, + { 0x88c48e5a, __VMLINUX_SYMBOL_STR(debugfs_create_u32) }, + { 0xab6db40b, __VMLINUX_SYMBOL_STR(debugfs_create_u64) }, + { 0x2fff7016, __VMLINUX_SYMBOL_STR(debugfs_create_file) }, + { 0xe09664fa, __VMLINUX_SYMBOL_STR(debugfs_create_dir) }, + { 0x6c4cedbe, __VMLINUX_SYMBOL_STR(wake_up_process) }, + { 0x98f4d672, __VMLINUX_SYMBOL_STR(kthread_create_on_node) }, + { 0x2141fd89, __VMLINUX_SYMBOL_STR(blk_queue_flush) }, + { 0x2f43d7d4, __VMLINUX_SYMBOL_STR(blk_rq_init) }, + { 0xdcd71098, __VMLINUX_SYMBOL_STR(fsync_bdev) }, + { 0x3ab93be1, __VMLINUX_SYMBOL_STR(set_blocksize) }, + { 0xd52ba2c0, __VMLINUX_SYMBOL_STR(_dev_info) }, + { 0x58744728, __VMLINUX_SYMBOL_STR(fput) }, + { 0x94cc0370, __VMLINUX_SYMBOL_STR(kill_bdev) }, + { 0x4ee1e3f, __VMLINUX_SYMBOL_STR(sockfd_lookup) }, + { 0xc6a83d75, __VMLINUX_SYMBOL_STR(blk_fetch_request) }, + { 0xc58a93cf, __VMLINUX_SYMBOL_STR(dequeue_signal) }, + { 0xa6bbd805, __VMLINUX_SYMBOL_STR(__wake_up) }, + { 0xb4f0243e, __VMLINUX_SYMBOL_STR(mutex_unlock) }, + { 0xc23bebb2, __VMLINUX_SYMBOL_STR(mutex_lock) }, + { 0xbfe6f427, __VMLINUX_SYMBOL_STR(_raw_spin_unlock_irq) }, + { 0xe5815f8a, __VMLINUX_SYMBOL_STR(_raw_spin_lock_irq) }, + { 0xb3f7646e, __VMLINUX_SYMBOL_STR(kthread_should_stop) }, + { 0xb2fd3ea5, __VMLINUX_SYMBOL_STR(set_user_nice) }, + { 0xef370d73, __VMLINUX_SYMBOL_STR(__blk_end_request_all) }, + { 0x1916e38c, __VMLINUX_SYMBOL_STR(_raw_spin_unlock_irqrestore) }, + { 0x4aafc56b, __VMLINUX_SYMBOL_STR(force_sig) }, + { 0x680ec266, __VMLINUX_SYMBOL_STR(_raw_spin_lock_irqsave) }, + { 0x706d051c, __VMLINUX_SYMBOL_STR(del_timer_sync) }, + { 0xa9064ecb, __VMLINUX_SYMBOL_STR(kernel_sock_shutdown) }, + { 0xe3fbaa2e, __VMLINUX_SYMBOL_STR(dev_warn) }, + { 0x2f7f274e, __VMLINUX_SYMBOL_STR(seq_puts) }, + { 0xd1f58462, __VMLINUX_SYMBOL_STR(seq_printf) }, + { 0xe1e12065, __VMLINUX_SYMBOL_STR(single_open) }, + { 0x1e047854, __VMLINUX_SYMBOL_STR(warn_slowpath_fmt) }, + { 0x2ea92197, __VMLINUX_SYMBOL_STR(__dynamic_dev_dbg) }, + { 0x30ff9767, __VMLINUX_SYMBOL_STR(dev_err) }, + { 0x16e5c2a, __VMLINUX_SYMBOL_STR(mod_timer) }, + { 0x7d11c268, __VMLINUX_SYMBOL_STR(jiffies) }, + { 0x722e2a29, __VMLINUX_SYMBOL_STR(kernel_recvmsg) }, + { 0x551b9a0e, __VMLINUX_SYMBOL_STR(kernel_sendmsg) }, + { 0x6a5fa363, __VMLINUX_SYMBOL_STR(sigprocmask) }, + { 0x97bb6e16, __VMLINUX_SYMBOL_STR(current_task) }, + { 0xdb7305a1, __VMLINUX_SYMBOL_STR(__stack_chk_fail) }, + { 0xf08242c2, __VMLINUX_SYMBOL_STR(finish_wait) }, + { 0x2207a57f, __VMLINUX_SYMBOL_STR(prepare_to_wait_event) }, + { 0x1000e51, __VMLINUX_SYMBOL_STR(schedule) }, + { 0xdae80100, __VMLINUX_SYMBOL_STR(_raw_spin_unlock) }, + { 0xe259ae9e, __VMLINUX_SYMBOL_STR(_raw_spin_lock) }, + { 0x91715312, __VMLINUX_SYMBOL_STR(sprintf) }, + { 0xbdfb6dbb, __VMLINUX_SYMBOL_STR(__fentry__) }, +}; + +static const char __module_depends[] +__used +__attribute__((section(".modinfo"))) = +"depends="; + diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.o b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.o Binary files differnew file mode 100644 index 00000000..988957a2 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.mod.o diff --git a/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.o b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.o Binary files differnew file mode 100644 index 00000000..9da8e4d6 --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/binaries/nbd/nbd.o diff --git a/builder/dnbd3-qcow2-rootfs/binaries/systemd-preserve-process-marker b/builder/dnbd3-qcow2-rootfs/binaries/systemd-preserve-process-marker Binary files differdeleted file mode 100755 index 45beb51d..00000000 --- a/builder/dnbd3-qcow2-rootfs/binaries/systemd-preserve-process-marker +++ /dev/null diff --git a/builder/dnbd3-qcow2-rootfs/systemd-preserve-process-marker.c b/builder/dnbd3-qcow2-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c index 8f0fc108..8f0fc108 100644 --- a/builder/dnbd3-qcow2-rootfs/systemd-preserve-process-marker.c +++ b/builder/dnbd3-qcow2-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c diff --git a/builder/dnbd3-qcow2-rootfs/hooks/cmdline/mark-root-device.sh b/builder/dnbd3-qcow2-rootfs/hooks/cmdline/mark-root-device.sh deleted file mode 100755 index b7282521..00000000 --- a/builder/dnbd3-qcow2-rootfs/hooks/cmdline/mark-root-device.sh +++ /dev/null @@ -1,9 +0,0 @@ -# set rootok and root as dracut expects them to be set by -# the module preparing the root filesystem. -# -# Once the root filesystem is mounted per dnbd3 and -# exported as qcow2 per nbd, /dev/root will be a symlink -# to /dev/nbd0 as this is then our rootfs-device -rootok=1 -root=block:/dev/root - diff --git a/builder/dnbd3-qcow2-rootfs/hooks/cmdline/expand-kcl-ip.sh b/builder/dnbd3-qcow2-rootfs/hooks/cmdline/prepare-network-kcl-parameter.sh index 9f617b09..9f617b09 100755 --- a/builder/dnbd3-qcow2-rootfs/hooks/cmdline/expand-kcl-ip.sh +++ b/builder/dnbd3-qcow2-rootfs/hooks/cmdline/prepare-network-kcl-parameter.sh diff --git a/builder/dnbd3-qcow2-rootfs/hooks/cmdline/set-dracut-environment-variables.sh b/builder/dnbd3-qcow2-rootfs/hooks/cmdline/set-dracut-environment-variables.sh new file mode 100755 index 00000000..6deeb78f --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/hooks/cmdline/set-dracut-environment-variables.sh @@ -0,0 +1,5 @@ +# set rootok and root as dracut expects them to be set by +# the module preparing the root filesystem. + +rootok=1 +root=block:/dev/devicemapper/root diff --git a/builder/dnbd3-qcow2-rootfs/hooks/mount/mount-root-device.sh b/builder/dnbd3-qcow2-rootfs/hooks/mount/mount-root-device.sh index d02f9002..f0d48174 100755 --- a/builder/dnbd3-qcow2-rootfs/hooks/mount/mount-root-device.sh +++ b/builder/dnbd3-qcow2-rootfs/hooks/mount/mount-root-device.sh @@ -1,4 +1 @@ -# this rudimentary script just mounts the rootfs device that was symlinked to -# /dev/root to dracut's $NEWROOT (usually /sysroot). - -mount /dev/root $NEWROOT +mount /dev/mapper/root "$NEWROOT" diff --git a/builder/dnbd3-qcow2-rootfs/hooks/pre-mount/prepare-root-partition.sh b/builder/dnbd3-qcow2-rootfs/hooks/pre-mount/prepare-root-partition.sh new file mode 100755 index 00000000..8b5ea48e --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/hooks/pre-mount/prepare-root-partition.sh @@ -0,0 +1,42 @@ +function create_partition_via_offset() { + local device="$1" + local nameOrUUID="$2" + local loopDevice=$(losetup -f) + + local sectorSize=$(blockdev --getbsz $device) + local partitionInfo=$(partx --raw --noheadings --output START,NAME,UUID /dev/nbd0 2>/dev/null| grep $nameOrUUID) + local offsetSectors=$(echo $partitionInfo | cut -d' ' -f1) + if [ -z "$offsetSectors" ]; then + warn "could not find partition with label/uuid '$nameOrUUID' on device $device" + return 1 + fi + #warn $(($offsetSectors*512)) # could overflow on 32bit systems + local offsetBytes=$(echo $| awk -v x=$offsetSectors -v y=$sectorSize '{print x * y}') + + # test if mount works directly (problem with btrfs device id) + #mount -v -o loop,offset=$offsetBytes $device $mountPoint + losetup -v -o $offsetBytes $loopDevice $device + echo $loopDevice +} + +# Close previous connections to be able to run this script many times. +dnbd3-client --device /dev/dnbd0 --close && \ +dnbd3-client --host gateway --image archLinux.qcow2 --device /dev/dnbd0 && \ +qemu-nbd --connect=/dev/nbd0 /dev/dnbd0 --read-only && \ +local read_only_partition="$(create_partition_via_offset /dev/nbd0 system)" && \ +# Make read-only partition writable. +# TODO implement persistent available indicator. +if true; then + local writable_device="/dev/ram0" && \ + mknod --mode 660 "$writable_device" b 1 1 && \ + chown root.disk "$writable_device" +else + # Use next free loop device. + local writable_device="$(losetup -f)" && \ + dd if=/dev/zero of=persistent_storage.img bs=1k count=1000 && \ + losetup "$writable_device" persistent_storage.img +fi +local size="$(blockdev --getsz "$read_only_partition")" && \ +local writable_partition_name="root" && \ +dmsetup create "$writable_partition_name" --table \ + "0 $partion_size snapshot $read_only_partition $writable_device N 1" diff --git a/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/load-dnbd3-nbd-modules.sh b/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/load-custom-kernel-modules.sh index 29f9f210..29f9f210 100755 --- a/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/load-dnbd3-nbd-modules.sh +++ b/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/load-custom-kernel-modules.sh diff --git a/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/lo-setup.sh b/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/setup-loopback-device.sh index 9103afd9..9103afd9 100755 --- a/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/lo-setup.sh +++ b/builder/dnbd3-qcow2-rootfs/hooks/pre-udev/setup-loopback-device.sh diff --git a/builder/dnbd3-qcow2-rootfs/module-setup.sh b/builder/dnbd3-qcow2-rootfs/module-setup.sh index 4d8418b3..eb81f347 100755 --- a/builder/dnbd3-qcow2-rootfs/module-setup.sh +++ b/builder/dnbd3-qcow2-rootfs/module-setup.sh @@ -1,114 +1,72 @@ #!/bin/bash +source "$moddir/scripts/utils.sh" + check() { - if ! type -f qemu-nbd >/dev/null; then - echo "'qemu-nbd' not found on this system, install it to use this module." - return 1 - fi - if ! type -f qemu-img >/dev/null; then - echo "'qemu-img' not found on this system, install it to use this module." - return 1 - fi - if ! type -f nbd-client >/dev/null; then - echo "'nbd-client' not found on this system, install it to use this module." - return 1 - else - # check version - local nbd_client_version="$(nbd-client --help 2>&1 | grep -oE '3\.[0-9]+')" - local nbd_client_version_major="${nbd_client_version%.*}" - local nbd_client_version_minor="${nbd_client_version#*.}" - if [ "${nbd_client_version_major}" -ne 3 ]; then - # nbd-client probably too old - echo "The nbd-client major version is not 3, meaning its probably too old." - return 1 - fi - if [ "${nbd_client_version_minor}" -gt 11 ]; then - # TODO check if ver = 3.9 has the same new syntax... - echo "The nbd-client minor version is greater than 8. A new syntax has been - introduced starting with 3.10 which we do not support." - return 1 - fi - return 0 - fi + compile_nbd && \ + compile_dnbd3 && \ + compile_systemd_preserve_process_marker && } depends() { echo base network bash kernel-modules - return 0 } installkernel() { - instmods ext4 + inst "$moddir/binaries/dnbd3/build/dnbd3.ko" \ + /usr/lib/modules/current/extra/dnbd3.ko + inst "$moddir/binaries/nbd/nbd.ko" \ + /usr/lib/modules/current/extra/nbd.ko + + instmods ext4 btrfs } install() { - ### BINARIES - # - # busybox: cause we want lightweight tools - inst "$moddir/binaries/busybox" /usr/bin/busybox - # dnbd3-client: needed to mount remote dnbd3 filesystem. - inst "$moddir/binaries/dnbd3-client" /usr/bin/dnbd3-client - # A generic wrapper program to prepend a "@" to each process - # spawned by given nested programs. - inst "$moddir/binaries/systemd-preserve-process-marker" \ - /usr/bin/systemd-preserve-process-marker - # NOTE: These modules are build again Kernel: 3.10.0-229.1.2.el7.x86_64 - # TODO: build these in check() ! - inst "$moddir/kernel_modules/dnbd3/build/dnbd3.ko" \ - /usr/lib/modules/current/extra/dnbd3.ko - inst "$moddir/kernel_modules/nbd/nbd.ko" \ - /usr/lib/modules/current/extra/nbd.ko + # region binaries - ### HOOKS - ## HOOK cmdline - # enables sysrq-shortcuts - inst_hook cmdline 00 "$moddir/hooks/cmdline/enable-sysrq.sh" + inst "$moddir/binaries/dnbd3/build/dnbd3-client" /usr/bin/dnbd3-client + inst "$moddir/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker" \ + /usr/bin/systemd-preserve-process-marker - # expands the ip parameter in the kernel command line to - # make it dracut-compatible - # TODO: dracut still parses this incorrectly... - inst_hook cmdline 10 "$moddir/hooks/cmdline/expand-kcl-ip.sh" + # endregion - # sets environment variables to tell dracut which device - # holds the future root filesystem - inst_hook cmdline 90 "$moddir/hooks/cmdline/mark-root-device.sh" + # region hooks - ## HOOK pre-udev - # loads the dnbd3/nbd kernel modules - inst_hook pre-udev 00 "$moddir/hooks/pre-udev/load-dnbd3-nbd-modules.sh" + inst_hook cmdline 00 "$moddir/hooks/cmdline/enable-sysrq.sh" + inst_hook cmdline 10 "$moddir/hooks/cmdline/prepare-network-kcl-parameter.sh" + inst_hook cmdline 90 "$moddir/hooks/cmdline/set-dracut-environment-variables.sh" - # setup loopback device - inst_hook pre-udev 00 "$moddir/hooks/pre-udev/lo-setup.sh" + inst_hook pre-udev 00 "$moddir/hooks/pre-udev/load-custom-kernel-modules.sh" + inst_hook pre-udev 00 "$moddir/hooks/pre-udev/setup-loopback-device.sh" - ## HOOK pre-mount # this is the configuration hook where the config stuff is wget'ed - inst_hook pre-mount 00 "$moddir/hooks/pre-mount/fetch-config.sh" - + # TODO + #inst_hook pre-mount 00 "$moddir/hooks/pre-mount/fetch-config.sh" # this is the main hook where all the magic is triggered - inst_hook pre-mount 10 "$moddir/hooks/pre-mount/mount-qcow.sh" + #inst_hook pre-mount 10 "$moddir/hooks/pre-mount/mount-qcow.sh" + + inst_hook pre-mount 10 "$moddir/hooks/pre-mount/prepare-root-partition.sh" - ## HOOK mount - # this simply mounts the prepared /dev/root to $NEWROOT - # aka "the dracut way" inst_hook mount 10 "$moddir/hooks/mount/mount-root-device.sh" - ## HOOK pre-pivot - # this checks whether we found a partition suitable for - # the future /tmp and if so, mounts it inst_hook pre-pivot 00 "$moddir/hooks/pre-pivot/mount-tmp.sh" + # endregion + + ## TODO deprecated ### SCRIPTS # the main magic script containing all the functions needed # to prepare the qcow2-based root filesystem - inst "$moddir/scripts/setup-qcow2" /sbin/setup-qcow2 - + #inst "$moddir/scripts/setup-qcow2" /sbin/setup-qcow2 + # # the script triggered by udev upon finding the right partitions - inst "$moddir/scripts/prepare-disks" /sbin/prepare-disks - + #inst "$moddir/scripts/prepare-disks" /sbin/prepare-disks + ## # udev rules detecting 44, 45, 46 partitions and running # 'prepare-disks' to do then format/mount/use them - inst "$moddir/udev/70-openslx-disk.rules" /etc/udev/rules.d/70-openslx-disk.rules + #inst "$moddir/udev/70-openslx-disk.rules" /etc/udev/rules.d/70-openslx-disk.rules + ## # Debugging Uncomment this version if you need some useful debugging tools # in your iniramfs. @@ -117,5 +75,4 @@ install() { chroot switch_root pivot_root qemu-nbd mount nbd-client fdisk mkfs.xfs # Production: # inst_multiple insmod qemu-img qemu-nbd - return 0 } diff --git a/builder/dnbd3-qcow2-rootfs/scripts/utils.sh b/builder/dnbd3-qcow2-rootfs/scripts/utils.sh new file mode 100644 index 00000000..62f6509f --- /dev/null +++ b/builder/dnbd3-qcow2-rootfs/scripts/utils.sh @@ -0,0 +1,38 @@ +function build_initramfs_compile_nbd() { + # Downloads and compiles nbd. + # + # Examples: + # + # >>> build_initramfs_compile_nbd + # ... + # Provides the following file: + # ${_KERNEL_MODULE_DIRECTORY}/nbd/nbd.ko + pushd "${_KERNEL_MODULE_DIRECTORY}/nbd" \ + 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + build_initramfs_log 'Compile the nbd kernel module.' && \ + make 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + popd 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" + return $? + # TODO make clean +} +function build_initramfs_compile_dnbd3() { + # Downloads and compiles dnbd3. + # + # Examples: + # + # >>> build_initramfs_compile_dnbd3 + # ... + # Provides the following file: + # ${_KERNEL_MODULE_DIRECTORY}/dnbd3/build/dnbd3.ko + rm --recursive --force ${_KERNEL_MODULE_DIRECTORY}/dnbd3 \ + 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + pushd $_KERNEL_MODULE_DIRECTORY \ + 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + git clone git://git.openslx.org/dnbd3.git \ + 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + cd dnbd3 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + ./build.sh 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" && \ + popd 1>"$_STANDARD_OUTPUT" 2>"$_ERROR_OUTPUT" + return $? + # TODO rm -rf build +} diff --git a/dev_tools/snippets.sh b/dev_tools/snippets.sh index 36fc447d..6f4f21cc 100644 --- a/dev_tools/snippets.sh +++ b/dev_tools/snippets.sh @@ -55,8 +55,6 @@ fdisk -lu losetup -o $((1050624*512)) /dev/loop0 /dev/nbd0 -v mount /dev/loop0 /mnt/ - - function create_partition_via_offset() { local device="$1" local nameOrUUID="$2" |
