►
From YouTube: CDS Hammer (Day 2) - OSD: Update Transaction Encoding
Description
http://goo.gl/U4b70r
29 October 2014
Ceph Developer Summit: Hammer
Day 2
OSD: Update Transaction Encoding
Sage Weil
A
B
So
that's
where
it
started,
but
I
think
there
are
also
wins
just
even
for
existing
backends
and
in
and
also
in
the
context
of
some
feature
stuff
that
we
might
do
with
the
multitudinous.
B
Kinda,
like
an
open,
that'll,
encode,
the
name
once
and
then
give
you
an
integer
ID
that
you'd
use
substance
subsequent
operations
to
refer
to
that
object,
and
you
do
that
for
object
in
for
collection
and
that's
the
pretty
straightforward.
It
just
means
that
on
the
decoding
side,
it's
going
to
be
simpler
to
decode
it'll
be
a
little
more
compact.
Oh
that's
by
less
of
an
issue,
and
it
means
that
the
current
implementations
that
are
doing
lookups
and
FD
cash
or
whatever
can
do
fewer
lookups,
which
will
be
cheaper.
B
B
B
So
that's
that
and
then
the
second
piece
is
to
also
do
the
same
thing
with
the
buffers
so
that,
instead
of
passing
the
buffer
to
an
individual
app,
you
would
sort
of
say
I'm
going
to
add
a
buffer
and
you
get
an
ID
back
and
then
you
reference
that
from
the
right.
Whatever
else,
this
makes
it
a
little
bit
easier
for
the
back
end
to
do
conditional,
behavior
based
on
the
buffer
payload
I'm,
without
having
to
go
through
and
parse
all
the
entries
and
then
make
a
decision
and
then
go
back
and
actually
execute
them.
B
B
In
that
case,
it's
not
worth
doing
anything
like
that
for
for
small
is
but
also
double
journaling
for
small
yo.
This
is
not
really
an
issue,
because
they're
small,
but
hopefully
that'll
help,
do
some
sort
of
metadata
only
journaling
type
stuff.
B
The
other
thing
is
that
one
thing
I
noticed
when
adding
some
of
the
recent
pieces
transaction
to
transactions
is
that
the
current
encoding
doesn't
isn't
really
backward
compatible
or
for
compatible
depending
on
you
look
at
it
and
that
you
don't
know
for
each
operation
in
there
there's
no
length.
B
B
B
A
D
Thank
you
I'll,
sell
our
design
points
of
the
instruction
decoding
code.
Follow
the
policies
group.
Once
I
see
that
I
lo
q
abbas
Stefan,
it
is
about
the
details
of
the
design.
We
are
considering
reduce
the
cost
of
induced
and
encode
and
decode
of
the
transactions,
and
this
is
one
point
and
I'd
rather
Hamas.
Owens
message
well
cbi,
talk
about
that
hot
meter
and
for
this
pass
it
focused
on
the
section
interface,
which
is
it's
a
class
of
the
objects,
talk
which
is
a
strip
buzzer
for
from
the
rule
bunch
of
cities.
D
We
can
reuse
a
new
transaction
interface
which
we
have.
We
were
first
the
cast
objects
all
the
butter
face,
but
buffer
from
transactions.
We
had
to
that
with
the
index
ID
of
the
object
or
the
buffers
the
week,
I
usually
look
up
instead
of
the
encode
and
decode
in
the
transaction
we
use
for
fields
of
the
teachers.
D
E
D
Wicked
click
here,
yep
yep,
no,
yes,
I'll
continue
so
have
the
tosh.o
get
all
the
collections
and
objects
from
the
transaction
and
both
OPA,
sir
osthara.
The
cluster
is
a
field
with
frost.
Oh
ok,
asus
is
a
struct
and
many
tear
tear
light
thanks
for
each
canapés
and
80
Ethiopia
is
a
fixed
size,
fix
fix
the
side
stretch,
though
we
can
decode
it
from
the
op's
use,
adjuster
pointer,
not
Dakota
operations.
D
D
Lesser
is
a
field
named
at
it,
deter
others
to
point
teachers,
their
interest,
all
the
fields,
collection,
an
object
in
tax
ID.
You
begin
from
Europe
and
increase
the
for
each
object.
That
has
really
just
an
ordinary
object,
attraction
works
and
the
partial
index
ID
is
the
offset
of
a
teacher
for
a
given
batteries.
So
there's
no
encoder
decoder
for
teacher.
D
That
means,
if
we
get
a
whole
key
objective,
read
operations
The
Messenger
will
it
was
the
teacher
and
we
just
use
that
and
we
don't
including
a
transient.
That
is
a
team
points,
though
it
with
a
single
simple
compared
with
us.
Currently,
transactions
in
the
primary
current
has
actually
need
to
encode
a
decoder,
every
collection,
objector,
oops
and
teachers
omap
values,
but
for
the
new
transaction
with
Justin,
either
encoder
Eric.
D
And
the
four
obviously
use
the
package
exam
though
there
is
it
we
can
consider
it
very
light
either
the
encoder
and
the
teacher
and
the
water
is
directly
from
the
messengers
or
peculiar,
though
there's
no
income
at
all
and
for
Dakota,
which
fuse
the
better
first
or
to
read
to
the
teacher
to
XFS
system.
There's
no
decoder,
because
we
have
other
drafted
in
the
memory
which
are
you
touched
directly
use
it.
Don't
ethically
the
frogs
about
forest
again.
So.
B
So
it's
the
idea
that
you
would
put
the
the
opposite
packed
together
at
the
beginning
and
you
would
put
the
buffers
at
the
end
or
you
would
do
it
okay,
so
you
have
to
know
what
the.
B
B
C
B
Then
the
buccinator
goes
at
the
end:
okay,
okay,
so
there's
there's
one
extra
field.
Basically,
that's
like
num
ops,
kind
of
right
that
you
would.
That
would
be
in
the
transaction
as
your
as
you're,
adding
these
ops
and
you
would.
You
would
guess
that
it
probably
put
that
in
an
STL
vector
and
you
reserve,
like
you,
know,
50
or
something
that's
going
to
capture
ninety
percent
of
the
users.
B
Okay,
for
the
one
suggestion
would
be
for
the
file
store
up
thing
and
you
can
do
the
union
of
anonymous
structures
or
whatever,
that's
so
that
you
can
sort
of
have
named
arguments
but
still
make
the
make
the
structure
a
fixed
size.
Yes,
I
could
easier
to
use
yeah
cool,
okay,
okay
sounds
good
to
me:
oh
I
ghetto,
sorry,
one
other
one!
Last
thing:
the
does
the
fields
that
I
think
it
seems
like
the
hash
map.
Doesn't
you
don't
actually
need
that
because
it's
really
the
caller
knows
when
it
opened
the
collection?
B
B
B
And
yeah,
maybe
I
could
profile
it,
but
I
think
in
the
common
case
you're
only
going
to
have
one
of
each
yes,
you
usually
won't
need
it
and
they
have
something
big.
Even
with
one
item.
Okay,.
D
B
I
think
continue,
but
I
think
the
one
thing
is
that
I'm,
the
file
turner
using
write,
V
I,
think
we
do
that
already
with
all
the
pointers
that
are
in
the
buffer
list,
though,
if
the
encode
is
basically
like
a
is
basically
just
adding
a
pointer
to
that
op
vector
and
the
existing
buffer
list,
it's
like
all
you're
doing
is
you're
adding
two
items
to
the
buffer
list
and
arshia
copping.
Any
data,
then
it'll
that
all
happen
automatically
right.
B
B
C
D
Ok,
ok,
the
full
pigeon
we
come
here,
Russia
With,
Karan
intersection
for
the
graph
look
rapidly
I
up.
Lik
is
a
much
easier
because
the
new
transaction-
almost
oh
god,
Justin
decode,
a
collection
of
the
boyish
and
the
use
a
bigger
platform-
is
copy
good,
fun
time.
Just
with
an
oxidizer
as
a
viral
I
to
go
ecol
it
you.
B
D
B
B
Those
types
and
then
I
think
the
one
other
thing
is
that
we
need
something
in
the
buffer
'less
class.
That
will
basically
say
make
sure
that
the
next
you
know,
however
many
bytes
are
contiguously
allocated,
which
is
is
all
is
like
always
basically
going
to
be
true
of
stuff.
You
write
over
the
network,
but
we
still
need
to
confirm
because
it's.
B
D
Okay,
Lessa
haces
aqui
key
under
then,
but
no
need
to
the
decoder,
because
the
transaction
must
be
transfer
from
the
panel
to
the
record.
So
we
can
just
include
the
office
of
the
transaction
24
separate
properties
to
all
into
one
or
not
that's
not
it
less
can
be
depend
on.
The
am
blessed
is
about
p.
The
lehigh
uses
for
possibilities
to
all
may
use
what
I
suppose,
okay,
but
for
Turner
we
can
just
use
right
away,
though
maybe
there's
no
ecological
here.
B
Exactly
I'm
not
sure
I
understand,
transaction
career
upset
by
I
mean
right
now.
The
transaction
is
internally
mostly
a
buffer
list.
It's
not
sort
of
decoded
in
the
struck
in
the
in
memory
structure.
When
you
add
things
to
the
transaction,
we're
just
appending
to
the
buffer
list
and
when
we
iterate
over
the
existing
barf
list,
we're
just
iterating
over
the
buffer
I
think
none
of
that
will
change.
B
D
Some
other
issues:
we
listen
some
cop,
the
eternal
structures
and
must
be
have
custom
very
fast,
encoder
decoder,
Messrs,
the
retest.
There
are
two
mess.
The
difference
becomes
to
Methodist
birthday
is
a
facet
equal
bishop.
We
use
a
additional
memory
and
we
just
calculate
to
destruct
as
a
sense
of
structure.
First
during
medical
memory,
and
we
use
as
a
member
of
coffee
filled
with
this
method
include
a
technology
include
of
the
G
object
test
and
we
reduce
the
flow
original
but
US
23.
D
Us,
though
there
is
Devon
cost
/
io
in
the
4k
read
for
operations-
oh
it
just
have
to
be,
for
that
may
have
more
it
effective
code
message,
so
the
the
all
the
coal
operations
can
be
much
faster,
much
faster
and
we
can
have.
Last
little,
though
there
is
a
test
results
which
we
use,
the
executor
feet,
City
acts
as
a
text
message,
but
you
said
system
types
to
test
the
cost
of
using
better,
though
oh,
so
you
see
so.
B
B
B
D
Oh,
it
a
lost
s,
little
hole
kosta
for
transaction
which
spin
the
bottle
ECOtality
code.
We
use
the
4k
rights
operations
for
the
test
series
text
kiss
and
the
PG
layer
depend
about
80
to
100.
The
US
are
coding
and
a
no
decoded-
and
today
is
not
consider
it.
Here,
though,
there
are
about
80
and
the
double
of
time,
but
antico
an
encoder.
We
see
him,
we
may
reduce
more
than
100
of
us
by
fast
or
no
coding
coding,
okays
s
0000.
E
B
B
Texas
yeah,
okay
yeah.
I
think
that
that
sounds
great
I
think
the.
B
Forever,
the
optimist
I
think
it
feels
like
that
the
hard
part
is
going
to
be
that
the
transaction
interface
is
going
to
change
into
this
amble
base
get
whatever
and
on
the
on
the
back
end,
the
actual
file
store
implementation.
The
thing
that
decodes
it
and
performs
the
operations
has
two
will
have
dual
versions
of
that:
one
that
does
yield
encoding
and
one
that
does
the
new
encoding
I.
Think
that's
going
to
be
that
the
hard
part,
the
actual
encoding
itself,
is
sort
of
a
small
matter
of
optimizing
rising.
The
Cossack.
B
E
B
Make
sure
that's
going
to
be
safe,
right,
I!
Think
that's!
What's
gonna,
that's
what's
missing
thing!
It's
especially
if
this
can
sort
of
start
in
earnest
soon,
then.
Hopefully
we
can
get
the
pieces
in
early
on
a
nettle
and
if,
but
if
it
defend,
if
the
code
is
finally
ready
and
like
December
and
we're
merging
the
last
minute,
then
I
think
it's
not
that's
not
going
to
fight.
This
is
a
big
big
change,
so
sooner
is
definitely
better
yeah.
I
like
I,
like
the
scheme.
B
E
E
Well,
that's
what
we
relative,
let's
get
this
time
so
probably
comes
in
the
form
of
some
unit
tests,
just
to
check
the
type
that
you
can
convert
the
impugned
coatings
from
one
to
the
other
and
obviously
test
in
the
we
have
some
unit
test
that
tests
with
an
actual
files
for
those
those
also
everything
else
can
probably
be
done
with
mixed
cluster
tests
that
we
already
do
in
technology.
So.
B
A
A
A
C
C
E
C
E
E
E
B
B
Maybe
sub-zero
you
get
the
whip,
object,
store
stuff
in
two
and
see
if
there
are
other
so
that
that
branch
just
tries
to
simplify
the
set
of
things
that
are
in
the
object
store
interface.
It
cuts
out
like
like
a
lecture
on
ADD
and
a
move,
and
some
other
stuff
is
some
please.
We
should
just
look
for
anything
else
that
isn't
used
and
any
other
opportunity
to
simplify
I
didn't
yet.
There
was
everything
I
found
when
I
was
sort
of
motivated,
but
it
might
might
help
to
have
a
fresh
set
of
eyes.
E
That's
the
thing
I
mean,
I
think
this
drops
straight
into
the
current
interface.
I
think
you
can
make
this
entire
change
in
the
transaction
object
later
on,
we'll
make
further
changes
to
do
the
actual
handle
based
thing,
but
I
think
this
is
independent
from
the
handle
base,
change,
right,
search
and
you.
B
B
E
B
B
We
want
to
get
rid
of
that.
That's
my
mom
yeah
one
question
I
had
was
whether
said
that
the
things
in
thinking
about
what
goes
into
file
store
up,
that
fixed
sized
structure
that
is
small
but
not
necessarily
fixed
sized,
that
the
thing
that
stands
out
is
the
exciters,
have
a
name
and
usually
they're
small,
but
not
always
I
guess
you
might
as
well
just
point
off
into
yeah.
There's
no
reason
that
should
just
shoving
I
the
buffer
list.
B
B
B
Yet
so
I
so
I
think
at
the
way
I
understood
this.
This
file
store
up
is
actually
going
to
be
like
it's
going
to
be
64,
bytes
and
basically
fixed
size,
and
it's
going
to
be
a
union
with
a
bunch
of
named
members
in
there
and
OPLAN
is
just
gonna,
be
basically
64
bytes
every
single
time,
and
the
only
reason
we
would
put
that
lengthen.
There's
in
case
we
needed
more
fields,
did
I
understand
that
right
or
I
thought.
E
C
C
C
D
B
D
B
B
A
C
B
E
C
B
The
key
is
short:
you
mean
in
that
there's
only
one
key
yeah
or
in
general
yeah,
yeah,
I
I
think
you
could
do
the
same
thing
with
static
sadder
also
because,
like
every
every
app
is
going
to
have
ascetic
sadder
on
that
underscore
attribute,
that's
one
bite
that
you
could
have.
We
could
have
it
either
in
line
in
the
structure
if
it's
short
or
otherwise
it'll
point
into
the
buffer.
If
it's
long
that
type
of
thing
yeah.
E
D
B
E
B
In
the
room
but
I
think
but
I
think
you
still
have
there's
there's,
even
if
you,
even
if
you're,
passing
passing
around
these
maps
at
in
sort
of
an
encoded
form
or
it's
just
a
blob
of
data
that
has
the
structure
of
number
of
entries,
whatever
the
way.
The
same
way,
we
encode
the
stl
list,
even
if
we
pass
that
into
the
key
value,
DV
interface,
abstract
interface,
instead
of
passing
it
as
an
STL
map,
but
pass
it
as
that
blob.
B
E
B
Might
look
at
right,
but
it,
but
you
could
pass
it
as
an
encoded
buffer
and
iterate
across
the
buffer
and
build
the
level
to
be
transaction
instead
of
decoding
and
allocating
a
bunch
of
memory
as
an
STL
map
and
then
iterating
over
the
in-memory
map.
All
right,
let's
get
that
you
could
skip
that
allocation
step
and
just
walk
over
the
yeah.
B
Yeah,
because
even
then,
then
that
would
mean
ideally
that
the
omap
calls
all
the
way
on
the
climate
would
be
encoded
into
a
buffer
once
and
that
buffer
would
be
sent
over
the
wire
and
bundled
into
a
transaction
and
sent
all
the
way
down
to
the
low
level
back
in
store
before
they
get.
Then
they
would
never
be
decoded
and
re-encoded.
Basically
right,
we
might
have
to
have
a
validation
step
where
we
walk
the
walk,
the
encoding
just
to
make
sure
it
is
it's
valid
put
ice,
in
fact
that
make
sense.