[LU-147] avoid 8k obd device amount limit Created: 18/Mar/11  Updated: 22/Jan/24  Resolved: 22/Jan/24

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.1.0
Fix Version/s: Lustre 2.1.0

Type: Improvement Priority: Minor
Reporter: Vitaly Fertman Assignee: Jian Yu
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Duplicate
duplicates LU-8802 Dynamically allocate obd_devices. Open
Related
Severity: 3
Rank (Obsolete): 5065

 Description   

It includes the following changes:

  • 8k obd device amount limit is avoided;
  • a lookup speed in device list is improved via hashes;
  • some code optimisations and cleanups are added.


 Comments   
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #511
LU-147 hash code cleanup

Vitaly Fertman : 8889363dd26bee895809295436fc7017259bb693
Files :

  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/obd_config.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/lu_object.c
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #512
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : 3c3b9ca6a88e87bd98e677672e13b4ba05a1e1a5
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/class_obd.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/cl_object.c
  • lustre/obdclass/obd_config.c
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #517
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : f68eb51c3cd410989a3ad3b2cd5593f282afa395
Files :

  • lustre/llite/llite_lib.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/cl_object.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #518
LU-147 hash code cleanup

Vitaly Fertman : 3d58291cb91260bac962dc5c23879255fc82ec08
Files :

  • lustre/ptlrpc/connection.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/lu_object.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/include/libcfs/libcfs_hash.h
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #519
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : 5ec8a65a763953e88a64694a027572a85832c101
Files :

  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/include/obd.h
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #520
LU-147 hash code cleanup

Vitaly Fertman : 96de751185998438faef1798e19fba5e3ad379e7
Files :

  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/quota/quota_context.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/ptlrpc/connection.c
Comment by Build Master (Inactive) [ 18/Mar/11 ]

Integrated in reviews-centos5 #521
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : 5cbd3b1b19ae77798e2ef07ab648101604830720
Files :

  • lustre/obdclass/cl_object.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 24/Mar/11 ]

Integrated in reviews-centos5 #554
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : 023da459e191cdcf612b848c20a2b844632b33e7
Files :

  • lustre/llite/llite_lib.c
  • lustre/obdclass/obd_config.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 24/Mar/11 ]

Integrated in reviews-centos5 #555
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : a03ab9ff2e13c07df9f466c38b90ca6c34eb9ea5
Files :

  • lustre/obdclass/obd_config.c
  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/genops.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 24/Mar/11 ]

Integrated in reviews-centos5 #556
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/cl_object.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/lov/lov_pool.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ldlm/ldlm_resource.c
Comment by Peter Jones [ 30/Mar/11 ]

Yu Jian

Could you please look into landing this fix from Xyratex for 2.1?

Thanks

Peter

Comment by Jian Yu [ 01/Apr/11 ]

Hi Vitaly,

Could you please re-upload the patches to Gerrit to trigger Hudson building them again against the latest master branch which has a fix to the blocker for running replay-single, replay-dual, etc. tests?

