]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
ceph: make ceph file layout helpers take a pointer
authorAlex Elder <elder@dreamhost.com>
Thu, 8 Mar 2012 22:51:28 +0000 (16:51 -0600)
committerAlex Elder <elder@dreamhost.com>
Mon, 9 Apr 2012 15:15:16 +0000 (10:15 -0500)
Make the helpers for accessing the fields of an on-disk ceph file
layout structure take the address of a layout structure rather than
the structure itself.  It's more useful (and to my eye a bit more
normal).

Use the result in ceph_file_layout_stripe_width() and
ceph_file_layout_period(), since it's now possible/natural.

Rename ceph_file_layout_su() to be ceph_file_layout_stripe_unit().

Signed-off-by: Alex Elder <elder@dreamhost.com>
fs/ceph/ioctl.c
fs/ceph/xattr.c
include/linux/ceph/ceph_fs.h

index 790914a598dd5d68b8f40b851c2faff2e790e4af..23cb78b0e178017d84d4bb461caaaa05bde7f680 100644 (file)
@@ -22,9 +22,9 @@ static long ceph_ioctl_get_layout(struct file *file, void __user *arg)
 
        err = ceph_do_getattr(file->f_dentry->d_inode, CEPH_STAT_CAP_LAYOUT);
        if (!err) {
-               l.stripe_unit = ceph_file_layout_su(ci->i_layout);
-               l.stripe_count = ceph_file_layout_stripe_count(ci->i_layout);
-               l.object_size = ceph_file_layout_object_size(ci->i_layout);
+               l.stripe_unit = ceph_file_layout_stripe_unit(&ci->i_layout);
+               l.stripe_count = ceph_file_layout_stripe_count(&ci->i_layout);
+               l.object_size = ceph_file_layout_object_size(&ci->i_layout);
                l.data_pool = le32_to_cpu(ci->i_layout.fl_pg_pool);
                l.preferred_osd =
                        (s32)le32_to_cpu(ci->i_layout.fl_pg_preferred);
@@ -52,9 +52,9 @@ static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
        /* validate changed params against current layout */
        err = ceph_do_getattr(file->f_dentry->d_inode, CEPH_STAT_CAP_LAYOUT);
        if (!err) {
-               nl.stripe_unit = ceph_file_layout_su(ci->i_layout);
-               nl.stripe_count = ceph_file_layout_stripe_count(ci->i_layout);
-               nl.object_size = ceph_file_layout_object_size(ci->i_layout);
+               nl.stripe_unit = ceph_file_layout_stripe_unit(&ci->i_layout);
+               nl.stripe_count = ceph_file_layout_stripe_count(&ci->i_layout);
+               nl.object_size = ceph_file_layout_object_size(&ci->i_layout);
                nl.data_pool = le32_to_cpu(ci->i_layout.fl_pg_pool);
                nl.preferred_osd =
                                (s32)le32_to_cpu(ci->i_layout.fl_pg_preferred);
@@ -203,8 +203,8 @@ static long ceph_ioctl_get_dataloc(struct file *file, void __user *arg)
        ceph_calc_file_object_mapping(&ci->i_layout, dl.file_offset, &len,
                                      &dl.object_no, &dl.object_offset, &olen);
        dl.file_offset -= dl.object_offset;
-       dl.object_size = ceph_file_layout_object_size(ci->i_layout);
-       dl.block_size = ceph_file_layout_su(ci->i_layout);
+       dl.object_size = ceph_file_layout_object_size(&ci->i_layout);
+       dl.block_size = ceph_file_layout_stripe_unit(&ci->i_layout);
 
        /* block_offset = object_offset % block_size */
        tmp = dl.object_offset;
index 35b86331d8a5ce84c311e9eb2730757f80149179..322888807fa733906e0f36e8462cee294c3ea0bb 100644 (file)
@@ -115,16 +115,16 @@ static size_t ceph_vxattrcb_file_layout(struct ceph_inode_info *ci, char *val,
 
        ret = snprintf(val, size,
                "chunk_bytes=%lld\nstripe_count=%lld\nobject_size=%lld\n",
-               (unsigned long long)ceph_file_layout_su(ci->i_layout),
-               (unsigned long long)ceph_file_layout_stripe_count(ci->i_layout),
-               (unsigned long long)ceph_file_layout_object_size(ci->i_layout));
+               (unsigned long long)ceph_file_layout_stripe_unit(&ci->i_layout),
+               (unsigned long long)ceph_file_layout_stripe_count(&ci->i_layout),
+               (unsigned long long)ceph_file_layout_object_size(&ci->i_layout));
 
-       if (ceph_file_layout_pg_preferred(ci->i_layout) >= 0) {
+       if (ceph_file_layout_pg_preferred(&ci->i_layout) >= 0) {
                val += ret;
                size -= ret;
                ret += snprintf(val, size, "preferred_osd=%lld\n",
                            (unsigned long long)ceph_file_layout_pg_preferred(
-                                   ci->i_layout));
+                                   &ci->i_layout));
        }
 
        return ret;
index 62e3bb3539f1fadee6eca2c9bbcfe201d80edb18..264570482150f641de27e45bb923c7d1941f3b3d 100644 (file)
@@ -74,32 +74,34 @@ struct ceph_file_layout {
  */
 
 #define CEPH_MIN_STRIPE_UNIT 65536
-#define ceph_file_layout_su(l) ((__s32)le32_to_cpu((l).fl_stripe_unit))
+#define ceph_file_layout_stripe_unit(l) \
+               ((__s32) le32_to_cpu((l)->fl_stripe_unit))
 #define ceph_file_layout_stripe_count(l) \
-       ((__s32)le32_to_cpu((l).fl_stripe_count))
-#define ceph_file_layout_object_size(l) ((__s32)le32_to_cpu((l).fl_object_size))
-#define ceph_file_layout_cas_hash(l) ((__s32)le32_to_cpu((l).fl_cas_hash))
-#define ceph_file_layout_object_su(l) \
-       ((__s32)le32_to_cpu((l).fl_object_stripe_unit))
+               ((__s32) le32_to_cpu((l)->fl_stripe_count))
+#define ceph_file_layout_object_size(l) \
+               ((__s32) le32_to_cpu((l)->fl_object_size))
+#define ceph_file_layout_cas_hash(l) \
+               ((__s32) le32_to_cpu((l)->fl_cas_hash))
+#define ceph_file_layout_object_stripe_unit(l) \
+               ((__s32) le32_to_cpu((l)->fl_object_stripe_unit))
 #define ceph_file_layout_pg_preferred(l) \
-       ((__s32)le32_to_cpu((l).fl_pg_preferred))
+               ((__s32) le32_to_cpu((l)->fl_pg_preferred))
 #define ceph_file_layout_pg_pool(l) \
-       ((__s32)le32_to_cpu((l).fl_pg_pool))
+               ((__s32) le32_to_cpu((l)->fl_pg_pool))
 
 static inline unsigned ceph_file_layout_stripe_width(struct ceph_file_layout *l)
 {
-       return le32_to_cpu(l->fl_stripe_unit) *
-               le32_to_cpu(l->fl_stripe_count);
+       return (unsigned) (ceph_file_layout_stripe_unit(l) *
+                               ceph_file_layout_stripe_count(l));
 }
 
 /* "period" == bytes before i start on a new set of objects */
 static inline unsigned ceph_file_layout_period(struct ceph_file_layout *l)
 {
-       return le32_to_cpu(l->fl_object_size) *
-               le32_to_cpu(l->fl_stripe_count);
+       return (unsigned) (ceph_file_layout_object_size(l) *
+                               ceph_file_layout_stripe_count(l));
 }
 
-
 int ceph_file_layout_is_valid(const struct ceph_file_layout *layout);
 
 struct ceph_dir_layout {