diff options
Diffstat (limited to 'net/ceph/messenger.c')
-rw-r--r-- | net/ceph/messenger.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 33a2f201e460..6b3f54ed65ba 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c | |||
@@ -510,6 +510,16 @@ static int ceph_tcp_connect(struct ceph_connection *con) | |||
510 | return ret; | 510 | return ret; |
511 | } | 511 | } |
512 | 512 | ||
513 | if (con->msgr->tcp_nodelay) { | ||
514 | int optval = 1; | ||
515 | |||
516 | ret = kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, | ||
517 | (char *)&optval, sizeof(optval)); | ||
518 | if (ret) | ||
519 | pr_err("kernel_setsockopt(TCP_NODELAY) failed: %d", | ||
520 | ret); | ||
521 | } | ||
522 | |||
513 | sk_set_memalloc(sock->sk); | 523 | sk_set_memalloc(sock->sk); |
514 | 524 | ||
515 | con->sock = sock; | 525 | con->sock = sock; |
@@ -2922,7 +2932,8 @@ void ceph_messenger_init(struct ceph_messenger *msgr, | |||
2922 | struct ceph_entity_addr *myaddr, | 2932 | struct ceph_entity_addr *myaddr, |
2923 | u64 supported_features, | 2933 | u64 supported_features, |
2924 | u64 required_features, | 2934 | u64 required_features, |
2925 | bool nocrc) | 2935 | bool nocrc, |
2936 | bool tcp_nodelay) | ||
2926 | { | 2937 | { |
2927 | msgr->supported_features = supported_features; | 2938 | msgr->supported_features = supported_features; |
2928 | msgr->required_features = required_features; | 2939 | msgr->required_features = required_features; |
@@ -2937,6 +2948,7 @@ void ceph_messenger_init(struct ceph_messenger *msgr, | |||
2937 | get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce)); | 2948 | get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce)); |
2938 | encode_my_addr(msgr); | 2949 | encode_my_addr(msgr); |
2939 | msgr->nocrc = nocrc; | 2950 | msgr->nocrc = nocrc; |
2951 | msgr->tcp_nodelay = tcp_nodelay; | ||
2940 | 2952 | ||
2941 | atomic_set(&msgr->stopping, 0); | 2953 | atomic_set(&msgr->stopping, 0); |
2942 | 2954 | ||