]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
cephfs: Add ceph-dokan, providing Windows support
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Fri, 7 Aug 2020 12:07:20 +0000 (12:07 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Fri, 5 Mar 2021 13:13:31 +0000 (13:13 +0000)
commitaf6b37364b75faae73695bd77538d52ec9cd657a
treed40a02d8540f631a3c163b8e2a00eef18a33594b
parent439add6ff7db90ed0597611582354a7e938db5f4
cephfs: Add ceph-dokan, providing Windows support

In order to expose ceph filesystems to Windows hosts, we propose
including ceph-dokan[1][2] in the Ceph tree, while updating it to
work with the latest CephFS and Dokany APIs.

Dokany is a well maintained project (fork of the original Dokan
project), allowing filesystems to be implemented in userspace,
even providing a Fuse compatibility layer.

One reason for not using the FUSE compatibility layer is that it's
only covering the high level API while Ceph is using the low level
FUSE API, which among other things is inode centric.

Changes made by this patch compared to the upstream ceph-dokan:

* support latest stable Dokany API. The upstream version relies on
  the legacy unmaintained Dokan API
* return proper error codes, converting standard errno.h values to
  NTSTATUS
* minor changes to support latest cephfs API
* drop duplicated ceph code, no longer needed if we're to include it
  in tree. This makes it much easier to maintain.
* drop redundant permission checks, leaving it up to libcephfs
* use ceph argparse helpers
* use ceph logging and daemon initialization
* fixed unicode handling
* switched to ceph coding style
* made ceph.conf param optional, using the default path if available
* enabled setting file timestamps
* append support
* configurable timeouts set once per mount
* ensure that the error code is always logged
* various cleanups (removed unused entry points, checks that have
  been moved to dokany, simplified conditional statements,
  unnecessary conversions in the hot path, etc).

[1] https://github.com/ketor/ceph-dokan
[2] https://github.com/ceph/ceph-dokan

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
14 files changed:
CMakeLists.txt
src/CMakeLists.txt
src/common/win32/errno.cc
src/dokan/CMakeLists.txt [new file with mode: 0644]
src/dokan/ceph_dokan.cc [new file with mode: 0644]
src/dokan/ceph_dokan.h [new file with mode: 0644]
src/dokan/dbg.cc [new file with mode: 0644]
src/dokan/dbg.h [new file with mode: 0644]
src/dokan/options.cc [new file with mode: 0644]
src/dokan/utils.cc [new file with mode: 0644]
src/dokan/utils.h [new file with mode: 0644]
src/include/win32/win32_errno.h
win32_build.sh
win32_deps_build.sh