Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
b=21454 Disable cl_page_in_io check for append write.
[fs/lustre-release.git]
/
lustre
/
obdclass
/
lustre_handles.c
diff --git
a/lustre/obdclass/lustre_handles.c
b/lustre/obdclass/lustre_handles.c
index
23d25dc
..
b8b07ba
100644
(file)
--- a/
lustre/obdclass/lustre_handles.c
+++ b/
lustre/obdclass/lustre_handles.c
@@
-16,8
+16,8
@@
* in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU General Public License
* in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
[sun.com URL with a
- *
copy of GPLv2].
+ * version 2 along with this program; If not, see
+ *
http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
@@
-177,7
+177,7
@@
void class_handle_hash_back(struct portals_handle *h)
void *class_handle2object(__u64 cookie)
{
struct handle_bucket *bucket;
void *class_handle2object(__u64 cookie)
{
struct handle_bucket *bucket;
- struct
list_head *tmp
;
+ struct
portals_handle *h
;
void *retval = NULL;
ENTRY;
void *retval = NULL;
ENTRY;
@@
-188,9
+188,7
@@
void *class_handle2object(__u64 cookie)
bucket = handle_hash + (cookie & HANDLE_HASH_MASK);
rcu_read_lock();
bucket = handle_hash + (cookie & HANDLE_HASH_MASK);
rcu_read_lock();
- list_for_each_rcu(tmp, &bucket->head) {
- struct portals_handle *h;
- h = list_entry(tmp, struct portals_handle, h_link);
+ list_for_each_entry_rcu(h, &bucket->head, h_link) {
if (h->h_cookie != cookie)
continue;
if (h->h_cookie != cookie)
continue;
@@
-222,6
+220,8
@@
void class_handle_free_cb(struct rcu_head *rcu)
int class_handle_init(void)
{
struct handle_bucket *bucket;
int class_handle_init(void)
{
struct handle_bucket *bucket;
+ struct timeval tv;
+ int seed[2];
LASSERT(handle_hash == NULL);
LASSERT(handle_hash == NULL);
@@
-235,6
+235,12
@@
int class_handle_init(void)
CFS_INIT_LIST_HEAD(&bucket->head);
spin_lock_init(&bucket->lock);
}
CFS_INIT_LIST_HEAD(&bucket->head);
spin_lock_init(&bucket->lock);
}
+
+ /** bug 21430: add randomness to the initial base */
+ ll_get_random_bytes(seed, sizeof(seed));
+ do_gettimeofday(&tv);
+ ll_srand(tv.tv_sec ^ seed[0], tv.tv_usec ^ seed[1]);
+
ll_get_random_bytes(&handle_base, sizeof(handle_base));
LASSERT(handle_base != 0ULL);
ll_get_random_bytes(&handle_base, sizeof(handle_base));
LASSERT(handle_base != 0ULL);
@@
-246,12
+252,10
@@
static void cleanup_all_handles(void)
int i;
for (i = 0; i < HANDLE_HASH_SIZE; i++) {
int i;
for (i = 0; i < HANDLE_HASH_SIZE; i++) {
- struct list_head *tmp, *pos;
- spin_lock(&handle_hash[i].lock);
- list_for_each_safe_rcu(tmp, pos, &(handle_hash[i].head)) {
- struct portals_handle *h;
- h = list_entry(tmp, struct portals_handle, h_link);
+ struct portals_handle *h;
+ spin_lock(&handle_hash[i].lock);
+ list_for_each_entry_rcu(h, &(handle_hash[i].head), h_link) {
CERROR("force clean handle "LPX64" addr %p addref %p\n",
h->h_cookie, h, h->h_addref);
CERROR("force clean handle "LPX64" addr %p addref %p\n",
h->h_cookie, h, h->h_addref);