Thanks.

Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • lustre/quota/quota_context.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/obd_config.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/cl_object.c
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ptlrpc/connection.c
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/include/libcfs/libcfs_hash.h
  • libcfs/libcfs/hash.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/quota/quota_context.c
  • lustre/obdclass/lu_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/obdclass/obd_config.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/lu_object.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/quota/quota_context.c
  • lustre/obdclass/cl_object.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/cl_object.c
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/lu_object.c
  • lustre/lov/lov_pool.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/obd_config.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/libcfs/hash.c
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_resource.c
Comment by Build Master (Inactive) [ 05/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #90
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/quota/quota_context.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/lu_object.c
  • lustre/quota/quota_context.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ptlrpc/connection.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • lustre/quota/quota_context.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/quota/quota_context.c
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/cl_object.c
  • lustre/ptlrpc/connection.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/lu_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/obdclass/cl_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/lu_object.c
  • libcfs/libcfs/hash.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/include/libcfs/libcfs_hash.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/obd_config.c
  • libcfs/include/libcfs/libcfs_hash.h
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/cl_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/lov/lov_pool.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/cl_object.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/lu_object.c
  • libcfs/libcfs/hash.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/lov/lov_pool.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #91
LU-147 hash code cleanup

Vitaly Fertman : fbd396d9cdf90912584a76caa7efbb15173c47bb
Files :

  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/lu_object.c
  • libcfs/libcfs/hash.c
  • lustre/lov/lov_pool.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/obd_config.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/include/libcfs/libcfs_hash.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/class_obd.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • lustre/liblustre/super.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/linux/linux-module.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd_class.h
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • lustre/include/obd.h
  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/genops.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • lustre/liblustre/super.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/class_obd.c
  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #98
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_user.h
  • lustre/lov/lov_pool.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/ldlm/ldlm_lockd.c
  • lustre/lov/lov_pool.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/lu_object.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/cl_object.c
  • lustre/ptlrpc/connection.c
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/lu_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/lov/lov_pool.c
  • lustre/obdclass/lu_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/cl_object.c
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/lov/lov_pool.c
  • libcfs/libcfs/hash.c
  • lustre/quota/quota_context.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/lov/lov_pool.c
  • lustre/quota/quota_context.c
  • libcfs/include/libcfs/libcfs_hash.h
  • libcfs/libcfs/hash.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/ptlrpc/connection.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #99
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/lu_object.c
  • lustre/obdclass/obd_config.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/quota/quota_context.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/class_obd.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/class_obd.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/include/obd.h
  • lustre/include/obd_class.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/obd_config.c
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/genops.c
  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #100
LU-147 avoid 8k obd device amount limit

Vitaly Fertman : c6fc5431afd8d5dd18958f7a3a0e6d8f87a0461b
Files :

  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-x86_64 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/quota/quota_context.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-x86_64 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/cl_object.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_user.h
  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • libcfs/libcfs/hash.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el5-i686 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/ldlm/ldlm_resource.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,ubuntu-x86_64 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/lu_object.c
  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ptlrpc/connection.c
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » client,el6-i686 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/ldlm/ldlm_resource.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/lov/lov_pool.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/lu_object.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/obd_config.c
  • lustre/include/lustre/lustre_user.h
  • lustre/quota/quota_context.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el6-i686 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/lov/lov_pool.c
  • lustre/obdclass/lu_object.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/quota/quota_context.c
  • lustre/obdclass/obd_config.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-x86_64 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/obd_config.c
  • lustre/quota/quota_context.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/libcfs/hash.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 06/Apr/11 ]

Integrated in lustre-reviews » server,el5-i686 #101
LU-147 hash code cleanup

Vitaly Fertman : f9556ed8872fe30ed660c6b5a75f5aee6ef6f6b4
Files :

  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/cl_object.c
  • lustre/obdclass/lu_object.c
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » client,el5-x86_64 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_user.h
  • lustre/obdclass/lu_object.c
  • lustre/obdclass/obd_config.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/obdclass/cl_object.c
  • lustre/quota/quota_context.c
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master-centos5 #199
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/include/lustre/lustre_idl.h
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/lu_object.c
  • libcfs/libcfs/hash.c
  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ldlm/ldlm_lockd.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » client,el5-i686 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/obdclass/cl_object.c
  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/lov/lov_pool.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » client,ubuntu-x86_64 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_resource.c
  • lustre/ptlrpc/connection.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_idl.h
  • libcfs/libcfs/hash.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/obd_config.c
  • lustre/quota/quota_context.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/obdclass/cl_object.c
  • lustre/obdclass/lu_object.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » server,el6-x86_64 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/ldlm/ldlm_resource.c
  • lustre/include/lustre/lustre_idl.h
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/quota/quota_context.c
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » client,el6-i686 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_user.h
  • lustre/ptlrpc/connection.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/obdclass/lu_object.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/include/lustre/lustre_idl.h
  • lustre/lov/lov_pool.c
  • lustre/obdclass/cl_object.c
  • lustre/ldlm/ldlm_resource.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » server,el5-x86_64 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/ldlm/ldlm_resource.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/ldlm/ldlm_lockd.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/lu_object.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/quota/quota_context.c
  • lustre/obdclass/cl_object.c
  • lustre/lov/lov_pool.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » client,el6-x86_64 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/obdclass/obd_config.c
  • lustre/quota/quota_context.c
  • lustre/lov/lov_pool.c
  • lustre/obdclass/lu_object.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
  • libcfs/libcfs/hash.c
  • lustre/ptlrpc/connection.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/include/lustre/lustre_user.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
