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
LU-11089 obdclass: use an rwsem instead of lu_key_initing_cnt.
[fs/lustre-release.git]
/
lustre
/
lod
/
lod_pool.c
diff --git
a/lustre/lod/lod_pool.c
b/lustre/lod/lod_pool.c
index
da5389c
..
032d094
100644
(file)
--- a/
lustre/lod/lod_pool.c
+++ b/
lustre/lod/lod_pool.c
@@
-23,7
+23,7
@@
* Copyright 2008 Sun Microsystems, Inc. All rights reserved
* Use is subject to license terms.
*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved
* Use is subject to license terms.
*
- * Copyright (c) 2012, 201
4
Intel Corporation.
+ * Copyright (c) 2012, 201
7,
Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
*/
/*
* This file is part of Lustre, http://www.lustre.org/
@@
-260,16
+260,15
@@
static void *pool_proc_next(struct seq_file *seq, void *v, loff_t *pos)
if (*pos >= pool_tgt_count(iter->lpi_pool))
return NULL;
if (*pos >= pool_tgt_count(iter->lpi_pool))
return NULL;
+ OBD_FAIL_TIMEOUT(OBD_FAIL_OST_LIST_ASSERT, cfs_fail_val);
+
/* iterate to find a non empty entry */
prev_idx = iter->lpi_idx;
/* iterate to find a non empty entry */
prev_idx = iter->lpi_idx;
- down_read(&pool_tgt_rw_sem(iter->lpi_pool));
iter->lpi_idx++;
iter->lpi_idx++;
- if (iter->lpi_idx
=
= pool_tgt_count(iter->lpi_pool)) {
+ if (iter->lpi_idx
>
= pool_tgt_count(iter->lpi_pool)) {
iter->lpi_idx = prev_idx; /* we stay on the last entry */
iter->lpi_idx = prev_idx; /* we stay on the last entry */
- up_read(&pool_tgt_rw_sem(iter->lpi_pool));
return NULL;
}
return NULL;
}
- up_read(&pool_tgt_rw_sem(iter->lpi_pool));
(*pos)++;
/* return != NULL to continue */
return iter;
(*pos)++;
/* return != NULL to continue */
return iter;
@@
-312,6
+311,7
@@
static void *pool_proc_start(struct seq_file *seq, loff_t *pos)
iter->lpi_idx = 0;
seq->private = iter;
iter->lpi_idx = 0;
seq->private = iter;
+ down_read(&pool_tgt_rw_sem(pool));
if (*pos > 0) {
loff_t i;
void *ptr;
if (*pos > 0) {
loff_t i;
void *ptr;
@@
-346,6
+346,7
@@
static void pool_proc_stop(struct seq_file *seq, void *v)
struct lod_pool_iterator *iter = seq->private;
if (iter != NULL && iter->lpi_magic == POOL_IT_MAGIC) {
struct lod_pool_iterator *iter = seq->private;
if (iter != NULL && iter->lpi_magic == POOL_IT_MAGIC) {
+ up_read(&pool_tgt_rw_sem(iter->lpi_pool));
seq->private = iter->lpi_pool;
lod_pool_putref(iter->lpi_pool);
OBD_FREE_PTR(iter);
seq->private = iter->lpi_pool;
lod_pool_putref(iter->lpi_pool);
OBD_FREE_PTR(iter);
@@
-369,9
+370,7
@@
static int pool_proc_show(struct seq_file *seq, void *v)
LASSERT(iter->lpi_pool != NULL);
LASSERT(iter->lpi_idx <= pool_tgt_count(iter->lpi_pool));
LASSERT(iter->lpi_pool != NULL);
LASSERT(iter->lpi_idx <= pool_tgt_count(iter->lpi_pool));
- down_read(&pool_tgt_rw_sem(iter->lpi_pool));
tgt = pool_tgt(iter->lpi_pool, iter->lpi_idx);
tgt = pool_tgt(iter->lpi_pool, iter->lpi_idx);
- up_read(&pool_tgt_rw_sem(iter->lpi_pool));
if (tgt != NULL)
seq_printf(seq, "%s\n", obd_uuid2str(&(tgt->ltd_uuid)));
if (tgt != NULL)
seq_printf(seq, "%s\n", obd_uuid2str(&(tgt->ltd_uuid)));
@@
-474,8
+473,8
@@
int lod_ost_pool_init(struct ost_pool *op, unsigned int count)
op->op_array = NULL;
op->op_count = 0;
init_rwsem(&op->op_rw_sem);
op->op_array = NULL;
op->op_count = 0;
init_rwsem(&op->op_rw_sem);
- op->op_size = count;
- OBD_ALLOC(op->op_array, op->op_size
* sizeof(op->op_array[0])
);
+ op->op_size = count
* sizeof(op->op_array[0])
;
+ OBD_ALLOC(op->op_array, op->op_size);
if (op->op_array == NULL) {
op->op_size = 0;
RETURN(-ENOMEM);
if (op->op_array == NULL) {
op->op_size = 0;
RETURN(-ENOMEM);
@@
-500,21
+499,22
@@
int lod_ost_pool_init(struct ost_pool *op, unsigned int count)
int lod_ost_pool_extend(struct ost_pool *op, unsigned int min_count)
{
__u32 *new;
int lod_ost_pool_extend(struct ost_pool *op, unsigned int min_count)
{
__u32 *new;
-
int
new_size;
+
__u32
new_size;
LASSERT(min_count != 0);
LASSERT(min_count != 0);
- if (op->op_count < op->op_size)
+ if (op->op_count
* sizeof(op->op_array[0])
< op->op_size)
return 0;
return 0;
- new_size = max(min_count, 2 * op->op_size);
- OBD_ALLOC(new, new_size * sizeof(op->op_array[0]));
+ new_size = max_t(__u32, min_count * sizeof(op->op_array[0]),
+ 2 * op->op_size);
+ OBD_ALLOC(new, new_size);
if (new == NULL)
return -ENOMEM;
/* copy old array to new one */
if (new == NULL)
return -ENOMEM;
/* copy old array to new one */
- memcpy(new, op->op_array, op->op_size
* sizeof(op->op_array[0])
);
- OBD_FREE(op->op_array, op->op_size
* sizeof(op->op_array[0])
);
+ memcpy(new, op->op_array, op->op_size);
+ OBD_FREE(op->op_array, op->op_size);
op->op_array = new;
op->op_size = new_size;
op->op_array = new;
op->op_size = new_size;
@@
-617,7
+617,7
@@
int lod_ost_pool_free(struct ost_pool *op)
down_write(&op->op_rw_sem);
down_write(&op->op_rw_sem);
- OBD_FREE(op->op_array, op->op_size
* sizeof(op->op_array[0])
);
+ OBD_FREE(op->op_array, op->op_size);
op->op_array = NULL;
op->op_count = 0;
op->op_size = 0;
op->op_array = NULL;
op->op_count = 0;
op->op_size = 0;