[PATCH RFC v3 00/15] FSPool: backend directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everyone, we would like to propose the first implementation of fspool
with directory backend according to previous discussions:

https://www.redhat.com/archives/libvir-list/2016-April/msg01941.html
https://www.redhat.com/archives/libvir-list/2016-May/msg00208.html
https://www.redhat.com/archives/libvir-list/2016-September/msg00463.html

Filesystem pools is a facility to manage filesystems resources similar
to how storage pools manages volume resources.The manageble unit is a  single
filesystem, so fspool items have only one type - dir (storage pools can manage files,
block devices, etc). However, backends for fspools can be different.
This series introduses the simplest backend - host directory.

API mostly follows storage pool API: we can create fspool, build it,
populate with items.  Moreover, to create filesystem pool  we need
some storage. So, all structures to describe storage that will hold
fspool is borrowed from storage pool ones. The same is true for functions
that work with them.

As it was mentioned before -  here we present directory backend for fspool.
To mangae fspools and items we tried to use  as much functionality from storage pool
(directory and fs backend) as possible.

The first 3 patches  - is preparational refactoring. Both storage pool and fspool
reside upon some storage, so there is a good chance to use the same code for
describing storage source and functions that work with it. All reusable code is moved
virpoolcommon.c/.h  It would be great if you share you thoughts about such changes.
Because what we trying to achive - is to have less copy/paste and  to have
separate drivers for storage pools and filesystem pools.

All other patches is devoted to  fspool implementation and is presented according
libvirt recommendations.

Uploading/downloading operations
are not defined yet as it is not obvious how to make it properly. I guess
we can use some kind of tar to make a stream from a filesystem. Please share
you thoughts on this particular issue.


v2:
- renamed Fs to FS
- in configure.ac script macro m4 is used
- updates docs
- created simple tests
- updated virsh.pod
- added information abot fspool in fotmatfs.html

v3:
- in this version storage pool code is reused
- resplitted patches
- fixed some errors


