D17737: [CopyJob] Create clones in btrf/xfs mount
Stefan BrĂ¼ns
noreply at phabricator.kde.org
Sun Dec 23 00:38:20 GMT 2018
bruns added a comment.
I think it would be much simpler if you just tried to do the the FICLONE iotctl in the job, without any prior checking:
- no possibility for races
- less syscals
- less code
INLINE COMMENTS
> copyjob.cpp:742
> + if (!isDir && info.linkDest.isEmpty() && m_mode == CopyJob::Copy && m_bDestSupportsCoW) {
> + const QString srcDevice = KMountPoint::currentMountPoints().findByPath(info.uSource.toLocalFile())->mountedFrom();
> + info.bCreateClone = (srcDevice == m_destDevice);
it is *much* cheaper to compare the st_dev fields from stat for the source file and the destination directory.
> kmountpoint.cpp:471
> || d->mountType == QLatin1String("smb-share");
> + const bool isCoWSupported = d->mountType == QLatin1String("btrfs") || d->mountType == QLatin1String("xfs");
>
This is not correct, xfs **may** support reflinks, but it is a feature only recently added, and has to be enabled at file system creation time.
> kmountpoint.h:145
> * "foo" and "FOO" as being the same file (true for msdos systems)
> + * @li SupportsCoW: returns true if the filesystem supports Copy-on-Write
> + * (true for btrfs, xfs, etc.)
The correct term here is "reflink", not CoW.
REPOSITORY
R241 KIO
REVISION DETAIL
https://phabricator.kde.org/D17737
To: chinmoyr, dfaure, davidedmundson
Cc: bruns, kde-frameworks-devel, michaelh, ngraham
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20181223/3919af3b/attachment.html>
More information about the Kde-frameworks-devel
mailing list