From: Sergei Shtepa <sergei.shtepa@veeam.com>
To: <axboe@kernel.dk>, <corbet@lwn.net>
Cc: <linux-block@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
Sergei Shtepa <sergei.shtepa@veeam.com>
Subject: [PATCH v2 00/21] blksnap - block devices snapshots module
Date: Fri, 9 Dec 2022 15:23:10 +0100 [thread overview]
Message-ID: <20221209142331.26395-1-sergei.shtepa@veeam.com> (raw)
Hi Jens. Hi Jonathan. Hi all.
I am happy to offer a modified version of the Block Devices Snapshots
Module. It allows to create non-persistent snapshots of any block devices.
The main purpose of such snapshots is to provide backups of block devices.
See more in Documentation/block/blksnap.rst.
The Block Device Filtering Mechanism is added to the block layer. This
allows to attach and detach block device filters to the block layer.
Filters allow to extend the functionality of the block layer.
See more in Documentation/block/blkfilter.rst.
A tool, a library for working with blksnap and tests can be found at
www.github.com/veeam/blksnap.
The first version was suggested at 13 June 2022. Many thanks to
Christoph Hellwig and Randy Dunlap for the review of that version.
Changes:
- Forgotten "static" declarations have been added.
- The text of the comments has been corrected.
- It is possible to connect only one filter, since there are no others in
upstream.
- Do not have additional locks for attach/detach filter.
- blksnap.h moved to include/uapi/.
- #pragma once and commented code removed.
- uuid_t removed from user API.
- Removed default values for module parameters from the configuration file.
- The debugging code for tracking memory leaks has been removed.
- Simplified Makefile.
- Optimized work with large memory buffers, CBT tables are now in virtual
memory.
- The allocation code of minor numbers has been optimized.
- The implementation of the snapshot image block device has been
simplified, now it is a bio-based block device.
- Removed initialization of global variables with null values.
- Only one bio is used to copy one chunk.
- Checked on ppc64le.
The v1 version was suggested at 2 November 2022. Many thanks to Fabio
Fantoni for his for his participation in the "blksnap" project on github
and Jonathan Corbet for his article https://lwn.net/Articles/914031/.
Thanks to the impartial kernel test robot.
Changes:
- Added documentation for Block Device Filtering Mechanism.
- Added documentation for Block Devices Snapshots Module (blksnap).
- The MAINTAINERS file has been updated.
- Optimized queue code for snapshot images.
- Fixed comments, log messages and code for better readability.
Sergei Shtepa (21):
documentation, blkfilter: Block Device Filtering Mechanism
block, blkfilter: Block Device Filtering Mechanism
documentation, capability: fix Generic Block Device Capability
documentation, blksnap: Block Devices Snapshots Module
block, blksnap: header file of the module interface
block, blksnap: module management interface functions
block, blksnap: init() and exit() functions
block, blksnap: interaction with sysfs
block, blksnap: attaching and detaching the filter and handling I/O
units
block, blksnap: map of change block tracking
block, blksnap: minimum data storage unit of the original block device
block, blksnap: buffer in memory for the minimum data storage unit
block, blksnap: functions and structures for performing block I/O
operations
block, blksnap: storage for storing difference blocks
block, blksnap: event queue from the difference storage
block, blksnap: owner of information about overwritten blocks of the
original block device
block, blksnap: snapshot image block device
block, blksnap: snapshot
block, blksnap: Kconfig and Makefile
block, blksnap: adds a blksnap to the kernel tree
block, blksnap: adds a maintainer for new files
Documentation/block/blkfilter.rst | 50 ++
Documentation/block/blksnap.rst | 348 ++++++++++++++
Documentation/block/capability.rst | 3 +
Documentation/block/index.rst | 2 +
MAINTAINERS | 14 +
block/bdev.c | 70 +++
block/blk-core.c | 19 +-
drivers/block/Kconfig | 2 +
drivers/block/Makefile | 2 +
drivers/block/blksnap/Kconfig | 12 +
drivers/block/blksnap/Makefile | 18 +
drivers/block/blksnap/cbt_map.c | 268 +++++++++++
drivers/block/blksnap/cbt_map.h | 114 +++++
drivers/block/blksnap/chunk.c | 345 ++++++++++++++
drivers/block/blksnap/chunk.h | 139 ++++++
drivers/block/blksnap/ctrl.c | 410 ++++++++++++++++
drivers/block/blksnap/ctrl.h | 9 +
drivers/block/blksnap/diff_area.c | 655 +++++++++++++++++++++++++
drivers/block/blksnap/diff_area.h | 177 +++++++
drivers/block/blksnap/diff_buffer.c | 133 ++++++
drivers/block/blksnap/diff_buffer.h | 75 +++
drivers/block/blksnap/diff_io.c | 168 +++++++
drivers/block/blksnap/diff_io.h | 118 +++++
drivers/block/blksnap/diff_storage.c | 317 +++++++++++++
drivers/block/blksnap/diff_storage.h | 93 ++++
drivers/block/blksnap/event_queue.c | 86 ++++
drivers/block/blksnap/event_queue.h | 63 +++
drivers/block/blksnap/main.c | 164 +++++++
drivers/block/blksnap/params.h | 12 +
drivers/block/blksnap/snapimage.c | 275 +++++++++++
drivers/block/blksnap/snapimage.h | 69 +++
drivers/block/blksnap/snapshot.c | 670 ++++++++++++++++++++++++++
drivers/block/blksnap/snapshot.h | 78 +++
drivers/block/blksnap/sysfs.c | 80 ++++
drivers/block/blksnap/sysfs.h | 7 +
drivers/block/blksnap/tracker.c | 683 +++++++++++++++++++++++++++
drivers/block/blksnap/tracker.h | 74 +++
drivers/block/blksnap/version.h | 10 +
include/linux/blk_types.h | 2 +
include/linux/blkdev.h | 71 +++
include/uapi/linux/blksnap.h | 549 +++++++++++++++++++++
41 files changed, 6452 insertions(+), 2 deletions(-)
create mode 100644 Documentation/block/blkfilter.rst
create mode 100644 Documentation/block/blksnap.rst
create mode 100644 drivers/block/blksnap/Kconfig
create mode 100644 drivers/block/blksnap/Makefile
create mode 100644 drivers/block/blksnap/cbt_map.c
create mode 100644 drivers/block/blksnap/cbt_map.h
create mode 100644 drivers/block/blksnap/chunk.c
create mode 100644 drivers/block/blksnap/chunk.h
create mode 100644 drivers/block/blksnap/ctrl.c
create mode 100644 drivers/block/blksnap/ctrl.h
create mode 100644 drivers/block/blksnap/diff_area.c
create mode 100644 drivers/block/blksnap/diff_area.h
create mode 100644 drivers/block/blksnap/diff_buffer.c
create mode 100644 drivers/block/blksnap/diff_buffer.h
create mode 100644 drivers/block/blksnap/diff_io.c
create mode 100644 drivers/block/blksnap/diff_io.h
create mode 100644 drivers/block/blksnap/diff_storage.c
create mode 100644 drivers/block/blksnap/diff_storage.h
create mode 100644 drivers/block/blksnap/event_queue.c
create mode 100644 drivers/block/blksnap/event_queue.h
create mode 100644 drivers/block/blksnap/main.c
create mode 100644 drivers/block/blksnap/params.h
create mode 100644 drivers/block/blksnap/snapimage.c
create mode 100644 drivers/block/blksnap/snapimage.h
create mode 100644 drivers/block/blksnap/snapshot.c
create mode 100644 drivers/block/blksnap/snapshot.h
create mode 100644 drivers/block/blksnap/sysfs.c
create mode 100644 drivers/block/blksnap/sysfs.h
create mode 100644 drivers/block/blksnap/tracker.c
create mode 100644 drivers/block/blksnap/tracker.h
create mode 100644 drivers/block/blksnap/version.h
create mode 100644 include/uapi/linux/blksnap.h
--
2.20.1
next reply other threads:[~2022-12-09 14:59 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-09 14:23 Sergei Shtepa [this message]
2022-12-09 14:23 ` [PATCH v2 01/21] documentation, blkfilter: Block Device Filtering Mechanism Sergei Shtepa
2022-12-10 4:15 ` Bagas Sanjaya
2022-12-09 14:23 ` [PATCH v2 02/21] block, " Sergei Shtepa
2022-12-15 9:26 ` Christoph Hellwig
2022-12-15 10:46 ` Sergei Shtepa
2022-12-16 7:04 ` Christoph Hellwig
2023-01-31 23:58 ` Mike Snitzer
2023-02-01 11:09 ` Fabio Fantoni
2023-02-01 13:16 ` Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 03/21] documentation, capability: fix Generic Block Device Capability Sergei Shtepa
2022-12-13 12:13 ` Fabio Fantoni
2022-12-30 15:35 ` Fabio Fantoni
2022-12-09 14:23 ` [PATCH v2 04/21] documentation, blksnap: Block Devices Snapshots Module Sergei Shtepa
2022-12-10 3:50 ` Bagas Sanjaya
2022-12-09 14:23 ` [PATCH v2 05/21] block, blksnap: header file of the module interface Sergei Shtepa
2022-12-09 22:13 ` kernel test robot
2022-12-09 23:14 ` kernel test robot
2022-12-09 14:23 ` [PATCH v2 06/21] block, blksnap: module management interface functions Sergei Shtepa
2022-12-15 9:28 ` Christoph Hellwig
[not found] ` <CGME20230103153406eucas1p205c48bd767e6a86f6f1121db7eb5fc19@eucas1p2.samsung.com>
2023-01-03 15:26 ` Pankaj Raghav
2022-12-09 14:23 ` [PATCH v2 07/21] block, blksnap: init() and exit() functions Sergei Shtepa
2022-12-15 9:30 ` Christoph Hellwig
2022-12-09 14:23 ` [PATCH v2 08/21] block, blksnap: interaction with sysfs Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 09/21] block, blksnap: attaching and detaching the filter and handling I/O units Sergei Shtepa
2022-12-15 10:01 ` Christoph Hellwig
2022-12-09 14:23 ` [PATCH v2 10/21] block, blksnap: map of change block tracking Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 11/21] block, blksnap: minimum data storage unit of the original block device Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 12/21] block, blksnap: buffer in memory for the minimum data storage unit Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 13/21] block, blksnap: functions and structures for performing block I/O operations Sergei Shtepa
2022-12-15 10:06 ` Christoph Hellwig
2022-12-09 14:23 ` [PATCH v2 14/21] block, blksnap: storage for storing difference blocks Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 15/21] block, blksnap: event queue from the difference storage Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 16/21] block, blksnap: owner of information about overwritten blocks of the original block device Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 17/21] block, blksnap: snapshot image " Sergei Shtepa
2022-12-15 9:45 ` Christoph Hellwig
2022-12-09 14:23 ` [PATCH v2 18/21] block, blksnap: snapshot Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 19/21] block, blksnap: Kconfig and Makefile Sergei Shtepa
2022-12-09 14:23 ` [PATCH v2 20/21] block, blksnap: adds a blksnap to the kernel tree Sergei Shtepa
2022-12-09 21:53 ` kernel test robot
2022-12-09 14:23 ` [PATCH v2 21/21] block, blksnap: adds a maintainer for new files Sergei Shtepa
2022-12-10 3:23 ` [PATCH v2 00/21] blksnap - block devices snapshots module Bagas Sanjaya
2022-12-10 22:57 ` Sergei Shtepa
[not found] ` <20230101071813.3329-1-hdanton@sina.com>
2023-01-02 9:44 ` [PATCH v2 17/21] block, blksnap: snapshot image block device Sergei Shtepa
[not found] ` <20230101110542.3395-1-hdanton@sina.com>
2023-01-02 9:58 ` [PATCH v2 18/21] block, blksnap: snapshot Sergei Shtepa
2023-01-17 21:04 ` [PATCH v2 00/21] blksnap - block devices snapshots module Mike Snitzer
2023-01-18 10:51 ` Hannes Reinecke
2023-01-24 11:34 ` Sergei Shtepa
2023-01-31 20:47 ` Mike Snitzer
2023-02-01 2:32 ` Mason Giles
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=20221209142331.26395-1-sergei.shtepa@veeam.com \
--to=sergei.shtepa@veeam.com \
--cc=axboe@kernel.dk \
--cc=corbet@lwn.net \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@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).