Comment by Build Master (Inactive) [ 18/Apr/11 ]

Integrated in lustre-master » server,el5-i686 #27
LU-147 hash code cleanup

Oleg Drokin : 673f374637d090ba8c4a2cec48eb250b42d2dfa8
Files :

  • lustre/obdclass/lu_object.c
  • lustre/lov/lov_pool.c
  • lustre/include/lustre/lustre_user.h
  • libcfs/libcfs/hash.c
  • lustre/quota/quota_context.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ptlrpc/connection.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_resource.c
  • libcfs/include/libcfs/libcfs_hash.h
  • lustre/obdclass/cl_object.c
  • lustre/obdclass/obd_config.c
Comment by Jian Yu [ 18/Apr/11 ]

The patches were pushed to master branch in the fs/lustre-release repository. The issue was resolved.

Comment by Jian Yu [ 18/Apr/11 ]

The issue has been resolved. Let's close it.

Comment by Jian Yu [ 19/Apr/11 ]

The patches in http://review.whamcloud.com/#change,347 are still in progress. Let's reopen this ticket.

Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/genops.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/llite/llite_lib.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/liblustre/super.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • lustre/liblustre/super.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/llite/llite_lib.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/genops.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
  • lustre/llite/llite_lib.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/liblustre/super.c
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,ofa #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/include/obd_class.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/liblustre/super.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/linux/linux-module.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/llite/llite_lib.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
  • lustre/liblustre/super.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/obd_config.c
  • lustre/include/obd_class.h
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/genops.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » i686,client,el5,ofa #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/obd_config.c
  • lustre/include/obd.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • libcfs/libcfs/hash.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » i686,server,el5,ofa #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 20/Apr/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #39
LU-147 avoid 8k obd device amount limit

Oleg Drokin : 7d818af6449c9005b2dd7cb213d38d6ad61bf178
Files :

  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
Comment by Jian Yu [ 20/Apr/11 ]

All of the patches were pushed to master branch in the fs/lustre-release repository. The issue was resolved.

Comment by Jian Yu [ 20/Apr/11 ]

The issue has been resolved. Let's close it.

Comment by Jinshan Xiong (Inactive) [ 01/Jun/11 ]

This patch needs reworking because it may cause failure at cleanup. I have seen this issue multiple times recently.

