Jeff's point makes sense. With the suggested fix, seems like reasonable idea. On Thu, Feb 23, 2012 at 12:18 AM, Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: > 2012/2/22 Jeff Layton <jlayton@xxxxxxxxx>: >> On Wed, 22 Feb 2012 10:32:58 +0300 >> Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: >> >>> to let us interrupt the proccess if the session went down and echo >>> is disabled. >>> >>> Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx> >>> --- >>> fs/cifs/transport.c | 7 ++++++- >>> 1 files changed, 6 insertions(+), 1 deletions(-) >>> >>> diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c >>> index fa93720..938d20b 100644 >>> --- a/fs/cifs/transport.c >>> +++ b/fs/cifs/transport.c >>> @@ -257,6 +257,8 @@ smb_send(struct TCP_Server_Info *server, struct smb_hdr *smb_buffer, >>> static int >>> wait_for_free_request(struct TCP_Server_Info *server, const int long_op) >>> { >>> + int rc; >>> + >>> spin_lock(&server->req_lock); >>> >>> if (long_op == CIFS_ASYNC_OP) { >>> @@ -271,8 +273,11 @@ wait_for_free_request(struct TCP_Server_Info *server, const int long_op) >>> if (server->credits <= 0) { >>> spin_unlock(&server->req_lock); >>> cifs_num_waiters_inc(server); >>> - wait_event(server->request_q, get_credits(server) > 0); >>> + rc = wait_event_interruptible(server->request_q, >>> + get_credits(server) > 0); >>> cifs_num_waiters_dec(server); >>> + if (rc) >>> + return rc; >>> spin_lock(&server->req_lock); >>> } else { >>> if (server->tcpStatus == CifsExiting) { >> >> In general, I think making this interruptible is a good idea. The >> problem here though is that you're going to end up interrupting this on >> any signal. That includes stuff like SIGCHLD -- you don't necessarily >> want to interrupt this because the process forked off a child earlier >> and then that child exited... >> >> It's probably simpler to just make this a TASK_KILLABLE sleep for that >> reason, rather than trying to handle different signals differently. >> > > Ok, good points - will change it. > > -- > Best regards, > Pavel Shilovsky. > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html