linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Manuel Bentele <development@manuel-bentele.de>
To: linux-block@vger.kernel.org
Cc: development@manuel-bentele.de
Subject: Re: [PATCH 0/5] block: loop: add file format subsystem and QCOW2 file format driver
Date: Sat, 24 Aug 2019 13:10:38 +0200	[thread overview]
Message-ID: <86279379-32ac-15e9-2f91-68ce9c94cfbf@manuel-bentele.de> (raw)
In-Reply-To: <20190823225619.15530-1-development@manuel-bentele.de>

Hi

I realized that the first patch of my patch series is missing, although 
I successfully send them to the block mailing list. In addition to that, 
I checked my mail server's log and I personally received a copy of my 
patches. Also, I have not received any undelivered mail message from the 
mailing list sever. So everything seems fine.

In preparation for submitting the patch series, I checked the size of 
each patch. I can confirm that all patches are smaller than the 300kB 
size limit stated in the documentation [1]. Did I do something wrong?

Regards,
Manuel

[1] 
https://www.kernel.org/doc/html/v5.3-rc5/process/submitting-patches.html#e-mail-size

On 8/24/19 12:56 AM, development@manuel-bentele.de wrote:
> From: Manuel Bentele <development@manuel-bentele.de>
>
> Hi
>
> Regarding to the following discussion [1] on the mailing list I show you
> the result of my work as announced at the end of the discussion [2].
>
> The discussion was about the project topic of how to implement the
> reading/writing of QCOW2 in the kernel. The project focuses on an read-only
> in-kernel QCOW2 implementation to increase the read/write performance
> and tries to avoid nbd. Furthermore, the project is part of a project
> series to develop a in-kernel network boot infrastructure that has no need
> for any user space interaction (e.g. nbd) anymore.
>
> During the discussion, it turned out that the implementation as device
> mapper target is not applicable. The device mapper stacks different
> functionality such as compression or encryption on multiple block device
> layers whereas an implementation for the QCOW2 container format provides
> these functionalities on one block device layer. Using FUSE is also not
> possible due to performance reasons and user space interaction.
>
> Therefore, I propose the extension of the loop device module. I created a
> new file format subsystem which is part of the loop device module. The file
> format subsystem abstracts the direct file access and provides an driver
> API to implement various disk file formats such as QCOW2, VDI and VMDK.
> File format drivers are implemented as kernel modules and can be registered
> by the file format subsystem.
>
> The patch series contains documentation for the file format subsystem and
> the loop device module, too. Also, it provides a default RAW file format
> driver and a read-only QCOW2 driver. The RAW file format driver is based on
> the file specific parts of the existing loop device implementation and
> preserves the default behaviour of a loop device. More specific information
> can be found in the commit logs of the following patches.
>
> Regards,
> Manuel
>
> [1] https://www.spinics.net/lists/linux-block/msg39538.html
> [2] https://www.spinics.net/lists/linux-block/msg40479.html
>
> Manuel Bentele (5):
>    block: loop: add file format subsystem for loop devices
>    doc: admin-guide: add loop block device documentation
>    doc: driver-api: add loop file format subsystem API documentation
>    block: loop: add QCOW2 loop file format driver (read-only)
>    doc: admin-guide: add QCOW2 file format to loop device documentation
>
>   Documentation/admin-guide/blockdev/index.rst  |   1 +
>   Documentation/admin-guide/blockdev/loop.rst   |  85 ++
>   Documentation/driver-api/index.rst            |   1 +
>   Documentation/driver-api/loop-file-fmt.rst    | 137 +++
>   arch/alpha/configs/defconfig                  |   1 +
>   arch/arc/configs/axs103_defconfig             |   1 +
>   arch/arc/configs/axs103_smp_defconfig         |   1 +
>   arch/arm/configs/am200epdkit_defconfig        |   1 +
>   arch/arm/configs/aspeed_g4_defconfig          |   1 +
>   arch/arm/configs/aspeed_g5_defconfig          |   1 +
>   arch/arm/configs/assabet_defconfig            |   1 +
>   arch/arm/configs/at91_dt_defconfig            |   1 +
>   arch/arm/configs/axm55xx_defconfig            |   1 +
>   arch/arm/configs/badge4_defconfig             |   1 +
>   arch/arm/configs/cerfcube_defconfig           |   1 +
>   arch/arm/configs/cm_x2xx_defconfig            |   1 +
>   arch/arm/configs/cm_x300_defconfig            |   1 +
>   arch/arm/configs/cns3420vb_defconfig          |   1 +
>   arch/arm/configs/colibri_pxa270_defconfig     |   1 +
>   arch/arm/configs/collie_defconfig             |   1 +
>   arch/arm/configs/corgi_defconfig              |   1 +
>   arch/arm/configs/davinci_all_defconfig        |   1 +
>   arch/arm/configs/dove_defconfig               |   1 +
>   arch/arm/configs/em_x270_defconfig            |   1 +
>   arch/arm/configs/eseries_pxa_defconfig        |   1 +
>   arch/arm/configs/exynos_defconfig             |   1 +
>   arch/arm/configs/ezx_defconfig                |   1 +
>   arch/arm/configs/footbridge_defconfig         |   1 +
>   arch/arm/configs/h3600_defconfig              |   1 +
>   arch/arm/configs/imote2_defconfig             |   1 +
>   arch/arm/configs/imx_v6_v7_defconfig          |   1 +
>   arch/arm/configs/integrator_defconfig         |   1 +
>   arch/arm/configs/iop32x_defconfig             |   1 +
>   arch/arm/configs/ixp4xx_defconfig             |   1 +
>   arch/arm/configs/jornada720_defconfig         |   1 +
>   arch/arm/configs/keystone_defconfig           |   1 +
>   arch/arm/configs/lpc32xx_defconfig            |   1 +
>   arch/arm/configs/milbeaut_m10v_defconfig      |   1 +
>   arch/arm/configs/mini2440_defconfig           |   1 +
>   arch/arm/configs/multi_v5_defconfig           |   1 +
>   arch/arm/configs/multi_v7_defconfig           |   1 +
>   arch/arm/configs/mv78xx0_defconfig            |   1 +
>   arch/arm/configs/mvebu_v5_defconfig           |   1 +
>   arch/arm/configs/netwinder_defconfig          |   1 +
>   arch/arm/configs/nhk8815_defconfig            |   1 +
>   arch/arm/configs/omap1_defconfig              |   1 +
>   arch/arm/configs/omap2plus_defconfig          |   1 +
>   arch/arm/configs/orion5x_defconfig            |   1 +
>   arch/arm/configs/oxnas_v6_defconfig           |   1 +
>   arch/arm/configs/palmz72_defconfig            |   1 +
>   arch/arm/configs/pleb_defconfig               |   1 +
>   arch/arm/configs/prima2_defconfig             |   1 +
>   arch/arm/configs/pxa3xx_defconfig             |   1 +
>   arch/arm/configs/pxa_defconfig                |   1 +
>   arch/arm/configs/qcom_defconfig               |   1 +
>   arch/arm/configs/rpc_defconfig                |   1 +
>   arch/arm/configs/s3c2410_defconfig            |   1 +
>   arch/arm/configs/s3c6400_defconfig            |   1 +
>   arch/arm/configs/s5pv210_defconfig            |   1 +
>   arch/arm/configs/sama5_defconfig              |   1 +
>   arch/arm/configs/simpad_defconfig             |   1 +
>   arch/arm/configs/socfpga_defconfig            |   1 +
>   arch/arm/configs/spitz_defconfig              |   1 +
>   arch/arm/configs/tango4_defconfig             |   1 +
>   arch/arm/configs/tegra_defconfig              |   1 +
>   arch/arm/configs/trizeps4_defconfig           |   1 +
>   arch/arm/configs/viper_defconfig              |   1 +
>   arch/arm/configs/zeus_defconfig               |   1 +
>   arch/arm/configs/zx_defconfig                 |   1 +
>   arch/arm64/configs/defconfig                  |   1 +
>   arch/c6x/configs/dsk6455_defconfig            |   1 +
>   arch/c6x/configs/evmc6457_defconfig           |   1 +
>   arch/c6x/configs/evmc6472_defconfig           |   1 +
>   arch/c6x/configs/evmc6474_defconfig           |   1 +
>   arch/c6x/configs/evmc6678_defconfig           |   1 +
>   arch/csky/configs/defconfig                   |   1 +
>   arch/hexagon/configs/comet_defconfig          |   1 +
>   arch/ia64/configs/bigsur_defconfig            |   1 +
>   arch/ia64/configs/generic_defconfig           |   1 +
>   arch/ia64/configs/gensparse_defconfig         |   1 +
>   arch/ia64/configs/tiger_defconfig             |   1 +
>   arch/ia64/configs/zx1_defconfig               |   1 +
>   arch/m68k/configs/amiga_defconfig             |   1 +
>   arch/m68k/configs/apollo_defconfig            |   1 +
>   arch/m68k/configs/atari_defconfig             |   1 +
>   arch/m68k/configs/bvme6000_defconfig          |   1 +
>   arch/m68k/configs/hp300_defconfig             |   1 +
>   arch/m68k/configs/mac_defconfig               |   1 +
>   arch/m68k/configs/multi_defconfig             |   1 +
>   arch/m68k/configs/mvme147_defconfig           |   1 +
>   arch/m68k/configs/mvme16x_defconfig           |   1 +
>   arch/m68k/configs/q40_defconfig               |   1 +
>   arch/m68k/configs/sun3_defconfig              |   1 +
>   arch/m68k/configs/sun3x_defconfig             |   1 +
>   arch/mips/configs/bigsur_defconfig            |   1 +
>   arch/mips/configs/cavium_octeon_defconfig     |   1 +
>   arch/mips/configs/cobalt_defconfig            |   1 +
>   arch/mips/configs/decstation_64_defconfig     |   1 +
>   arch/mips/configs/decstation_defconfig        |   1 +
>   arch/mips/configs/decstation_r4k_defconfig    |   1 +
>   arch/mips/configs/fuloong2e_defconfig         |   1 +
>   arch/mips/configs/generic/board-ocelot.config |   1 +
>   arch/mips/configs/gpr_defconfig               |   1 +
>   arch/mips/configs/ip27_defconfig              |   1 +
>   arch/mips/configs/ip32_defconfig              |   1 +
>   arch/mips/configs/jazz_defconfig              |   1 +
>   arch/mips/configs/lemote2f_defconfig          |   1 +
>   arch/mips/configs/loongson1b_defconfig        |   1 +
>   arch/mips/configs/loongson1c_defconfig        |   1 +
>   arch/mips/configs/loongson3_defconfig         |   1 +
>   arch/mips/configs/malta_defconfig             |   1 +
>   arch/mips/configs/malta_kvm_defconfig         |   1 +
>   arch/mips/configs/malta_kvm_guest_defconfig   |   1 +
>   arch/mips/configs/malta_qemu_32r6_defconfig   |   1 +
>   arch/mips/configs/maltaaprp_defconfig         |   1 +
>   arch/mips/configs/maltasmvp_defconfig         |   1 +
>   arch/mips/configs/maltasmvp_eva_defconfig     |   1 +
>   arch/mips/configs/maltaup_defconfig           |   1 +
>   arch/mips/configs/maltaup_xpa_defconfig       |   1 +
>   arch/mips/configs/markeins_defconfig          |   1 +
>   arch/mips/configs/mips_paravirt_defconfig     |   1 +
>   arch/mips/configs/nlm_xlp_defconfig           |   1 +
>   arch/mips/configs/nlm_xlr_defconfig           |   1 +
>   arch/mips/configs/pic32mzda_defconfig         |   1 +
>   arch/mips/configs/pistachio_defconfig         |   1 +
>   arch/mips/configs/pnx8335_stb225_defconfig    |   1 +
>   arch/mips/configs/rbtx49xx_defconfig          |   1 +
>   arch/mips/configs/rm200_defconfig             |   1 +
>   arch/mips/configs/tb0219_defconfig            |   1 +
>   arch/mips/configs/tb0226_defconfig            |   1 +
>   arch/mips/configs/tb0287_defconfig            |   1 +
>   arch/nios2/configs/10m50_defconfig            |   1 +
>   arch/nios2/configs/3c120_defconfig            |   1 +
>   arch/parisc/configs/712_defconfig             |   1 +
>   arch/parisc/configs/a500_defconfig            |   1 +
>   arch/parisc/configs/b180_defconfig            |   1 +
>   arch/parisc/configs/c3000_defconfig           |   1 +
>   arch/parisc/configs/c8000_defconfig           |   1 +
>   arch/parisc/configs/defconfig                 |   1 +
>   arch/parisc/configs/generic-32bit_defconfig   |   1 +
>   arch/parisc/configs/generic-64bit_defconfig   |   1 +
>   arch/powerpc/configs/40x/virtex_defconfig     |   1 +
>   arch/powerpc/configs/44x/sam440ep_defconfig   |   1 +
>   arch/powerpc/configs/44x/virtex5_defconfig    |   1 +
>   arch/powerpc/configs/52xx/cm5200_defconfig    |   1 +
>   arch/powerpc/configs/52xx/lite5200b_defconfig |   1 +
>   arch/powerpc/configs/52xx/motionpro_defconfig |   1 +
>   arch/powerpc/configs/52xx/tqm5200_defconfig   |   1 +
>   arch/powerpc/configs/83xx/asp8347_defconfig   |   1 +
>   .../configs/83xx/mpc8313_rdb_defconfig        |   1 +
>   .../configs/83xx/mpc8315_rdb_defconfig        |   1 +
>   .../configs/83xx/mpc832x_mds_defconfig        |   1 +
>   .../configs/83xx/mpc832x_rdb_defconfig        |   1 +
>   .../configs/83xx/mpc834x_itx_defconfig        |   1 +
>   .../configs/83xx/mpc834x_itxgp_defconfig      |   1 +
>   .../configs/83xx/mpc834x_mds_defconfig        |   1 +
>   .../configs/83xx/mpc836x_mds_defconfig        |   1 +
>   .../configs/83xx/mpc836x_rdk_defconfig        |   1 +
>   .../configs/83xx/mpc837x_mds_defconfig        |   1 +
>   .../configs/83xx/mpc837x_rdb_defconfig        |   1 +
>   arch/powerpc/configs/85xx/ge_imp3a_defconfig  |   1 +
>   arch/powerpc/configs/85xx/ksi8560_defconfig   |   1 +
>   .../configs/85xx/mpc8540_ads_defconfig        |   1 +
>   .../configs/85xx/mpc8560_ads_defconfig        |   1 +
>   .../configs/85xx/mpc85xx_cds_defconfig        |   1 +
>   arch/powerpc/configs/85xx/sbc8548_defconfig   |   1 +
>   arch/powerpc/configs/85xx/socrates_defconfig  |   1 +
>   arch/powerpc/configs/85xx/stx_gp3_defconfig   |   1 +
>   arch/powerpc/configs/85xx/tqm8540_defconfig   |   1 +
>   arch/powerpc/configs/85xx/tqm8541_defconfig   |   1 +
>   arch/powerpc/configs/85xx/tqm8548_defconfig   |   1 +
>   arch/powerpc/configs/85xx/tqm8555_defconfig   |   1 +
>   arch/powerpc/configs/85xx/tqm8560_defconfig   |   1 +
>   .../configs/85xx/xes_mpc85xx_defconfig        |   1 +
>   arch/powerpc/configs/amigaone_defconfig       |   1 +
>   arch/powerpc/configs/cell_defconfig           |   1 +
>   arch/powerpc/configs/chrp32_defconfig         |   1 +
>   arch/powerpc/configs/ep8248e_defconfig        |   1 +
>   arch/powerpc/configs/fsl-emb-nonhw.config     |   1 +
>   arch/powerpc/configs/g5_defconfig             |   1 +
>   arch/powerpc/configs/gamecube_defconfig       |   1 +
>   arch/powerpc/configs/holly_defconfig          |   1 +
>   arch/powerpc/configs/linkstation_defconfig    |   1 +
>   arch/powerpc/configs/mgcoge_defconfig         |   1 +
>   arch/powerpc/configs/mpc5200_defconfig        |   1 +
>   arch/powerpc/configs/mpc7448_hpc2_defconfig   |   1 +
>   arch/powerpc/configs/mpc8272_ads_defconfig    |   1 +
>   arch/powerpc/configs/mpc83xx_defconfig        |   1 +
>   arch/powerpc/configs/mpc866_ads_defconfig     |   1 +
>   arch/powerpc/configs/mvme5100_defconfig       |   1 +
>   arch/powerpc/configs/pasemi_defconfig         |   1 +
>   arch/powerpc/configs/pmac32_defconfig         |   1 +
>   arch/powerpc/configs/powernv_defconfig        |   1 +
>   arch/powerpc/configs/ppc64_defconfig          |   1 +
>   arch/powerpc/configs/ppc64e_defconfig         |   1 +
>   arch/powerpc/configs/ppc6xx_defconfig         |   1 +
>   arch/powerpc/configs/pq2fads_defconfig        |   1 +
>   arch/powerpc/configs/ps3_defconfig            |   1 +
>   arch/powerpc/configs/pseries_defconfig        |   1 +
>   arch/powerpc/configs/skiroot_defconfig        |   1 +
>   arch/powerpc/configs/wii_defconfig            |   1 +
>   arch/riscv/configs/defconfig                  |   1 +
>   arch/riscv/configs/rv32_defconfig             |   1 +
>   arch/s390/configs/debug_defconfig             |   1 +
>   arch/s390/configs/defconfig                   |   1 +
>   arch/sh/configs/cayman_defconfig              |   1 +
>   arch/sh/configs/landisk_defconfig             |   1 +
>   arch/sh/configs/lboxre2_defconfig             |   1 +
>   arch/sh/configs/rsk7264_defconfig             |   1 +
>   arch/sh/configs/sdk7780_defconfig             |   1 +
>   arch/sh/configs/sdk7786_defconfig             |   1 +
>   arch/sh/configs/se7206_defconfig              |   1 +
>   arch/sh/configs/se7780_defconfig              |   1 +
>   arch/sh/configs/sh03_defconfig                |   1 +
>   arch/sh/configs/sh2007_defconfig              |   1 +
>   arch/sh/configs/sh7785lcr_32bit_defconfig     |   1 +
>   arch/sh/configs/shmin_defconfig               |   1 +
>   arch/sh/configs/titan_defconfig               |   1 +
>   arch/sparc/configs/sparc32_defconfig          |   1 +
>   arch/sparc/configs/sparc64_defconfig          |   1 +
>   arch/um/configs/i386_defconfig                |   1 +
>   arch/um/configs/x86_64_defconfig              |   1 +
>   arch/unicore32/configs/defconfig              |   1 +
>   arch/x86/configs/i386_defconfig               |   1 +
>   arch/x86/configs/x86_64_defconfig             |   1 +
>   arch/xtensa/configs/audio_kc705_defconfig     |   1 +
>   arch/xtensa/configs/cadence_csp_defconfig     |   1 +
>   arch/xtensa/configs/generic_kc705_defconfig   |   1 +
>   arch/xtensa/configs/nommu_kc705_defconfig     |   1 +
>   arch/xtensa/configs/smp_lx200_defconfig       |   1 +
>   arch/xtensa/configs/virt_defconfig            |   1 +
>   drivers/block/Kconfig                         |  73 +-
>   drivers/block/Makefile                        |   4 +-
>   drivers/block/loop/Kconfig                    |  93 ++
>   drivers/block/loop/Makefile                   |  13 +
>   drivers/block/{ => loop}/cryptoloop.c         |   2 +-
>   drivers/block/loop/loop_file_fmt.c            | 328 ++++++
>   drivers/block/loop/loop_file_fmt.h            | 351 +++++++
>   drivers/block/loop/loop_file_fmt_qcow_cache.c | 218 ++++
>   drivers/block/loop/loop_file_fmt_qcow_cache.h |  51 +
>   .../block/loop/loop_file_fmt_qcow_cluster.c   | 270 +++++
>   .../block/loop/loop_file_fmt_qcow_cluster.h   |  23 +
>   drivers/block/loop/loop_file_fmt_qcow_main.c  | 945 ++++++++++++++++++
>   drivers/block/loop/loop_file_fmt_qcow_main.h  | 417 ++++++++
>   drivers/block/loop/loop_file_fmt_raw.c        | 449 +++++++++
>   drivers/block/{loop.c => loop/loop_main.c}    | 567 ++++-------
>   drivers/block/{loop.h => loop/loop_main.h}    |  14 +-
>   include/uapi/linux/loop.h                     |  14 +-
>   248 files changed, 3861 insertions(+), 422 deletions(-)
>   create mode 100644 Documentation/admin-guide/blockdev/loop.rst
>   create mode 100644 Documentation/driver-api/loop-file-fmt.rst
>   create mode 100644 drivers/block/loop/Kconfig
>   create mode 100644 drivers/block/loop/Makefile
>   rename drivers/block/{ => loop}/cryptoloop.c (99%)
>   create mode 100644 drivers/block/loop/loop_file_fmt.c
>   create mode 100644 drivers/block/loop/loop_file_fmt.h
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_cache.c
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_cache.h
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_cluster.c
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_cluster.h
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_main.c
>   create mode 100644 drivers/block/loop/loop_file_fmt_qcow_main.h
>   create mode 100644 drivers/block/loop/loop_file_fmt_raw.c
>   rename drivers/block/{loop.c => loop/loop_main.c} (86%)
>   rename drivers/block/{loop.h => loop/loop_main.h} (92%)
>

  parent reply	other threads:[~2019-08-24 11:10 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-23 22:56 [PATCH 0/5] block: loop: add file format subsystem and QCOW2 file format driver development
2019-08-23 22:56 ` [PATCH 2/5] doc: admin-guide: add loop block device documentation development
2019-08-23 22:56 ` [PATCH 3/5] doc: driver-api: add loop file format subsystem API documentation development
2019-08-23 22:56 ` [PATCH 4/5] block: loop: add QCOW2 loop file format driver (read-only) development
2019-08-23 22:56 ` [PATCH 5/5] doc: admin-guide: add QCOW2 file format to loop device documentation development
2019-08-24  3:37 ` [PATCH 0/5] block: loop: add file format subsystem and QCOW2 file format driver Bart Van Assche
2019-08-24  9:14   ` Manuel Bentele
2019-08-24 16:04     ` Bart Van Assche
2019-08-25 12:15       ` Manuel Bentele
2019-09-09 22:12         ` Manuel Bentele
2019-08-24 11:10 ` Manuel Bentele [this message]
2019-09-12  2:24 ` Ming Lei
2019-09-13 11:57   ` Manuel Bentele
2019-09-16  2:11     ` Ming Lei
2019-09-18 10:26       ` Simon Rettberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86279379-32ac-15e9-2f91-68ce9c94cfbf@manuel-bentele.de \
    --to=development@manuel-bentele.de \
    --cc=linux-block@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).