Unable to handle kernel paging request at 00000000deadbeef RIP:
[<ffffffff88af6679>] :mdc:mdc_cleanup+0xf9/0x370
PGD 0
Oops: 0002 [1] SMP
last sysfs file: /devices/pci0000:00/0000:00:01.0/0000:01:00.1/irq
CPU 0
Modules linked in: lmv(U) mgc(U) lustre(U) lov(U) osc(U) lquota(U) mdc(U) fid(U) fld(U) ko2iblnd(U) ptlrpc(U) obdclass(U) lnet(U) lvfs(U) libcfs(U) nfs fscache nfs_acl autofs4 hidp rfcomm l2cap bluetooth lockd sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf be2iscsi iscsi_tcp bnx2i cnic uio cxgb3i iw_cxgb3 cxgb3 libiscsi_tcp ib_iser libiscsi2 scsi_transport_iscsi2 scsi_transport_iscsi ib_srp rds ib_sdp ib_ipoib ipoib_helper ipv6 xfrm_nalgo crypto_api rdma_ucm rdma_cm ib_ucm ib_uverbs ib_umad ib_cm iw_cm ib_addr ib_sa loop dm_mirror dm_multipath scsi_dh video backlight sbs power_meter hwmon i2c_ec dell_wmi wmi button battery asus_acpi acpi_memhotplug ac parport_pc lp parport mlx4_ib ib_mad ib_core mlx4_en joydev sg i7core_edac i2c_i801 edac_mc igb shpchp pcspkr i2c_core mlx4_core 8021q serio_raw dca tpm_tis tpm tpm_bios dm_raid45 dm_message dm_region_hash dm_log dm_mod dm_mem_cache ahci libata sd_mod scsi_mod ext3 jbd uhci_hcd ohci_hcd ehci_hcd
Pid: 7594, comm: ll_cfg_requeue Tainted: G 2.6.18-238.9.1.el5 #1
RIP: 0010:[<ffffffff88af6679>] [<ffffffff88af6679>] :mdc:mdc_cleanup+0xf9/0x370
RSP: 0000:ffff810181353b20 EFLAGS: 00010246
RAX: 00000000deadbeef RBX: ffff8102883346e8 RCX: ffff81032e594980
RDX: 5a5a5a5a5a5a5a5a RSI: 0000000000000000 RDI: ffff81032e594380
RBP: ffff8102883341b8 R08: 5a5a5a5a5a5a5a5a R09: 5a5a5a5a5a5a5a5a
R10: 5a5a5a5a5a5a5a5a R11: 5a5a5a5a5a5a5a5a R12: ffff810181353c60
R13: 0000000000000000 R14: 0000000000000000 R15: ffff810059485c60
FS: 00002b6e9d3a06e0(0000) GS:ffffffff80426000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00000000deadbeef CR3: 0000000000201000 CR4: 00000000000006e0
Process ll_cfg_requeue (pid: 7594, threadinfo ffff810181352000, task ffff810321e86860)
Stack: 0000000000000286 0000000000000000 ffff8102883341b8 ffff810181353c60
0000000000000006 0000000000000000 ffff8102883341b8 ffffffff888e3f6f
0000000000000000 0000000000000000 ffffffff8892b0f8 ffff8102883341e8
Call Trace:
[<ffffffff888e3f6f>] :obdclass:class_decref+0x43f/0x5b0
[<ffffffff88b659f7>] :osc:osc_set_info_async+0x3f7/0xb40
[<ffffffff888cb155>] :obdclass:obd_devlist_next+0x65/0x80
[<ffffffff888ccf4c>] :obdclass:class_notify_sptlrpc_conf+0x46c/0x490
[<ffffffff88a03e13>] :ptlrpc:sptlrpc_conf_get+0x33/0x270
[<ffffffff88a03cde>] :ptlrpc:logname2fsname+0xae/0xd0
[<ffffffff888c18f7>] :obdclass:__llog_ctxt_put+0x27/0x270
[<ffffffff88cb9528>] :mgc:mgc_process_cfg_log+0x1b08/0x1c90
[<ffffffff889a5294>] :ptlrpc:ldlm_cli_enqueue+0x664/0x730
[<ffffffff889bdcd6>] :ptlrpc:__ptlrpc_req_finished+0x6e6/0x850
[<ffffffff88cb9e42>] :mgc:mgc_process_log+0x792/0x970
[<ffffffff88cbb200>] :mgc:mgc_blocking_ast+0x0/0x460
[<ffffffff889a7320>] :ptlrpc:ldlm_completion_ast+0x0/0x6a0
[<ffffffff88cba0f4>] :mgc:do_requeue+0xd4/0x170
[<ffffffff88cbcfaa>] :mgc:mgc_requeue_thread+0x32a/0x570
[<ffffffff8008e437>] default_wake_function+0x0/0xe
[<ffffffff8005dfb1>] child_rip+0xa/0x11
[<ffffffff88cbcc80>] :mgc:mgc_requeue_thread+0x0/0x570
[<ffffffff8005dfa7>] child_rip+0x0/0x11
==============================

