Project

General

Profile

Actions

Subtask #4007

closed

Feature #2851: krbd: RBD layering support

Subtask #2854: krbd: write path

libceph: support STAT osd operation

Added by Alex Elder about 11 years ago. Updated about 11 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

In order to do layered writes we need to check whether
an object to be written exists before issuing the write.
This is done with a CEPH_OSD_OP_STAT osd operation, which
is not currently supported in the kernel osd client.

Actions #1

Updated by Alex Elder about 11 years ago

It wasn't really possible to know this up front but
it looks like this is trivial. I've basically
completed it but won't post it for review until
some more of this related code is done (to make sure
there's no more to add).

Actions #2

Updated by Alex Elder about 11 years ago

  • Target version set to v0.58
Actions #3

Updated by Alex Elder about 11 years ago

This has turned out to be simple change. It was needed in
rbd as well, and I'll just add support to both under this
one issue.

Actions #4

Updated by Alex Elder about 11 years ago

  • Status changed from New to Fix Under Review

A patch implementing this has been posted to the
ceph-devel mailing list for review.

[PATCH] libceph: allow STAT osd operations

Actions #5

Updated by Alex Elder about 11 years ago

  • Status changed from Fix Under Review to 7

Josh has reviewed this. Testing again before committing
to be included in the testing branch.

Actions #6

Updated by Alex Elder about 11 years ago

  • Status changed from 7 to Resolved
  • Translation missing: en.field_remaining_hours set to 0.00

commit fbfab53966b279f9cdb36b96ffa1e22f042c96ff
Author: Alex Elder <>
Date: Fri Feb 8 09:55:48 2013 -0600

libceph: allow STAT osd operations
Add support for CEPH_OSD_OP_STAT operations in the osd client
and in rbd.
This operation sends no data to the osd; everything required is
encoded in identity of the target object.
The result will be ENOENT if the object doesn't exist.  If it does
exist and no other error occurs the server returns the size and last
modification time of the target object as output data (in little
endian format). The size is a 64 bit unsigned and the time is
ceph_timespec structure (two unsigned 32-bit integers, representing
a seconds and nanoseconds value).
This resolves:
http://tracker.ceph.com/issues/4007
Signed-off-by: Alex Elder &lt;&gt;
Reviewed-by: Josh Durgin &lt;&gt;
Actions

Also available in: Atom PDF