From: Xing Lin <xinglin@cs.utah.edu>
To: "ceph-devel@vger.kernel.org" <ceph-devel@vger.kernel.org>
Cc: Xing Lin <xinglin@cs.utah.edu>
Subject: which Linux kernel version corresponds to 0.48argonaut?
Date: Thu, 20 Dec 2012 11:54:02 -0700 [thread overview]
Message-ID: <50D35ECA.4040602@cs.utah.edu> (raw)
Hi,
I was trying to add a simple replica placement algorithm in Ceph. This
algorithm simply returns r_th item in a bucket for the r_th replica. I
have made that change in Ceph source code (including files such as
crush.h, crush.c, mapper.c, ...) and I can run Ceph monitor and osd
daemons. However, I am not able to map rbd block devices at client
machines. 'rbd map image0' reported "input/output error" and 'dmesg' at
the client machine showed message like "libceph: handle_map corrupt
msg". I believe that is because I have not ported my changes to Ceph
client side programs and it does not recognize the new placement
algorithm. I probably need to recompile the rbd block device driver.
When I was trying to replace Ceph related files in Linux with my own
version, I noticed that files in Linux-3.2.16 are different from these
included in Ceph source code. For example, the following is the diff of
crush.h in Linux-3.2.16 and 0.48argonaut. So, my question is that is
there any version of Linux that contains the exact Ceph files as
included in 0.48argonaut? Thanks.
-------------------
$ diff -uNrp ceph-0.48argonaut/src/crush/crush.h
linux-3.2.16/include/linux/crush/crush.h
--- ceph-0.48argonaut/src/crush/crush.h 2012-06-26 11:56:36.000000000
-0600
+++ linux-3.2.16/include/linux/crush/crush.h 2012-04-22
16:31:32.000000000 -0600
@@ -1,12 +1,7 @@
#ifndef CEPH_CRUSH_CRUSH_H
#define CEPH_CRUSH_CRUSH_H
-#if defined(__linux__)
#include <linux/types.h>
-#elif defined(__FreeBSD__)
-#include <sys/types.h>
-#include "include/inttypes.h"
-#endif
/*
* CRUSH is a pseudo-random data distribution algorithm that
@@ -156,24 +151,25 @@ struct crush_map {
struct crush_bucket **buckets;
struct crush_rule **rules;
+ /*
+ * Parent pointers to identify the parent bucket a device or
+ * bucket in the hierarchy. If an item appears more than
+ * once, this is the _last_ time it appeared (where buckets
+ * are processed in bucket id order, from -1 on down to
+ * -max_buckets.
+ */
+ __u32 *bucket_parents;
+ __u32 *device_parents;
+
__s32 max_buckets;
__u32 max_rules;
__s32 max_devices;
-
- /* choose local retries before re-descent */
- __u32 choose_local_tries;
- /* choose local attempts using a fallback permutation before
- * re-descent */
- __u32 choose_local_fallback_tries;
- /* choose attempts before giving up */
- __u32 choose_total_tries;
-
- __u32 *choose_tries;
};
/* crush.c */
-extern int crush_get_bucket_item_weight(const struct crush_bucket *b,
int pos);
+extern int crush_get_bucket_item_weight(struct crush_bucket *b, int pos);
+extern void crush_calc_parents(struct crush_map *map);
extern void crush_destroy_bucket_uniform(struct crush_bucket_uniform *b);
extern void crush_destroy_bucket_list(struct crush_bucket_list *b);
extern void crush_destroy_bucket_tree(struct crush_bucket_tree *b);
@@ -181,9 +177,4 @@ extern void crush_destroy_bucket_straw(s
extern void crush_destroy_bucket(struct crush_bucket *b);
extern void crush_destroy(struct crush_map *map);
-static inline int crush_calc_tree_node(int i)
-{
- return ((i+1) << 1)-1;
-}
-
#endif
----
Xing
next reply other threads:[~2012-12-20 18:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-20 18:54 Xing Lin [this message]
2012-12-21 1:37 ` which Linux kernel version corresponds to 0.48argonaut? Xing Lin
2013-01-05 0:29 ` Gregory Farnum
2013-01-05 0:34 ` Sage Weil
2013-01-06 1:55 ` Xing Lin
2013-01-06 3:00 ` Mark Kirkwood
2013-01-06 3:08 ` Xing Lin
2013-01-06 4:46 ` Sage Weil
2013-01-06 7:06 ` Xing Lin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50D35ECA.4040602@cs.utah.edu \
--to=xinglin@cs.utah.edu \
--cc=ceph-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.