Whamcloud - gitweb
LU-3534 osp: send updates by separate thread 25/12825/37
authorWang Di <di.wang@intel.com>
Sun, 23 Nov 2014 04:06:55 +0000 (20:06 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 11 Jun 2015 16:11:24 +0000 (16:11 +0000)
commit2fe22edfe3c365b5c270050fdeed0a86fa74a919
tree0c3cea4ad1c451630e0c58cc49ae5834e126199b
parenta153a0cae400c8643dee0a5f574b9e5cac71ed54
LU-3534 osp: send updates by separate thread

Sending updates to other MDT by separate thread, so

1. The thread will sends the update by version number, i.e.
lower version of update will be sent first.

2. If one operation includes updates on several MDTs, these
updates can be sent on different MDTs in parallel. Though in
transaction stop (top_trans_stop()), the top transaction needs
to wait all sub transaction stop their transaction (i.e. updates
have been executed on all MDTs), then return.

3. Move dt_update_request to osp layer, since it is only OSP layer
thing, and each OSP transaction will create the osp_update_request
and attached to the list of OSP sending thread.

4. Change lgh_hdr_lock from spinlock to rw_semaphore, because if
the llog object is remote object, it will go into osp_md_write_obj,
where it might be blocked by memory allocation.

5. a few cleanups for the pervious DNE patches
http://review.whamcloud.com/11572
http://review.whamcloud.com/11737
see LU-6691, LU-6692, LU-6693.

Change-Id: I2dde892e4ca4bf74c2cd56e16bb1125920365334
Signed-off-by: Wang Di <di.wang@intel.com>
Reviewed-on: http://review.whamcloud.com/12825
Tested-by: Jenkins
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
19 files changed:
lustre/include/dt_object.h
lustre/include/lu_object.h
lustre/include/lu_target.h
lustre/include/lustre_log.h
lustre/include/lustre_update.h
lustre/ldlm/ldlm_lib.c
lustre/lod/lod_dev.c
lustre/obdclass/llog.c
lustre/obdclass/llog_osd.c
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/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/osp/osp_trans.c
lustre/target/out_handler.c
lustre/target/update_recovery.c
lustre/target/update_trans.c