Whamcloud - gitweb
Widesweeping change to support different-sized LOV MD data (b=307,345, and
authoradilger <adilger>
Tue, 12 Nov 2002 18:50:19 +0000 (18:50 +0000)
committeradilger <adilger>
Tue, 12 Nov 2002 18:50:19 +0000 (18:50 +0000)
commit34c6bb9dce43f0f418f03a517b846a27e128a268
tree428c604cefbb92fb56113b07a512fc6906545dd5
parent0ed15fe68acb3f89a655f94ba69d0bc8d0762a32
Widesweeping change to support different-sized LOV MD data (b=307,345, and
partially 314).  The goal is to remove all knowledge of MD data from llite
and the MDS, and keep it solely inside OSC and LOV.  The change is not
entirely complete (for enh 314) in that we still pass "struct lov_stripe_md"
and "struct lov_mds_md" structs around, but that was mostly for sanity to
avoid getting the two screwed up during this large amount of change.

OSC passes runtests, and LOV has a _huge_ bug in it that dies after a
single file copy+cleanup, so that's why it's on a branch.

This adds two new OBD API methods (I'm not totally stuck on the names yet):
- o_packmd to alloc/pack/free data for wire transport and storage on disk
- o_unpackmd to alloc/pack/free data for in-memory and storage on disk

There are helper functions obd_{alloc,size,free}_{mem,wire}md() which call
the above two OBD API methods with the correct parameters to just allocate
or size or free an MD.  This totally isolates anything outside LOV/OSC from
knowing anything of the internals of the MD data struct, and lays the
groundwork for LOV stacking in the future.

The user-space LOV striping setup has also changed slightly to use the
"MDS/wire/disk" MD format for communication instead of the in-memory
MD format, and the lovstripe.c test, utils/lfind.c and new utils/lstripe.c
program (formerly makestripe.c from Kevin Harlan) have been updated to use
this new interface.  The lstripe.c utility allows easy creation of files
with a specific striping pattern.
lustre/llite/dir.c