From: Joe Thornber <thornber@redhat.com>
To: Thanos Makatos <thanos.makatos@sunlight.io>
Cc: dm-devel@redhat.com
Subject: Re: extracting thin mappings in real time
Date: Wed, 3 Oct 2018 14:03:33 +0100 [thread overview]
Message-ID: <20181003130333.GA20800@reti> (raw)
In-Reply-To: <CA+fs2JN0evmnJP2yZT144bUOdxaxUydchXrZmLmFVy4F20yfAA@mail.gmail.com>
On Wed, Oct 03, 2018 at 01:40:22PM +0100, Thanos Makatos wrote:
> I have a kernel module that sits on top of a thin device mapper target that
> receives block I/O requests and re-submits then to the thin target. I would
> like to implement the following functionality: whenever I receive a write
> completion from the thin target (assuming that it's the first time a block
> written to) I would like to extract the newly-established mapping of that
> virtual block.
>
> I know that I can do this using thin_dump, however this involves:
> (1) spawning a process
> (2) reserving/releasing a metadata snapshot, and
> (3) dumping _all_ the mappings.
>
> In other words, it's far to heavyweight for my performance requirements.
>
> Ideally I would like to be able to obtain the mapping in kernel space. I
> had a look at thin_dump and from what I understand it directly reads the
> B-tree from the disk? Is there some kernel function that already does this?
> E.g. given a thin LBA return the physical block address.
>
> Also, regarding having to have reserved a metadata snapshot, is this
> necessary for obtaining mappings? Aren't mappings immutable once established
> ?
Could you say more about why you want to do this?
Mappings don't change if you're not using snapshots. If you are, then any write
to a shared block will trigger a copy on write operation, and subsequently a new
mapping.
So for backups etc. I made the metadata snapshot available, which gives you a
view of all the metadata frozen at a point in time. If you're using the metadata
snap you still need to guarantee the mappings for the devices that you're interested
in are not changing. eg, instead of backing up a live thin, take a snapshot of the thin
and back this up instead.
- Joe
next prev parent reply other threads:[~2018-10-03 13:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-03 12:40 extracting thin mappings in real time Thanos Makatos
2018-10-03 13:03 ` Joe Thornber [this message]
2018-10-03 14:13 ` Thanos Makatos
2018-10-03 14:47 ` Joe Thornber
2018-10-03 15:47 ` Thanos Makatos
2018-10-04 12:56 ` Joe Thornber
2018-10-05 11:33 ` Thanos Makatos
2018-10-05 15:53 ` Thanos Makatos
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=20181003130333.GA20800@reti \
--to=thornber@redhat.com \
--cc=dm-devel@redhat.com \
--cc=thanos.makatos@sunlight.io \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.