I just looked into this issue roughly. It seems that the implementation of obd_devlist_XYZ() are not correct. It causes class_decref() and then obd_cleanup() to be called multiple times.

Comment by Jinshan Xiong (Inactive) [ 02/Jun/11 ]

I was trying to fix this patch, but I realize it might be better for the author to do it instead.

Roughly, these are the problems I found in the patch:
1. in obd_devlist_XYZ, it grabs a refcount to obd_device{} w/o doing any check, this is racy because class_decref() relies on the refcount to check if the device is being freed. This causes dual free problem we have seen a lot of times recently;
2. class_find_client_obd() returns an unreferenced object. Basically people like the code to be written as follows:

        obd = class_find_client_obd();
        use the obd;
        class_decref(obd);

3. However, class_devices_in_group() returns a referenced obd_device{}, this is not in sync with class_find_client_obd(). The interfaces are really confusing;
4. Coding skills
4.1 cfs_list_entry_safe() defined in genops.c, this is really not good. safe in cfs_list series macros means the list may be changed. We should use cfs_list_entry_continue here.
4.2 in client_find_client_obd(), the code is really hard to understand, maybe we should revise it as:

            if (obd_uuid_equals(tgt_uuid, &obd->u.cli.cl_target_uuid) &&
                                 (!guuid || obd_uuid_equals(guuid, &obd->obd_uuid)))

4.3 obd_devlist_first() and obd_devlist_next() should be coded as:

           struct obd_device *obd_devlist_first(void);
           struct obd_device *obd_devlist_next(struct obd_device *);

in this way, the iteration to obd device list would be:

           for (obd = obd_devlist_first(); obd != NULL; obd = obd_devlist_next(obd))

I think this is easier to understand.
5. I stopped working on this patch then

I'm not picky to challenge you guys, but this code is annoying to me because when I have to mount and umount thousands of mount points on one nodes, it always dies to reference freed memory.

Comment by Andreas Dilger [ 03/Jun/11 ]

I agree that having class_find_client_obd() not return a reference is a problem. It looks like there are only a limited number of callsites for this function. In particular, mdc_obd_add() and mdt_seq_init_cli() could be cleaned up a bit to have the normal "if (mdc == NULL) GOTO(cleanup, rc);" structure instead of nested "if (!mdc) else if (...)" structure, so that it makes it easier to add the class_decref(mdc) at the cleanup: label on errors.

One other confusing issue about the current patch is that it didn't remove MAX_OBD_DEVICES or obd_devs[]. I was looking at master recently and I saw those definitions and thought this patch hadn't been landed yet (putting it on my mental list of "we need to get our act together to get this patch landed" . Please remove those definitions, and all mentions to them in the comments (a few places in genops.c and obd_config.c).

Also, please address the minor issues in v8 of your patch in http://review.whamcloud.com/#change,347

Jinshan,
if you have a partially-completed patch, can you please attach it here.

Comment by Jinshan Xiong (Inactive) [ 03/Jun/11 ]

The patch is incomplete. Here are some work remaining:
1. We have to make sure that the obd devices have at least 1 refcount to stay in obd_dev_list and hash list, this means class_attach() should be modified;
2. pull the freeing obd device out of uuid_hash, etc earlier, better in class_detach;
3. the patch is not even compiled.

diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c
index 8b00ad9..c8bfbf5 100644
--- a/lustre/obdclass/genops.c
+++ b/lustre/obdclass/genops.c
@@ -509,36 +509,40 @@ const char *obd_dev_status(struct obd_device *obd)
         return status;
 }
 
