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-694 config: make 'jobid_var' global
[fs/lustre-release.git]
/
lustre
/
obdclass
/
llog.c
diff --git
a/lustre/obdclass/llog.c
b/lustre/obdclass/llog.c
index
366dae8
..
fec344f
100644
(file)
--- a/
lustre/obdclass/llog.c
+++ b/
lustre/obdclass/llog.c
@@
-1,6
+1,4
@@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@
-26,7
+24,7
@@
* GPL HEADER END
*/
/*
* GPL HEADER END
*/
/*
- * Copyright
2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright
(c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
* Use is subject to license terms.
*/
/*
@@
-68,7
+66,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
+81,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
+98,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
+118,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
+130,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,12
+235,13
@@
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) {
last_called_index = cd->lpcd_first_idx;
if (cd != NULL) {
last_called_index = cd->lpcd_first_idx;
@@
-323,10
+322,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,
@@
-353,13
+348,13
@@
static int llog_process_thread(void *arg)
OBD_FREE(buf, LLOG_CHUNK_SIZE);
lpi->lpi_rc = rc;
#ifdef __KERNEL__
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
+369,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);
- rc = cfs_
kernel_thread(llog_process_thread, lpi, CLONE_VM | CLONE_FILE
S);
+
cfs_
init_completion(&lpi->lpi_completion);
+ rc = cfs_
create_thread(llog_process_thread, lpi, CFS_DAEMON_FLAG
S);
if (rc < 0) {
CERROR("cannot start thread: %d\n", rc);
OBD_FREE_PTR(lpi);
RETURN(rc);
}
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
+387,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)
@@
-462,10
+465,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)