- Better errors when the LDLM service can't be started
- Remove unnecessary flag from OSC lock cancellation in clear_inode
- If lov_enqueue fails to allocate a lock, zero the handle, so that we don't
try to decref a bad handle (and LBUG) later
- data locks weren't cancelled at clear_inode time (290, 311)
- intent locks could lead to unbounded lock growth (205)
- added a maximum lock count, an LRU list, and a flusher
- data locks weren't cancelled at clear_inode time (290, 311)
- intent locks could lead to unbounded lock growth (205)
- added a maximum lock count, an LRU list, and a flusher
+ - fix multiple rename (365)
* protocol change
- Add capability to MDS protocol
- LDLM cancellations and callbacks on different portals
* protocol change
- Add capability to MDS protocol
- LDLM cancellations and callbacks on different portals
LDLM_CB_REPLY_PORTAL, "self",
ldlm_callback_handler, "ldlm_cbd");
LDLM_CB_REPLY_PORTAL, "self",
ldlm_callback_handler, "ldlm_cbd");
- if (!ldlm->ldlm_cb_service)
+ if (!ldlm->ldlm_cb_service) {
+ CERROR("failed to start service\n");
GOTO(out_proc, rc = -ENOMEM);
GOTO(out_proc, rc = -ENOMEM);
ldlm->ldlm_cancel_service =
ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE,
ldlm->ldlm_cancel_service =
ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE,
LDLM_CANCEL_REPLY_PORTAL, "self",
ldlm_cancel_handler, "ldlm_canceld");
LDLM_CANCEL_REPLY_PORTAL, "self",
ldlm_cancel_handler, "ldlm_canceld");
- if (!ldlm->ldlm_cancel_service)
+ if (!ldlm->ldlm_cancel_service) {
+ CERROR("failed to start service\n");
GOTO(out_proc, rc = -ENOMEM);
GOTO(out_proc, rc = -ENOMEM);
for (i = 0; i < LDLM_NUM_THREADS; i++) {
char name[32];
for (i = 0; i < LDLM_NUM_THREADS; i++) {
char name[32];
- rc = obd_cancel_unused(&sbi->ll_osc_conn, lli->lli_smd,
- LDLM_FL_NO_CALLBACK);
+ rc = obd_cancel_unused(&sbi->ll_osc_conn, lli->lli_smd, 0);
if (rc < 0) {
CERROR("obd_cancel_unused: %d\n", rc);
/* XXX FIXME do something dramatic */
if (rc < 0) {
CERROR("obd_cancel_unused: %d\n", rc);
/* XXX FIXME do something dramatic */
parent_lock, type, &sub_ext, sizeof(sub_ext),
mode, flags, cb, data, datalen, &(lockhs[i]));
// XXX add a lock debug statement here
parent_lock, type, &sub_ext, sizeof(sub_ext),
mode, flags, cb, data, datalen, &(lockhs[i]));
// XXX add a lock debug statement here
CERROR("Error enqueue objid "LPX64" subobj "LPX64
" on OST idx %d: rc = %d\n", lsm->lsm_object_id,
loi->loi_id, loi->loi_ost_idx, rc);
CERROR("Error enqueue objid "LPX64" subobj "LPX64
" on OST idx %d: rc = %d\n", lsm->lsm_object_id,
loi->loi_id, loi->loi_ost_idx, rc);
+ memset(&(lockhs[i]), 0, sizeof(lockhs[i]));
+ }