All of struct pnfs_osd_layout is duplicated / enhanced in objio_segment the only information we used from the generic pnfs_osd_layout was the pnfs_osd_object_cred *olo_comps array and the olo_comps_index. Embed these into objio_segment directly. This patch is a part of a patchset that will convert the pnfs-obj code to use the exofs io_engine instead of duplicating it here. Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx> --- fs/nfs/objlayout/objio_osd.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c index a2cb9a3..9524d93 100644 --- a/fs/nfs/objlayout/objio_osd.c +++ b/fs/nfs/objlayout/objio_osd.c @@ -129,7 +129,7 @@ out: } struct objio_segment { - struct pnfs_osd_layout *layout; + struct pnfs_osd_object_cred *comps; unsigned mirrors_p1; unsigned stripe_unit; @@ -137,6 +137,7 @@ struct objio_segment { u64 group_depth; unsigned group_count; + unsigned comps_index; unsigned num_comps; /* variable length */ struct osd_dev *ods[1]; @@ -172,7 +173,6 @@ struct objio_state { static struct osd_dev *_device_lookup(struct pnfs_layout_hdr *pnfslay, struct objio_segment *objio_seg, unsigned comp) { - struct pnfs_osd_layout *layout = objio_seg->layout; struct pnfs_osd_deviceaddr *deviceaddr; struct nfs4_deviceid *d_id; struct osd_dev *od; @@ -180,7 +180,7 @@ static struct osd_dev *_device_lookup(struct pnfs_layout_hdr *pnfslay, struct objio_mount_type *omt = NFS_SERVER(pnfslay->plh_inode)->pnfs_ld_data; int err; - d_id = &layout->olo_comps[comp].oc_object_id.oid_device_id; + d_id = &objio_seg->comps[comp].oc_object_id.oid_device_id; od = _dev_list_find(omt, d_id); if (od) @@ -227,12 +227,11 @@ out: static int objio_devices_lookup(struct pnfs_layout_hdr *pnfslay, struct objio_segment *objio_seg) { - struct pnfs_osd_layout *layout = objio_seg->layout; - unsigned i, num_comps = layout->olo_num_comps; + unsigned i; int err; /* lookup all devices */ - for (i = 0; i < num_comps; i++) { + for (i = 0; i < objio_seg->num_comps; i++) { struct osd_dev *od; od = _device_lookup(pnfslay, objio_seg, i); @@ -242,7 +241,6 @@ static int objio_devices_lookup(struct pnfs_layout_hdr *pnfslay, } objio_seg->ods[i] = od; } - objio_seg->num_comps = num_comps; err = 0; out: @@ -308,7 +306,9 @@ int objio_alloc_lseg(void **outp, if (!objio_seg) return -ENOMEM; - objio_seg->layout = layout; + objio_seg->comps_index = layout->olo_comps_index; + objio_seg->num_comps = layout->olo_num_comps; + objio_seg->comps = layout->olo_comps; err = objio_devices_lookup(pnfslay, objio_seg); if (err) goto free_seg; @@ -488,7 +488,7 @@ static void _io_free(struct objio_state *ios) struct osd_dev * _io_od(struct objio_state *ios, unsigned dev) { - unsigned min_dev = ios->objio_seg->layout->olo_comps_index; + unsigned min_dev = ios->objio_seg->comps_index; unsigned max_dev = min_dev + ios->ol_state.num_comps; BUG_ON(dev < min_dev || max_dev <= dev); @@ -653,7 +653,7 @@ static int _io_rw_pagelist(struct objio_state *ios) unsigned devs_in_group = ios->objio_seg->group_width * ios->objio_seg->mirrors_p1; unsigned first_comp = 0; - unsigned num_comps = ios->objio_seg->layout->olo_map.odm_num_comps; + unsigned num_comps = devs_in_group * ios->objio_seg->group_count; unsigned last_pg = 0; int ret = 0; @@ -771,7 +771,7 @@ static int _read_mirrors(struct objio_state *ios, unsigned cur_comp) struct _objio_per_comp *per_dev = &ios->per_dev[cur_comp]; unsigned dev = per_dev->dev; struct pnfs_osd_object_cred *cred = - &ios->objio_seg->layout->olo_comps[dev]; + &ios->objio_seg->comps[dev]; struct osd_obj_id obj = { .partition = cred->oc_object_id.oid_partition_id, .id = cred->oc_object_id.oid_object_id, @@ -869,7 +869,7 @@ static int _write_mirrors(struct objio_state *ios, unsigned cur_comp) for (; cur_comp < last_comp; ++cur_comp, ++dev) { struct osd_request *or = NULL; struct pnfs_osd_object_cred *cred = - &ios->objio_seg->layout->olo_comps[dev]; + &ios->objio_seg->comps[dev]; struct osd_obj_id obj = { .partition = cred->oc_object_id.oid_partition_id, .id = cred->oc_object_id.oid_object_id, -- 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html