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=20997 Enable time limit on the request to be queued
[fs/lustre-release.git]
/
lustre
/
obdclass
/
llog.c
diff --git
a/lustre/obdclass/llog.c
b/lustre/obdclass/llog.c
index
de2b350
..
202610d
100644
(file)
--- a/
lustre/obdclass/llog.c
+++ b/
lustre/obdclass/llog.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
@@
-68,7
+68,7
@@
struct llog_handle *llog_alloc_handle(void)
if (loghandle == NULL)
RETURN(ERR_PTR(-ENOMEM));
if (loghandle == NULL)
RETURN(ERR_PTR(-ENOMEM));
- init_rwsem(&loghandle->lgh_lock);
+
cfs_
init_rwsem(&loghandle->lgh_lock);
RETURN(loghandle);
}
RETURN(loghandle);
}
@@
-83,9
+83,9
@@
void llog_free_handle(struct llog_handle *loghandle)
if (!loghandle->lgh_hdr)
goto out;
if (loghandle->lgh_hdr->llh_flags & LLOG_F_IS_PLAIN)
if (!loghandle->lgh_hdr)
goto out;
if (loghandle->lgh_hdr->llh_flags & LLOG_F_IS_PLAIN)
- list_del_init(&loghandle->u.phd.phd_entry);
+
cfs_
list_del_init(&loghandle->u.phd.phd_entry);
if (loghandle->lgh_hdr->llh_flags & LLOG_F_IS_CAT)
if (loghandle->lgh_hdr->llh_flags & LLOG_F_IS_CAT)
- LASSERT(list_empty(&loghandle->u.chd.chd_head));
+ LASSERT(
cfs_
list_empty(&loghandle->u.chd.chd_head));
OBD_FREE(loghandle->lgh_hdr, LLOG_CHUNK_SIZE);
out:
OBD_FREE(loghandle->lgh_hdr, LLOG_CHUNK_SIZE);
out:
@@
-100,17
+100,17
@@
int llog_cancel_rec(struct llog_handle *loghandle, int index)
int rc = 0;
ENTRY;
int rc = 0;
ENTRY;
- CDEBUG(D_RPCTRACE, "
c
anceling %d in log "LPX64"\n",
+ CDEBUG(D_RPCTRACE, "
C
anceling %d in log "LPX64"\n",
index, loghandle->lgh_id.lgl_oid);
if (index == 0) {
index, loghandle->lgh_id.lgl_oid);
if (index == 0) {
- CERROR("
cannot cancel index 0 (which is header)
\n");
+ CERROR("
Can't cancel index 0 which is header
\n");
RETURN(-EINVAL);
}
if (!ext2_clear_bit(index, llh->llh_bitmap)) {
RETURN(-EINVAL);
}
if (!ext2_clear_bit(index, llh->llh_bitmap)) {
- CDEBUG(D_RPCTRACE, "
c
atalog index %u already clear?\n", index);
- RETURN(-E
INVAL
);
+ CDEBUG(D_RPCTRACE, "
C
atalog index %u already clear?\n", index);
+ RETURN(-E
NOENT
);
}
llh->llh_count--;
}
llh->llh_count--;
@@
-120,7
+120,7
@@
int llog_cancel_rec(struct llog_handle *loghandle, int index)
(loghandle->lgh_last_idx == (LLOG_BITMAP_BYTES * 8) - 1)) {
rc = llog_destroy(loghandle);
if (rc) {
(loghandle->lgh_last_idx == (LLOG_BITMAP_BYTES * 8) - 1)) {
rc = llog_destroy(loghandle);
if (rc) {
- CERROR("
f
ailure destroying log after last cancel: %d\n",
+ CERROR("
F
ailure destroying log after last cancel: %d\n",
rc);
ext2_set_bit(index, llh->llh_bitmap);
llh->llh_count++;
rc);
ext2_set_bit(index, llh->llh_bitmap);
llh->llh_count++;
@@
-132,7
+132,7
@@
int llog_cancel_rec(struct llog_handle *loghandle, int index)
rc = llog_write_rec(loghandle, &llh->llh_hdr, NULL, 0, NULL, 0);
if (rc) {
rc = llog_write_rec(loghandle, &llh->llh_hdr, NULL, 0, NULL, 0);
if (rc) {
- CERROR("
f
ailure re-writing header %d\n", rc);
+ CERROR("
F
ailure re-writing header %d\n", rc);
ext2_set_bit(index, llh->llh_bitmap);
llh->llh_count++;
}
ext2_set_bit(index, llh->llh_bitmap);
llh->llh_count++;
}
@@
-237,19
+237,20
@@
static int llog_process_thread(void *arg)
if (!buf) {
lpi->lpi_rc = -ENOMEM;
#ifdef __KERNEL__
if (!buf) {
lpi->lpi_rc = -ENOMEM;
#ifdef __KERNEL__
- complete(&lpi->lpi_completion);
+ c
fs_c
omplete(&lpi->lpi_completion);
#endif
return 0;
}
#endif
return 0;
}
- cfs_daemonize_ctxt("llog_process_thread");
+ if (!(lpi->lpi_flags & LLOG_FLAG_NODEAMON))
+ cfs_daemonize_ctxt("llog_process_thread");
if (cd != NULL) {
if (cd != NULL) {
- last_called_index = cd->first_idx;
- index = cd->first_idx + 1;
+ last_called_index = cd->
lpcd_
first_idx;
+ index = cd->
lpcd_
first_idx + 1;
}
}
- if (cd != NULL && cd->last_idx)
- last_index = cd->last_idx;
+ if (cd != NULL && cd->l
pcd_l
ast_idx)
+ last_index = cd->l
pcd_l
ast_idx;
else
last_index = LLOG_BITMAP_BYTES * 8 - 1;
else
last_index = LLOG_BITMAP_BYTES * 8 - 1;
@@
-323,10
+324,6
@@
static int llog_process_thread(void *arg)
lpi->lpi_cbdata);
last_called_index = index;
if (rc == LLOG_PROC_BREAK) {
lpi->lpi_cbdata);
last_called_index = index;
if (rc == LLOG_PROC_BREAK) {
- CDEBUG(D_HA, "recovery from log: "LPX64
- ":%x stopped\n",
- loghandle->lgh_id.lgl_oid,
- loghandle->lgh_id.lgl_ogen);
GOTO(out, rc);
} else if (rc == LLOG_DEL_RECORD) {
llog_cancel_rec(loghandle,
GOTO(out, rc);
} else if (rc == LLOG_DEL_RECORD) {
llog_cancel_rec(loghandle,
@@
-348,18
+345,18
@@
static int llog_process_thread(void *arg)
out:
if (cd != NULL)
out:
if (cd != NULL)
- cd->last_idx = last_called_index;
+ cd->l
pcd_l
ast_idx = last_called_index;
if (buf)
OBD_FREE(buf, LLOG_CHUNK_SIZE);
lpi->lpi_rc = rc;
#ifdef __KERNEL__
if (buf)
OBD_FREE(buf, LLOG_CHUNK_SIZE);
lpi->lpi_rc = rc;
#ifdef __KERNEL__
- complete(&lpi->lpi_completion);
+ c
fs_c
omplete(&lpi->lpi_completion);
#endif
return 0;
}
#endif
return 0;
}
-int llog_process(struct llog_handle *loghandle, llog_cb_t cb,
-
void *data, void *catdata
)
+int llog_process
_flags
(struct llog_handle *loghandle, llog_cb_t cb,
+
void *data, void *catdata, int flags
)
{
struct llog_process_info *lpi;
int rc;
{
struct llog_process_info *lpi;
int rc;
@@
-374,16
+371,17
@@
int llog_process(struct llog_handle *loghandle, llog_cb_t cb,
lpi->lpi_cb = cb;
lpi->lpi_cbdata = data;
lpi->lpi_catdata = catdata;
lpi->lpi_cb = cb;
lpi->lpi_cbdata = data;
lpi->lpi_catdata = catdata;
+ lpi->lpi_flags = flags;
#ifdef __KERNEL__
#ifdef __KERNEL__
- init_completion(&lpi->lpi_completion);
+
cfs_
init_completion(&lpi->lpi_completion);
rc = cfs_kernel_thread(llog_process_thread, lpi, CLONE_VM | CLONE_FILES);
if (rc < 0) {
CERROR("cannot start thread: %d\n", rc);
OBD_FREE_PTR(lpi);
RETURN(rc);
}
rc = cfs_kernel_thread(llog_process_thread, lpi, CLONE_VM | CLONE_FILES);
if (rc < 0) {
CERROR("cannot start thread: %d\n", rc);
OBD_FREE_PTR(lpi);
RETURN(rc);
}
- wait_for_completion(&lpi->lpi_completion);
+
cfs_
wait_for_completion(&lpi->lpi_completion);
#else
llog_process_thread(lpi);
#endif
#else
llog_process_thread(lpi);
#endif
@@
-391,6
+389,13
@@
int llog_process(struct llog_handle *loghandle, llog_cb_t cb,
OBD_FREE_PTR(lpi);
RETURN(rc);
}
OBD_FREE_PTR(lpi);
RETURN(rc);
}
+EXPORT_SYMBOL(llog_process_flags);
+
+int llog_process(struct llog_handle *loghandle, llog_cb_t cb,
+ void *data, void *catdata)
+{
+ return llog_process_flags(loghandle, cb, data, catdata, 0);
+}
EXPORT_SYMBOL(llog_process);
inline int llog_get_size(struct llog_handle *loghandle)
EXPORT_SYMBOL(llog_process);
inline int llog_get_size(struct llog_handle *loghandle)
@@
-415,9
+420,9
@@
int llog_reverse_process(struct llog_handle *loghandle, llog_cb_t cb,
RETURN(-ENOMEM);
if (cd != NULL)
RETURN(-ENOMEM);
if (cd != NULL)
- first_index = cd->first_idx + 1;
- if (cd != NULL && cd->last_idx)
- index = cd->last_idx;
+ first_index = cd->
lpcd_
first_idx + 1;
+ if (cd != NULL && cd->l
pcd_l
ast_idx)
+ index = cd->l
pcd_l
ast_idx;
else
index = LLOG_BITMAP_BYTES * 8 - 1;
else
index = LLOG_BITMAP_BYTES * 8 - 1;
@@
-462,10
+467,6
@@
int llog_reverse_process(struct llog_handle *loghandle, llog_cb_t cb,
if (ext2_test_bit(index, llh->llh_bitmap)) {
rc = cb(loghandle, rec, data);
if (rc == LLOG_PROC_BREAK) {
if (ext2_test_bit(index, llh->llh_bitmap)) {
rc = cb(loghandle, rec, data);
if (rc == LLOG_PROC_BREAK) {
- CWARN("recovery from log: "LPX64":%x"
- " stopped\n",
- loghandle->lgh_id.lgl_oid,
- loghandle->lgh_id.lgl_ogen);
GOTO(out, rc);
}
if (rc)
GOTO(out, rc);
}
if (rc)