Project

General

Profile

Actions

Feature #24263

open

client/mds: create a merkle tree of objects to allow efficient generation of differences between files

Added by Patrick Donnelly almost 6 years ago. Updated about 5 years ago.

Status:
New
Priority:
High
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

Source:
Development
Tags:
Backport:
Reviewed:
Affected Versions:
Component(FS):
Client, Common/Protocol, MDS, kceph
Labels (FS):
task(hard), task(intern)
Pull request ID:

Description

Idea is that the collection of objects representing a file would be arranged as a merkle tree. Any write to an object in the file, as part of the same transaction, would also update the SHA1 of that object in one of its xattrs. Following this, the client would update "parent" objects in the merkle tree. This can all be done asynchronously and in multiple atomic steps (in the case of multiple writers).

The MDS should also have a scrub mode that verifies these SHA1s and generates the merkle tree.

The use-case for this feature is to allow the efficient generation of a difference between two version of a file (from a snapshot). The rstats version for directories already allow you to zero-in on the files/directories that have been changed but generating a diff requires a full file read which is expensive, naturally.

Actions

Also available in: Atom PDF