Whamcloud - gitweb
LU-4690 lod: separate master object with master stripe 11/9511/37
authorwang di <di.wang@intel.com>
Thu, 3 Apr 2014 13:09:24 +0000 (06:09 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 8 May 2014 04:15:19 +0000 (04:15 +0000)
commit60e07b972114df24105a3a1bfa7365892f72a4a7
tree7e6b7917c049a59b7a29f0915f3f0520e76f8854
parent5f432f4ff1717352aaacb93959d6353b8468f88b
LU-4690 lod: separate master object with master stripe

Separate master stripe with master object, so
1. stripeEA only exists on master object.
2. sub-stripe object will be inserted into master object
as sub-directory, and it can get the master object by "..".

By this, it will remove those specilities for stripe0 in
LMV and LOD. And also simplify LFSCK, i.e. consistency check
would be easier.

And also after this separation, LOD will know whether iterating
the whole stripe or single stripe eaisly, i.e. for master_object,
it will iterate the whole stripes, for sub_stripe, it will only
iterate the single stripe.

This patch also fixes a few things in osp orphan iteration, to
make it work with remote dir entry iteration.

When then master object becomes an orphan, we should
mark all of its sub-stripes as dead object as well,
otherwise client might still be able to create files
under these stripes.

A few fixes for striped directory layout lock:

1. stripe 0 should be locked as EX, same as other stripes.
2. Acquire the layout for directory, when it is being unliked.

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: I6212fb97a2360664b48e0a75424a89c857da2043
Reviewed-on: http://review.whamcloud.com/9511
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
41 files changed:
lustre/include/dt_object.h
lustre/include/lustre/lustre_idl.h
lustre/include/lustre/lustre_user.h
lustre/include/lustre_lmv.h
lustre/include/md_object.h
lustre/include/obd.h
lustre/include/obd_class.h
lustre/llite/dir.c
lustre/llite/llite_lib.c
lustre/lmv/lmv_intent.c
lustre/lmv/lmv_internal.h
lustre/lmv/lmv_obd.c
lustre/lod/lod_internal.h
lustre/lod/lod_lov.c
lustre/lod/lod_object.c
lustre/mdc/mdc_internal.h
lustre/mdc/mdc_locks.c
lustre/mdc/mdc_reint.c
lustre/mdc/mdc_request.c
lustre/mdd/mdd_dir.c
lustre/mdd/mdd_internal.h
lustre/mdd/mdd_object.c
lustre/mdd/mdd_permission.c
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_internal.h
lustre/mdt/mdt_lib.c
lustre/mdt/mdt_reint.c
lustre/obdclass/dt_object.c
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_internal.h
lustre/osd-zfs/osd_handler.c
lustre/osd-zfs/osd_index.c
lustre/osd-zfs/osd_internal.h
lustre/osp/osp_dev.c
lustre/osp/osp_internal.h
lustre/osp/osp_md_object.c
lustre/osp/osp_object.c
lustre/target/out_handler.c
lustre/target/tgt_internal.h
lustre/tests/sanity.sh
lustre/utils/liblustreapi.c