-#define cfs_list_entry_safe(pos, head, type, member)  \
-        (pos == head ? NULL : cfs_list_entry(pos, type, member))
-
-void obd_devlist_first(struct obd_device **pos)
+struct obd_device *obd_devlist_first(void)
 {
         struct obd_device *obd;
+        struct obd_device *founc = NULL;
 
         cfs_spin_lock(&obd_dev_lock);
-        obd = cfs_list_entry_safe(obd_dev_list.next, &obd_dev_list,
-                                  struct obd_device, obd_list);
-        if (obd != NULL)
-                class_incref(obd, "devlist", obd);
+        cfs_list_for_each_entry(obd, &obd_dev_list, obd_list) {
+                if (cfs_atomic_read(&obd->obd_refcount) > 0) {
+                        found = obd;
+                        class_incref(obd, "devlist", obd);
+                        break;
+                }
+        }
         cfs_spin_unlock(&obd_dev_lock);
-
-        *pos = obd;
+        return found;
 }
 
-void obd_devlist_next(struct obd_device **pos)
+struct obd_device *obd_devlist_next(struct obd_device *obd)
 {
-        struct obd_device *obd = NULL;
+        struct obd_device *tmp   = obd;
+        struct obd_device *found = NULL;
 
         cfs_spin_lock(&obd_dev_lock);
-        obd = cfs_list_entry_safe((*pos)->obd_list.next, &obd_dev_list,
-                                  struct obd_device, obd_list);
-        if (obd)
-                class_incref(obd, "devlist", obd);
+        cfs_list_for_each_entry_continue(tmp, &obd_dev_list, obd_list) {
+                if (cfs_atomic_read(&tmp->obd_refcount) > 0) {
+                        found = tmp;
+                        class_incref(tmp, "devlist", tmp);
+                        break;
+                }
+        }
         cfs_spin_unlock(&obd_dev_lock);
 
-        class_decref(*pos, "devlist", *pos);
-        *pos = obd;
+        class_decref(obd, "devlist", obd);
+        return found;
 }
 
 void obd_devlist_last(struct obd_device *pos)
@@ -694,10 +698,9 @@ void class_obd_list(void)
         const char *status;
         struct obd_device *obd;
 