Olga Krishtal (15):
  storage pools: refactoring of basic structs
  storage pools: functions refactoring
  storage pools: refactoring of fs backend
  FSPool: defining the public API
  FSPool: defining the internal API
  FSpool: implementing the public API
  FSPool: added access control objects and permissions
  FSPool: added --with-fs compilation option
  FSPool: implementation of remote protocol
  FSPool: added configuration description
  virsh: filesystem pools commands
  FSPool: empty implementation of driver methods
  FSPool: driver methods implementation
  FSPool: directory backend inplementation
  FSPool: Tests and documentation

 configure.ac                                       |    6 +
 daemon/Makefile.am                                 |    4 +
 daemon/libvirtd.c                                  |    9 +
 daemon/remote.c                                    |   35 +
 docs/formatfs.html.in                              |  206 ++
 docs/fspool.html.in                                |   41 +
 docs/schemas/fsitem.rng                            |   66 +
 docs/schemas/fspool.rng                            |   82 +
 docs/sitemap.html.in                               |    4 +
 include/libvirt/libvirt-fs.h                       |  254 +++
 include/libvirt/libvirt-storage.h                  |    5 +-
 include/libvirt/libvirt.h                          |    1 +
 include/libvirt/virterror.h                        |    7 +
 m4/virt-driver-fspool.m4                           |   43 +
 po/POTFILES.in                                     |    7 +
 src/Makefile.am                                    |   59 +-
 src/access/viraccessdriver.h                       |   15 +
 src/access/viraccessdrivernop.c                    |   21 +
 src/access/viraccessdriverpolkit.c                 |   47 +
 src/access/viraccessdriverstack.c                  |   50 +
 src/access/viraccessmanager.c                      |   32 +
 src/access/viraccessmanager.h                      |   11 +-
 src/access/viraccessperm.c                         |   15 +-
 src/access/viraccessperm.h                         |  126 ++
 src/check-driverimpls.pl                           |    2 +
 src/conf/fs_conf.c                                 | 1479 ++++++++++++++
 src/conf/fs_conf.h                                 |  262 +++
 src/conf/storage_conf.c                            |  162 --
 src/conf/storage_conf.h                            |  137 +-
 src/datatypes.c                                    |  150 ++
 src/datatypes.h                                    |   60 +-
 src/driver-fs.h                                    |  193 ++
 src/driver.h                                       |    3 +
 src/fs/fs_backend.h                                |   94 +
 src/fs/fs_backend_dir.c                            |  290 +++
 src/fs/fs_backend_dir.h                            |    8 +
 src/fs/fs_driver.c                                 | 2044 ++++++++++++++++++++
 src/fs/fs_driver.h                                 |   10 +
 src/libvirt-fs.c                                   | 1555 +++++++++++++++
 src/libvirt.c                                      |   30 +-
 src/libvirt_private.syms                           |   58 +-
 src/libvirt_public.syms                            |   46 +
 src/remote/remote_driver.c                         |   66 +
 src/remote/remote_protocol.x                       |  466 ++++-
 src/remote_protocol-structs                        |  165 ++
 src/rpc/gendispatch.pl                             |   23 +-
 src/storage/storage_backend.h                      |    1 -
 src/storage/storage_backend_fs.c                   |   74 +-
 src/util/virerror.c                                |   37 +
 src/util/virpoolcommon.c                           |  212 ++
 src/util/virpoolcommon.h                           |  189 ++
 src/util/virstoragefile.c                          |   73 +
 src/util/virstoragefile.h                          |    3 +
 tests/Makefile.am                                  |   12 +
 tests/fsitemxml2xmlin/item.xml                     |   13 +
 tests/fsitemxml2xmlout/item.xml                    |   13 +
 tests/fsitemxml2xmltest.c                          |  105 +
 .../dir-missing-target-path-invalid.xml            |   12 +
 tests/fspoolxml2xmlin/fspool-dir.xml               |   16 +
 tests/fspoolxml2xmlout/fspool-dir.xml              |   16 +
 tests/fspoolxml2xmltest.c                          |   81 +
 tools/Makefile.am                                  |    2 +
 tools/virsh-fsitem.c                               | 1293 +++++++++++++
 tools/virsh-fsitem.h                               |   39 +
 tools/virsh-fspool.c                               | 1574 +++++++++++++++
 tools/virsh-fspool.h                               |   38 +
 tools/virsh.c                                      |    4 +
 tools/virsh.h                                      |    9 +
 tools/virsh.pod                                    |  252 ++-
 69 files changed, 12128 insertions(+), 389 deletions(-)
 create mode 100644 docs/formatfs.html.in
 create mode 100644 docs/fspool.html.in
 create mode 100644 docs/schemas/fsitem.rng
 create mode 100644 docs/schemas/fspool.rng
 create mode 100644 include/libvirt/libvirt-fs.h
 create mode 100644 m4/virt-driver-fspool.m4
 create mode 100644 src/conf/fs_conf.c
 create mode 100644 src/conf/fs_conf.h
 create mode 100644 src/driver-fs.h
 create mode 100644 src/fs/fs_backend.h
 create mode 100644 src/fs/fs_backend_dir.c
 create mode 100644 src/fs/fs_backend_dir.h
 create mode 100644 src/fs/fs_driver.c
 create mode 100644 src/fs/fs_driver.h
 create mode 100644 src/libvirt-fs.c
 create mode 100644 src/util/virpoolcommon.c
 create mode 100644 src/util/virpoolcommon.h
 create mode 100644 tests/fsitemxml2xmlin/item.xml
 create mode 100644 tests/fsitemxml2xmlout/item.xml
 create mode 100644 tests/fsitemxml2xmltest.c
 create mode 100644 tests/fspoolschemadata/dir-missing-target-path-invalid.xml
 create mode 100644 tests/fspoolxml2xmlin/fspool-dir.xml
 create mode 100644 tests/fspoolxml2xmlout/fspool-dir.xml
 create mode 100644 tests/fspoolxml2xmltest.c
 create mode 100644 tools/virsh-fsitem.c
 create mode 100644 tools/virsh-fsitem.h
 create mode 100644 tools/virsh-fspool.c
 create mode 100644 tools/virsh-fspool.h

-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux