Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp561590pxu; Tue, 5 Jan 2021 20:30:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJxXobn0iu4ECwKaPW7yVd4/mUtUjdgdIazOEdixpN/dwsVMJYiHvEsk6iMQGqKth5rLsF4t X-Received: by 2002:a17:906:7c49:: with SMTP id g9mr1709560ejp.185.1609907410827; Tue, 05 Jan 2021 20:30:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609907410; cv=none; d=google.com; s=arc-20160816; b=lOzQmp6gKsvSAWRf9WRWwm5oEO5n1pNvk50POvFJtnL0yagtDYbVQyNkrU962H2RQg IR5kEYsVc7L0OvxoocKRP+v5M1VRYRmDhAbJxymQYeJ6RwOjY5j1kdu5zLVPSWk/lW7z Zpws2dx+6IWLOFcNQka0tnmWblnb/oZOWYs9GsHcjMNGV91AisLD7MP+dNELmzAmJU6Q gU8yw3cULSYXaPl+D1iC9e+oIcT0BnqaEmf739zl/+8+H1Nuhdan4cBXqF/Ih7MwNWvq i6uPHwrNryLy0o/gg8VurPlsXJrwYqvOJzovKZRvtVg/q815UGvF4Uzyhlmr2+rN6bH5 7mHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=zTK2J54FnZffWvRbx4mbZpAaWIjHl2sQ8iSg0f7XF+o=; b=ulzHIjOxkHcofW3cgxBlCctFblxA044XS/MDH1PzQxaCeDayd5KDwaxua0RB010sug 582wsolFx+ckQOGem5Bn15wUlhF8/Mc9PXrNKIIxLEjFi4DILfotn0+sXQ1IqmzIFMIi biAnnsfWAgUqinEP4BCj0sp6iXbF3kDWcfj44vyIMpo1a5EwEboEE70fd4Lbv/X60cRW Ui4Zey/EOJjjj4PmTzGmD9AQ5J6aCE+50vvGhDjbyb0IrmvGcdDJo2M43NGQc/nv98uj s1IWIWGcsjcw8PkuWOvpGEFwONedUkc3O+VBsjhTe8sS1cEd4b0X5Uw3F6tBWlvbEl2q Ae+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Thrp8TYe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t18si503198ejc.249.2021.01.05.20.29.47; Tue, 05 Jan 2021 20:30:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Thrp8TYe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726695AbhAFE1m (ORCPT + 99 others); Tue, 5 Jan 2021 23:27:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726019AbhAFE1m (ORCPT ); Tue, 5 Jan 2021 23:27:42 -0500 Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF637C06134C; Tue, 5 Jan 2021 20:27:01 -0800 (PST) Received: by mail-lf1-x134.google.com with SMTP id m25so3649686lfc.11; Tue, 05 Jan 2021 20:27:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zTK2J54FnZffWvRbx4mbZpAaWIjHl2sQ8iSg0f7XF+o=; b=Thrp8TYeerkOhatWx2pTbUQWDkB+b/OayEfDfd4RqZVjKKA8MsPe00P8b3GTFp2tLB UToj/RwSlhESyXzhvIf/kuXdSg21I4gUlatImkBV4t0ttr9b4LyoMi3d2tTYOeTdD1lo jnIzgNjI41LO5fumdhphLqlSqYQ6p3kgDlEoxWzLBlvYUUemsehtBxuJWL6u7SLdpdxZ Zt0fRiv6nmIiK9z6XqCWCkZsJZJgT0ihS61ca36HpGKxE0lRbyJSP5zl8SCq0BdNoj0c ydc6TLSVC0U4PtftTpptTf8vdz9W6JqkyM3DmBocGx+QRHY90WpB0fuvAvXRC1D3gTkP jqnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zTK2J54FnZffWvRbx4mbZpAaWIjHl2sQ8iSg0f7XF+o=; b=gwC+L+RuhB93nJC3hS92w7gUfs9Oovn4EnPpERlNsMXVAxlJkNH3BXGT9/fXRLVHa9 JPP88aQtGhfELqjUwgxZ4aLQYO/71C3bVDzOcbq7ESfnmiM12KFBY9gqkAnAaDQhldxG KFOmJDfBifqijAbdWZjUOyRs6AQAwjzlSLPx5C+KZnSa7EdrlRhQn8sMVFRpso32CQPz jyVzpIVaviOTWVV1AfFdlOaQjczduxA2LRQjWG8cmTi/ZQ1nHWR0ivy0vKUS2mvj5JLd UPRgWzgeugSa0qYfoXqOsmrMFFNXffRfss+TJS3FOWrZ3i4Gtoc1TYSy897j36QN3wlS 7WXw== X-Gm-Message-State: AOAM533h3DUXVv3QaKFXGaBlVYWO71ywosQgD0jI4qw/6gRwbchjbQFm 9/U+gGuI148Re6fLsfJiY8NPZVWP3zuiIvjPwqg= X-Received: by 2002:a19:6a11:: with SMTP id u17mr1107677lfu.184.1609907220071; Tue, 05 Jan 2021 20:27:00 -0800 (PST) MIME-Version: 1.0 References: <1607591258-13865-1-git-send-email-yejune.deng@gmail.com> In-Reply-To: <1607591258-13865-1-git-send-email-yejune.deng@gmail.com> From: Steve French Date: Tue, 5 Jan 2021 22:26:47 -0600 Message-ID: Subject: Re: [PATCH] cifs: fix msleep() is imprecise To: Yejune Deng Cc: Steve French , CIFS , samba-technical , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch seems reasonable at first glance, but I was a little concerned that we don't see many users yet of fsleep. Has there been pushback on converting "yield" situations from using msleep to fsleep? On Thu, Dec 10, 2020 at 3:09 AM Yejune Deng wrote: > > See Documentation/timers/timers-howto.rst, msleep() is not > for (1ms - 20ms), There is a more advanced API is used. > > Signed-off-by: Yejune Deng > --- > fs/cifs/cifsfs.c | 4 ++-- > fs/cifs/connect.c | 14 +++++++------- > fs/cifs/file.c | 6 +++--- > fs/cifs/smbdirect.c | 2 +- > 4 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c > index 472cb77..d35ce52 100644 > --- a/fs/cifs/cifsfs.c > +++ b/fs/cifs/cifsfs.c > @@ -664,10 +664,10 @@ static void cifs_umount_begin(struct super_block *sb) > cifs_dbg(FYI, "wake up tasks now - umount begin not complete\n"); > wake_up_all(&tcon->ses->server->request_q); > wake_up_all(&tcon->ses->server->response_q); > - msleep(1); /* yield */ > + fsleep(1000); /* yield */ > /* we have to kick the requests once more */ > wake_up_all(&tcon->ses->server->response_q); > - msleep(1); > + fsleep(1000); > } > > return; > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > index 44f9cce..62a9c64 100644 > --- a/fs/cifs/connect.c > +++ b/fs/cifs/connect.c > @@ -538,7 +538,7 @@ static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, > if (rc) { > cifs_dbg(FYI, "reconnect error %d\n", rc); > mutex_unlock(&server->srv_mutex); > - msleep(3000); > + ssleep(3); > } else { > atomic_inc(&tcpSesReconnectCount); > set_credits(server, 1); > @@ -621,7 +621,7 @@ static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, > server->bigbuf = (char *)cifs_buf_get(); > if (!server->bigbuf) { > cifs_server_dbg(VFS, "No memory for large SMB response\n"); > - msleep(3000); > + ssleep(3); > /* retry will check if exiting */ > return false; > } > @@ -634,7 +634,7 @@ static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, > server->smallbuf = (char *)cifs_small_buf_get(); > if (!server->smallbuf) { > cifs_server_dbg(VFS, "No memory for SMB response\n"); > - msleep(1000); > + ssleep(1); > /* retry will check if exiting */ > return false; > } > @@ -729,7 +729,7 @@ static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, > * to clear and app threads to set tcpStatus > * CifsNeedReconnect if server hung. > */ > - usleep_range(1000, 2000); > + fsleep(1000); > length = 0; > continue; > } > @@ -790,7 +790,7 @@ static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, > */ > cifs_dbg(FYI, "RFC 1002 negative session response\n"); > /* give server a second to clean up */ > - msleep(1000); > + ssleep(1); > /* > * Always try 445 first on reconnect since we get NACK > * on some if we ever connected to port 139 (the NACK > @@ -944,7 +944,7 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server) > * response and going ahead and killing cifsd. > */ > cifs_dbg(FYI, "Wait for exit from demultiplex thread\n"); > - msleep(46000); > + ssleep(46); > /* > * If threads still have not exited they are probably never > * coming home not much else we can do but free the memory. > @@ -3655,7 +3655,7 @@ static void rfc1002mangle(char *target, char *source, unsigned int length) > * significant slowing down on mount > * for everyone else > */ > - usleep_range(1000, 2000); > + fsleep(1000); > } > /* > * else the negprot may still work without this > diff --git a/fs/cifs/file.c b/fs/cifs/file.c > index be46fab..75538a8 100644 > --- a/fs/cifs/file.c > +++ b/fs/cifs/file.c > @@ -283,7 +283,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode, > cifs_down_write(struct rw_semaphore *sem) > { > while (!down_write_trylock(sem)) > - msleep(10); > + fsleep(10000); > } > > static void cifsFileInfo_put_work(struct work_struct *work); > @@ -2828,7 +2828,7 @@ size_t get_numpages(const size_t wsize, const size_t len, size_t *cur_len) > > if (wsize < wdata->bytes) { > add_credits_and_wake_if(server, &credits, 0); > - msleep(1000); > + ssleep(1); > } > } while (wsize < wdata->bytes); > wdata->credits = credits; > @@ -3563,7 +3563,7 @@ static int cifs_resend_rdata(struct cifs_readdata *rdata, > > if (rsize < rdata->bytes) { > add_credits_and_wake_if(server, &credits, 0); > - msleep(1000); > + ssleep(1); > } > } while (rsize < rdata->bytes); > rdata->credits = credits; > diff --git a/fs/cifs/smbdirect.c b/fs/cifs/smbdirect.c > index b029ed3..84f97f8 100644 > --- a/fs/cifs/smbdirect.c > +++ b/fs/cifs/smbdirect.c > @@ -1372,7 +1372,7 @@ void smbd_destroy(struct TCP_Server_Info *server) > wake_up_interruptible_all(&info->wait_mr); > while (atomic_read(&info->mr_used_count)) { > mutex_unlock(&server->srv_mutex); > - msleep(1000); > + ssleep(1); > mutex_lock(&server->srv_mutex); > } > destroy_mr_list(info); > -- > 1.9.1 > -- Thanks, Steve