Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (23 commits) ceph: document unlocked d_parent accesses ceph: explicitly reference rename old_dentry parent dir in request ceph: document locking for ceph_set_dentry_offset ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug ceph: protect d_parent access in ceph_d_revalidate ceph: protect access to d_parent ceph: handle racing calls to ceph_init_dentry ceph: set dir complete frag after adding capability rbd: set blk_queue request sizes to object size ceph: set up readahead size when rsize is not passed rbd: cancel watch request when releasing the device ceph: ignore lease mask ceph: fix ceph_lookup_open intent usage ceph: only link open operations to directory unsafe list if O_CREAT|O_TRUNC ceph: fix bad parent_inode calc in ceph_lookup_open ceph: avoid carrying Fw cap during write into page cache libceph: don't time out osd requests that haven't been received ceph: report f_bfree based on kb_avail rather than diffing. ceph: only queue capsnap if caps are dirty ceph: fix snap writeback when racing with writes ...
This commit is contained in:
@@ -486,13 +486,10 @@ static void prepare_write_message(struct ceph_connection *con)
|
||||
m = list_first_entry(&con->out_queue,
|
||||
struct ceph_msg, list_head);
|
||||
con->out_msg = m;
|
||||
if (test_bit(LOSSYTX, &con->state)) {
|
||||
list_del_init(&m->list_head);
|
||||
} else {
|
||||
/* put message on sent list */
|
||||
ceph_msg_get(m);
|
||||
list_move_tail(&m->list_head, &con->out_sent);
|
||||
}
|
||||
|
||||
/* put message on sent list */
|
||||
ceph_msg_get(m);
|
||||
list_move_tail(&m->list_head, &con->out_sent);
|
||||
|
||||
/*
|
||||
* only assign outgoing seq # if we haven't sent this message
|
||||
@@ -1399,6 +1396,7 @@ static void process_ack(struct ceph_connection *con)
|
||||
break;
|
||||
dout("got ack for seq %llu type %d at %p\n", seq,
|
||||
le16_to_cpu(m->hdr.type), m);
|
||||
m->ack_stamp = jiffies;
|
||||
ceph_msg_remove(m);
|
||||
}
|
||||
prepare_read_tag(con);
|
||||
|
@@ -1085,9 +1085,15 @@ static void handle_timeout(struct work_struct *work)
|
||||
req = list_entry(osdc->req_lru.next, struct ceph_osd_request,
|
||||
r_req_lru_item);
|
||||
|
||||
/* hasn't been long enough since we sent it? */
|
||||
if (time_before(jiffies, req->r_stamp + timeout))
|
||||
break;
|
||||
|
||||
/* hasn't been long enough since it was acked? */
|
||||
if (req->r_request->ack_stamp == 0 ||
|
||||
time_before(jiffies, req->r_request->ack_stamp + timeout))
|
||||
break;
|
||||
|
||||
BUG_ON(req == last_req && req->r_stamp == last_stamp);
|
||||
last_req = req;
|
||||
last_stamp = req->r_stamp;
|
||||
|
Reference in New Issue
Block a user