Skip to content
This repository has been archived by the owner on Sep 22, 2020. It is now read-only.

RFC: Remove INode Store Abstraction #72

Closed
barakmich opened this issue Jan 26, 2016 · 2 comments
Closed

RFC: Remove INode Store Abstraction #72

barakmich opened this issue Jan 26, 2016 · 2 comments

Comments

@barakmich
Copy link
Contributor

Let's simplify:

Right now, there's a separate INode store. I did that early on so that I could think about other abstractions, but it's time to centralize the storage.

My proposal is this: INodes consist of blocks, with special BlockRefs.

What's special about them? Well, BlockRefs would have a type now. We can steal a few bits (I'm thinking 16 from volume, meaning 64k potential blocktypes and 2^48 or 2.8e14 different volumes -- which is still plenty). The INode abstraction translates *model.INodes into blockns and back again.

This simplifies all the steps greatly (no second store) and has another advantage: The ring becomes even more the source of truth. If you want to modify how INodes are replicated, that's a change to the ring.

This has an added advantage: new and different blocktypes can now be known to the ring. For instance, it's probably unwise to keep Reed-Solomon blocks on all the same hosts as their original blocks (or probabalistically so). Or maybe you want to keep them on the same rack or whatever.

So too with alternate replication strategies.

And this simplifies RPCs; it's just blocks.

This also obviates #63.

@barakmich barakmich changed the title Remove INode Store Abstraction RFC: Remove INode Store Abstraction Jan 26, 2016
@betawaffle
Copy link
Collaborator

Good that you brought this up for discussion, but do you have a counter argument? I don't.

@barakmich
Copy link
Contributor Author

Not really. And wait til you see the PR.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants