Skip to content

objlayout: Move to ORE

Boaz Harrosh linux-nfs 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest19 patches 10 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/19exofs: Rename struct ore_components comps => ocfs/exofs/exofs.h fs/exofs/inode.c fs/exofs/ore.c +2 more+64 -640 replies
2/19exofs: Remove unused data_map member from exofs_sb_infofs/exofs/exofs.h fs/exofs/super.c include/scsi/osd_ore.h+24 -380 replies
3/19ore: Make ore_striping_info and ore_calc_stripe_info publicfs/exofs/ore.c include/scsi/osd_ore.h+16 -160 replies
4/19ore/exofs: Change the type of the devices array (API change)fs/exofs/exofs.h fs/exofs/ore.c fs/exofs/super.c +1 more+94 -430 replies
5/19ore: Only IO one group at a time (API change)fs/exofs/inode.c fs/exofs/ore.c+150 -480 replies
6/19ore: cleanup: Embed an ore_striping_info inside ore_io_statefs/exofs/ore.c include/scsi/osd_ore.h+25 -370 replies
7/19ore: Remove check for ios->kern_buff in _prepare_for_striping to laterfs/exofs/ore.c+13 -230 replies
8/19exofs: Support for short read/writesfs/exofs/inode.c+26 -90 replies
9/19ore: Support for short read/writesfs/exofs/ore.c+23 -70 replies
10/19ore: Support for partial component tablefs/exofs/exofs.h fs/exofs/ore.c include/scsi/osd_ore.h+9 -30 replies
11/19ore/exofs: Define new ore_verify_layoutfs/exofs/inode.c fs/exofs/ore.c fs/exofs/super.c +1 more+80 -530 replies
12/19ore/exofs: Change ore_check_io APIfs/exofs/inode.c fs/exofs/ore.c include/scsi/osd_ore.h+24 -240 replies
13/19pnfs-obj: Remove redundant EOF from objlayout_io_statefs/nfs/objlayout/objlayout.c fs/nfs/objlayout/objlayout.h+7 -101 reply
14/19pnfs-obj: Return PNFS_NOT_ATTEMPTED in case of read/write_pagelistfs/nfs/objlayout/objio_osd.c fs/nfs/objlayout/objlayout.c fs/nfs/objlayout/objlayout.h+37 -351 reply
15/19pnfs-obj: Get rid of objlayout_{alloc,free}_io_statefs/nfs/objlayout/objio_osd.c fs/nfs/objlayout/objlayout.c fs/nfs/objlayout/objlayout.h+112 -1421 reply
16/19pnfs-obj: Rename objlayout_io_state => objlayout_io_resfs/nfs/objlayout/objio_osd.c fs/nfs/objlayout/objlayout.c fs/nfs/objlayout/objlayout.h+48 -472 replies
17/19pnfs-obj: move to ore 01: ore_layout & ore_componentsfs/nfs/objlayout/objio_osd.c+128 -1441 reply
18/19pnfs-obj: move to ore 02: move to OREfs/nfs/objlayout/objio_osd.c+59 -741 reply
19/19pnfs-obj: move to ore 03: Remove old raid enginefs/nfs/objlayout/objio_osd.c+0 -5041 reply

Reviews trailers per patch

6 of 19 patches have a Reviewed-by or Acked-by.

PatchBenny Halevy
1/19
2/19
3/19
4/19
5/19
6/19
7/19
8/19
9/19
10/19
11/19
12/19
13/19R-b
14/19R-b
15/19R-b
16/19
17/19A-b
18/19A-b
19/19A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCHSET 00/19] objlayout: Move to ORE

Submitted is the move of the objects-layout-driver to the ORE (Objects Raid Engine). Which after this patchset will be used by both the exofs file system and the objlayoutdriver. (ore.ko is its own library since last Kernel)

This code is intended for the 3.2 Kernel and is already collecting dust in linux-next. (Though the latest bits from today)

End of this week I will post the RAID5 support to ORE and both exofs and objlayoutdriver. Also meant for 3.2

Trond Hi
The First 12 patches are to the ore and exofs to make them compatible with objlayoutdriver. The pnfs-obj patches are dependent on the first part been present.
We can either submit them all through your tree. Or alternatively You can send your ACK-by: on the last 7 and I can submit them to Linus through my tree. Which ever you prefer.

Benny Hi
I please need your Review-by: to [PATCH 13/19] and [PATCH 14/19] which change code behaviour. The rest of the patches are just conversions which in theory do not add or change any functionality. (Unless there are bugs, but that's not intended)

Also, With these patches panfs-layout-driver is totally broken. Please just remove it once you rebase on these patches. With the RAID5 support it is no longer needed. I've started testing with PanFS export through the STD objlayoutdriver, hope to finish this week. (We always have the old versions)

Also tomorrow I will send the needed patch for pnfsd-exofs branch that works with these changes.

These are the list off patches:

[PATCH 01/19] exofs: Rename struct ore_components comps => oc
[PATCH 02/19] exofs: Remove unused data_map member from exofs_sb_info [PATCH 03/19] ore: Make ore_striping_info and ore_calc_stripe_info public [PATCH 04/19] ore/exofs: Change the type of the devices array (API change) [PATCH 05/19] ore: Only IO one group at a time (API change)
[PATCH 06/19] ore: cleanup: Embed an ore_striping_info inside ore_io_state [PATCH 07/19] ore: Remove check for ios->kern_buff in _prepare_for_striping to later [PATCH 08/19] exofs: Support for short read/writes
[PATCH 09/19] ore: Support for short read/writes
[PATCH 10/19] ore: Support for partial component table
[PATCH 11/19] ore/exofs: Define new ore_verify_layout
[PATCH 12/19] ore/exofs: Change ore_check_io API

Up to here are the changes need to ore and exofs so the ore can be used by the objlayoutdriver. Any review is welcome. Same API will be used for RAID4/5/6 support.

[PATCH 13/19] pnfs-obj: Remove redundant EOF from objlayout_io_state [PATCH 14/19] pnfs-obj: Return PNFS_NOT_ATTEMPTED in case of read/write_pagelist

Benny please review these two. They are independent of the ORE conversion. I think the [PATCH 14/19] might not be enough and Error handling needs "more", but the needed changes are their own patch, to come later.

[PATCH 15/19] pnfs-obj: Get rid of objlayout_{alloc,free}_io_state [PATCH 16/19] pnfs-obj: Rename objlayout_io_state => objlayout_io_res [PATCH 17/19] pnfs-obj: move to ore 01: ore_layout & ore_components [PATCH 18/19] pnfs-obj: move to ore 02: move to ORE
[PATCH 19/19] pnfs-obj: move to ore 03: Remove old raid engine

These 5 stage the move to the ore. With these patches I'm able to pass all the tests I passed with the old code. Only now with more then 500 lines of code less.

Cheers
Boaz