Whamcloud - gitweb
LU-5 readdir read multiple pages per rpc
authorLai Siyao <laisiyao@whamcloud.com>
Thu, 26 May 2011 13:44:47 +0000 (06:44 -0700)
committerOleg Drokin <green@whamcloud.com>
Fri, 15 Jul 2011 00:38:07 +0000 (17:38 -0700)
commit58f3eb928f563f24f0b3ee41970fa23a59fdcb87
tree92b7b851f09036975906f23860eabb7033457299
parent8d1508dc531ae166346c3084604855069f30c117
LU-5 readdir read multiple pages per rpc

add support for readdir to read multiple pages per rpc:
* because client has no idea how many directory pages it can read, it
  tries to read maximum pages each time, but will only store pages
  read from mds into page cache.
* add a flag LDF_COLLIDE to mark a dir page hash collides with the
  next page, and client will remove this page from page cache after
  processing.
* upon readpage bulk io failure, client won't be evicted, and client
  will resend the bulk request.
* support large page size on client: MDS_READPAGE RPC will fill reply
  with page size LU_PAGE_SIZE(4k), and if client page is bigger than
  LU_PAGE_SIZE, several pages will be integrated into one dir page with
  CFS_PAGE_SIZE.

Signed-off-by: Lai Siyao <laisiyao@whamcloud.com>
Change-Id: Id6bc36fbcec79993d49bbe9a535851e5e3ebd876
Reviewed-on: http://review.whamcloud.com/604
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
27 files changed:
lustre/autoconf/lustre-core.m4
lustre/cmm/mdc_device.c
lustre/include/linux/lustre_compat25.h
lustre/include/lprocfs_status.h
lustre/include/lustre/lustre_idl.h
lustre/include/lustre_lib.h
lustre/include/md_object.h
lustre/include/obd.h
lustre/include/obd_class.h
lustre/ldlm/ldlm_lib.c
lustre/liblustre/dir.c
lustre/llite/dir.c
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/lmv/lmv_obd.c
lustre/mdc/lproc_mdc.c
lustre/mdc/mdc_request.c
lustre/mdd/mdd_object.c
lustre/mdt/mdt_handler.c
lustre/obdclass/lprocfs_status.c
lustre/osc/lproc_osc.c
lustre/osc/osc_internal.h
lustre/osc/osc_request.c
lustre/ost/ost_handler.c
lustre/ptlrpc/import.c
lustre/tests/sanity.sh
lustre/utils/wirecheck.c