mutex_lock(&session->s_mutex);
session->s_seq++;
+ dout(20, " mds%d seq %lld\n", session->s_mds, session->s_seq);
/* lookup ino */
inode = ceph_find_inode(sb, vino);
- dout(20, "op %d ino %llx inode %p\n", op, vino.ino, inode);
+ dout(20, " op %d ino %llx inode %p\n", op, vino.ino, inode);
if (!inode) {
- dout(10, "i don't have ino %llx, sending release\n", vino.ino);
+ dout(10, " i don't have ino %llx, sending release\n", vino.ino);
send_cap(mdsc, vino.ino, CEPH_CAP_OP_RELEASE, 0, 0, seq,
size, 0, 0, 0, 0, 0, 0, mds);
goto no_inode;
case CEPH_CAP_OP_GRANT:
up_write(&mdsc->snap_rwsem);
if (handle_cap_grant(inode, h, session) == 1) {
- dout(10, "sending reply back to mds%d\n", mds);
+ dout(10, " sending reply back to mds%d\n", mds);
ceph_msg_get(msg);
ceph_send_msg_mds(mdsc, msg, mds);
}
default:
up_write(&mdsc->snap_rwsem);
- derr(10, "unknown cap op %d %s\n", op, ceph_cap_op_name(op));
+ derr(10, " unknown cap op %d %s\n", op, ceph_cap_op_name(op));
}
iput(inode);
dout(10, "waiting for sessions to close\n");
mutex_unlock(&mdsc->mutex);
+ up_write(&mdsc->snap_rwsem);
wait_for_completion(&mdsc->session_close_waiters);
mutex_lock(&mdsc->mutex);
+ down_write(&mdsc->snap_rwsem);
}
WARN_ON(!list_empty(&mdsc->cap_delay_list));