]> sourceware.org Git - lvm2.git/commit
daemons: add dmfilemapd
authorBryn M. Reeves <bmr@redhat.com>
Thu, 15 Dec 2016 20:10:27 +0000 (20:10 +0000)
committerBryn M. Reeves <bmr@redhat.com>
Thu, 9 Mar 2017 18:50:15 +0000 (18:50 +0000)
commit8b78982297bb9c8484f8add7fdf96e93c8238769
treee2d1f4bde9221b9b8a52d04bea7da6794fe258fb
parentc98868181fa3ee0816d525ef186c1059a46f1d0b
daemons: add dmfilemapd

Add a daemon that can be launched to monitor a group of regions
corresponding to the extents of a file, and to update the regions as the
file's allocation changes.

The daemon is intended to be started from a library interface, but can
also be run from the command line:

  dmfilemapd <fd> <group_id> <path> <mode> [<foreground>[<log_level>]]

Where fd is a file descriptor open on the mapped file, group_id is the
group identifier of the mapped group and mode is either "inode" or
"path". E.g.:

  # dmfilemapd 3 0 vm.img inode 1 3 3<vm.img
  ...

If foreground is non-zero, the daemon will not fork to run in the
background. If verbose is non-zero, libdm and daemon log messages will
be printed.

It is possible for the group identifier to change when regions are
re-mapped: this occurs when the group leader is deleted (regroup=1 in
dm_stats_update_regions_from_fd()), and another region is created before
the daemon has a chance to recreate the leader region.

The operation is inherently racey since there is currently no way to
atomically move or resize a dm_stats region while retaining its
region_id.

Detect this condition and update the group_id value stored in the
filemap monitor.

A function is also provided in the the stats API to launch the filemap
monitoring daemon:

  int dm_stats_start_filemapd(int fd, uint64_t group_id, const char *path,
                              dm_filemapd_mode_t mode, unsigned foreground,
                              unsigned verbose);

This carries out the first fork and execs dmfilemapd with the arguments
specified.

A dm_filemapd_mode_t value is specified by the mode argument: either
DM_FILEMAPD_FOLLOW_INODE, or DM_FILEMAPD_FOLLOW_PATH. A helper function,
dm_filemapd_mode_from_string(), is provided to parse a string containing
a valid mode name into the appropriate dm_filemapd_mode_t value.
configure
configure.in
daemons/Makefile.in
daemons/dmfilemapd/.gitignore [new file with mode: 0644]
daemons/dmfilemapd/Makefile.in [new file with mode: 0644]
daemons/dmfilemapd/dmfilemapd.c [new file with mode: 0644]
include/configure.h.in
libdm/.exported_symbols.DM_1_02_138
libdm/libdevmapper.h
libdm/libdm-stats.c
This page took 0.037973 seconds and 5 git commands to generate.