-        for (obd_devlist_first(&obd);
+        for (obd = obd_devlist_first();
              obd != NULL;
-             obd_devlist_next(&obd)) {
-
+             obd = obd_devlist_next(obd)) {
                 status = obd_dev_status(obd);
                 LCONSOLE(D_CONFIG, "%3d %s %s %s %s %d\n",
                          obd->obd_minor, status, obd->obd_type->typ_name,
@@ -710,29 +713,28 @@ void class_obd_list(void)
 /* Search for a client OBD connected to tgt_uuid.  If grp_uuid is
    specified, then only the client with that uuid is returned,
    otherwise any client connected to the tgt is returned. */
-struct obd_device * class_find_client_obd(struct obd_uuid *tgt_uuid,
-                                          const char * typ_name,
-                                          struct obd_uuid *grp_uuid)
+struct obd_device *class_find_client_obd(struct obd_uuid *tgt_uuid,
+                                         const char *name,
+                                         struct obd_uuid *guuid)
 {
         struct obd_device *obd;
+        struct obd_device *found = NULL;
 
-        for (obd_devlist_first(&obd);
+        for (obd = obd_devlist_first();
              obd != NULL;
-             obd_devlist_next(&obd)) {
+             obd = obd_devlist_next(obd)) {
                 /* XXX per type list ? */
-                if ((strncmp(obd->obd_type->typ_name, typ_name,
-                             strlen(typ_name)) == 0)) {
-                        if (obd_uuid_equals(tgt_uuid,
-                                            &obd->u.cli.cl_target_uuid) &&
-                            ((grp_uuid)? obd_uuid_equals(grp_uuid,
-                                                         &obd->obd_uuid) : 1)) {
-                                obd_devlist_last(obd);
-                                return obd;
-                        }
+                if (strncmp(obd->obd_type->typ_name, name, strlen(name)))
+                        continue;
+
+                if (obd_uuid_equals(tgt_uuid, &obd->u.cli.cl_target_uuid) &&
+                    (!guuid || obd_uuid_equals(guuid, &obd->obd_uuid))) {
+                        found = obd;
+                        break;
                 }
         }
 
-        return NULL;
+        return found;
 }
 
 /* Iterate the obd_device list looking devices have grp_uuid. Start
diff --git a/lustre/obdclass/obd_config.c b/lustre/obdclass/obd_config.c
index 6b493c7..f44175b 100644
--- a/lustre/obdclass/obd_config.c
+++ b/lustre/obdclass/obd_config.c
@@ -579,17 +579,10 @@ int class_cleanup(struct obd_device *obd, struct lustre_cfg *lcfg)
 
         LASSERT(obd->obd_self_export);
 
-        /* The three references that should be remaining are the
-         * obd_self_export and the attach and setup references. */
-        if (cfs_atomic_read(&obd->obd_refcount) > 3) {
-                /* refcounf - 3 might be the number of real exports
-                   (excluding self export). But class_incref is called
-                   by other things as well, so don't count on it. */
-                CDEBUG(D_IOCTL, "%s: forcing exports to disconnect: %d\n",
-                       obd->obd_name, cfs_atomic_read(&obd->obd_refcount) - 3);
-                dump_exports(obd, 0);
-                class_disconnect_exports(obd);
-        }
+        CDEBUG(D_IOCTL, "%s: forcing exports to disconnect: %d\n",
+               obd->obd_name, cfs_atomic_read(&obd->obd_refcount) - 3);
+        dump_exports(obd, 0);
+        class_disconnect_exports(obd);
 
         /* destroy an uuid-export hash body */
         if (obd->obd_uuid_hash) {
@@ -614,6 +607,20 @@ int class_cleanup(struct obd_device *obd, struct lustre_cfg *lcfg)
         if (err)
                 CERROR("Precleanup %s returned %d\n",
                        obd->obd_name, err);
+
+        /* cleanup self export */
+        if (obd->obd_self_export) {
+                /* All exports have been destroyed; there should
+                   be no more in-progress ops by this point.*/
+                cfs_spin_lock(&obd->obd_self_export->exp_lock);
                                                                                                                       
+                obd->obd_self_export->exp_flags |= exp_flags_from_obd(obd);
+                cfs_spin_unlock(&obd->obd_self_export->exp_lock);
+
+                /* note that we'll recurse into class_decref again */
+                class_unlink_export(obd->obd_self_export);
+                obd->obd_self_export = NULL;
+        }
+
         class_decref(obd, "setup", obd);
         obd->obd_set_up = 0;
         RETURN(0);
@@ -622,10 +629,12 @@ int class_cleanup(struct obd_device *obd, struct lustre_cfg *lcfg)
 struct obd_device *class_incref(struct obd_device *obd,
                                 const char *scope, const void *source)
 {
+        LASSERT(cfs_atomic_read(&obd->obd_refcount) > 0);
         lu_ref_add_atomic(&obd->obd_reference, scope, source);
         cfs_atomic_inc(&obd->obd_refcount);
-        CDEBUG(D_INFO, "incref %s (%p) now %d\n", obd->obd_name, obd,
-               cfs_atomic_read(&obd->obd_refcount));
+
+        CDEBUG(D_INFO, "incref %s (%p) at %s:%s, now %d\n", obd->obd_name, obd,
+               scope, source, cfs_atomic_read(&obd->obd_refcount));
 
         return obd;
 }
@@ -633,29 +642,20 @@ struct obd_device *class_incref(struct obd_device *obd,
 void class_decref(struct obd_device *obd, const char *scope, const void *source)
 {
         int err;
-        int refs;
 
-        refs = cfs_atomic_dec_return(&obd->obd_refcount);
-        lu_ref_del(&obd->obd_reference, scope, source);
-
-        CDEBUG(D_INFO, "Decref %s (%p) now %d\n", obd->obd_name, obd, refs);
-
-        if ((refs == 1) && obd->obd_stopping) {
-                /* All exports have been destroyed; there should
-                   be no more in-progress ops by this point.*/
-
-                cfs_spin_lock(&obd->obd_self_export->exp_lock);
-                obd->obd_self_export->exp_flags |= exp_flags_from_obd(obd);
-                cfs_spin_unlock(&obd->obd_self_export->exp_lock);
+        CDEBUG(D_INFO, "decref %s (%p) at %s:%s now %d\n", obd->obd_name, obd,
+               scope, source, cfs_atomic_read(&obd->obd_refcount));
-                /* note that we'll recurse into class_decref again */
-                class_unlink_export(obd->obd_self_export);
-                return;
-        }
+        LASSERT(cfs_atomic_read(&obd->obd_refcount) > 0);
+        lu_ref_del(&obd->obd_reference, scope, source);
+        if (cfs_atomic_dec_and_lock(&obd->obd_refcount, &obd_dev_lock)) {
+                cfs_list_del(&obd->obd_list);
+                cfs_spin_unlock(&obd_dev_lock);
 
-        if (refs == 0) {
                 CDEBUG(D_CONFIG, "finishing cleanup of obd %s (%s)\n",
                        obd->obd_name, obd->obd_uuid.uuid);
+
+                LASSERT(obd->obd_self_export == NULL);
                 LASSERT(!obd->obd_attached);
                 if (obd->obd_stopping) {
                         /* If we're not stopping, we were never set up */
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/obd_config.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/obd_config.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd.h
  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,client,el5,ofa #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
  • lustre/include/obd_class.h
  • lustre/obdclass/obd_config.c
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd.h
  • lustre/liblustre/super.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/obdclass/class_obd.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd.h
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/obdclass/genops.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • lustre/include/obd_class.h
  • lustre/llite/llite_lib.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
  • lustre/liblustre/super.c
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,ofa #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/liblustre/super.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,server,el5,ofa #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/liblustre/super.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • libcfs/libcfs/hash.c
  • lustre/llite/llite_lib.c
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
  • lustre/obdclass/genops.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/llite/llite_lib.c
  • lustre/obdclass/obd_config.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/genops.c
  • lustre/liblustre/super.c
  • lustre/include/obd_class.h
  • lustre/obdclass/class_obd.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/obdclass/linux/linux-module.c
  • libcfs/libcfs/hash.c
  • lustre/include/obd_class.h
  • lustre/liblustre/super.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/obd_config.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd.h
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/liblustre/super.c
  • lustre/llite/llite_lib.c
  • lustre/include/obd_class.h
  • lustre/obdclass/genops.c
  • lustre/include/obd.h
  • libcfs/libcfs/hash.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/obdclass/obd_config.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/include/obd.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • lustre/obdclass/genops.c
  • lustre/obdclass/class_obd.c
  • lustre/include/obd_class.h
  • libcfs/libcfs/hash.c
Comment by Build Master (Inactive) [ 03/Jun/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #147
Revert "LU-147 avoid 8k obd device amount limit"

Oleg Drokin : 5fca452acd936a75051ce3d0d8c588a7513c19aa
Files :

  • lustre/include/obd_class.h
  • lustre/obdclass/obd_config.c
  • lustre/obdclass/class_obd.c
  • lustre/obdclass/genops.c
  • lustre/llite/llite_lib.c
  • lustre/liblustre/super.c
  • libcfs/libcfs/hash.c
  • lustre/obdclass/linux/linux-module.c
  • lustre/include/obd.h
Comment by Peter Jones [ 04/Jun/11 ]

This patch has been reverted so this is not a blocker

Comment by Nathan Rutman [ 20/Nov/12 ]

Xyratex: MRP-167

Generated at Sat Feb 10 01:04:13 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.