Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2966402imm; Sun, 7 Oct 2018 16:32:23 -0700 (PDT) X-Google-Smtp-Source: ACcGV62Qm0zTICjqMnusboopHdV/70EmuRROtqynY6OHDqLAe1NV09vgL+YF0JVYKRahPfXbKT8g X-Received: by 2002:a62:670a:: with SMTP id b10-v6mr22439091pfc.243.1538955143316; Sun, 07 Oct 2018 16:32:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538955143; cv=none; d=google.com; s=arc-20160816; b=p40hE3MoKRROQUcQ4baj6QxdbDoPVmblyn3P11iEuD8/cQd/7sBys8tS+GQzZVcmTT 6TIzWC55MjJgWeTV8FEzq/t0QOfR6kMpW19Mg4lrhAG3Gozb+7diWcipJiEYbL2tC6Nt uolsIHnV6X8+CR0mOqSubsRwHT6KEux+EAezIJSMZWjvGLxkkYyCpHCUojvJugL0c9PE ezoFX3aIdETcQcxqR0XJKBjl1ffTmtzH9SLW5l0kX4dGsRHtk5o8nUX68oXW1VaAn/qo lZzhXutiCjmYuonzEL7Dx6or6jkCP7O5Z2Rrbzng/xiiT5+dSBxlNyFHJxsF0kpwDs3F 43yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=jGYyVedwO3w6KnNhLC98dG+SgDExz6zEusY6F4HPlCE=; b=nQfm/iPjC3o+sIn4WESaQOMn+Q96u2iCxq+k8WhxFzA6J4Jte70h/rErWD+Jp7QtdA 9Ln1M18m1l2+LBo9JtM1RpnKf60iezj083J50NCT2x5QwNY2+n6uENknNrghr4DfQq3N tjNq7tu776+AyzCuht3siXL7J4ZAEkBaUt5fJwJUWAlcdVVdcgOPXSeqbSyUVvrcwoSu CJiGCvkgH1WExVUGydp3yWMrqRnuTntGFrQ4NALuqsyrPk84Ypd4Rv1O3V6wl7eZe6Wa 3mNu73GdOvBadi85ikfL9bbc/SCVNVd0eDqVzJdghCLq8QsQT+JsSR4QXW4qH5MyE7lm GIJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@omnibond-com.20150623.gappssmtp.com header.s=20150623 header.b=tEHcIO7n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m4-v6si15622873plt.432.2018.10.07.16.32.08; Sun, 07 Oct 2018 16:32:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@omnibond-com.20150623.gappssmtp.com header.s=20150623 header.b=tEHcIO7n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728193AbeJHGhD (ORCPT + 99 others); Mon, 8 Oct 2018 02:37:03 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:43013 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728141AbeJHGhC (ORCPT ); Mon, 8 Oct 2018 02:37:02 -0400 Received: by mail-qk1-f196.google.com with SMTP id 12-v6so4211955qkj.10 for ; Sun, 07 Oct 2018 16:28:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=omnibond-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jGYyVedwO3w6KnNhLC98dG+SgDExz6zEusY6F4HPlCE=; b=tEHcIO7n2j/0dlyy9yWr4H8XGcndtbl7u0NjzrTcQIgM14NJLGPCduDm87AerokqL6 wioti9rNkC22iCzlOzh8eGvRKmPJ79J6C+00xHz6N0bBY7FuA7UwHvGzahJnRgXQZc0Y QMulUasJVmgZRr9gLGO46/fuhRPri3LR0ULnxCQsilzqf8FJTduBkTuejUcLvsV/Fcy7 qVJljNy5xdyx3R8L3PIJz3KmSYKYqwNJu2QQqfnSS4zEl0fTwwm6H0eIE56oY9epombK xbu0dWuuozAIJCRVCmYF0f3Izn1R5cHJAe2uS9ZHfW0mUNtb5PKUmSrxVH7EAKvLutd6 2I8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jGYyVedwO3w6KnNhLC98dG+SgDExz6zEusY6F4HPlCE=; b=uWMC/usKMn6tdDY0zUp0hjnM1hTxBvzeZ45YTEQNnM0+PWT5SaJDe7RNkp74O3cZY1 UjMNGCCwWnbt/x39pVeh2ZDMzTlqExpMagifMseTwvg2/RG2QiQB6j+xTTruSQqBIbms 6izmzVYGwP8gSDZi0UAQYPeirJU+3VDZvMOQDJ0DkOTZ+SneguSyHYCXFFhvXyjBjij+ F/UhRXThYMua3kgYzC9ppNg5MQOcQBqz4UKNq+2ES7E6cQHYhEuoqmGFQhhiwckHxZYa kqTvNegTLBOip0DEDwJpbKqe3yY2uUvbOY1LTQpOwKOq+HBrzt/GbJ8Wtc56LzfQXqbz BbfA== X-Gm-Message-State: ABuFfoiAerjci48zG+FvgV+9eFgasjKXLQcF7gI8hC1+OhhrWDzWOi6p CAU6ps3nkzHWd9IeIsEOj98vyA== X-Received: by 2002:a37:b201:: with SMTP id b1-v6mr16847583qkf.158.1538954887706; Sun, 07 Oct 2018 16:28:07 -0700 (PDT) Received: from ip-172-31-22-34.ec2.internal (ec2-35-153-175-159.compute-1.amazonaws.com. [35.153.175.159]) by smtp.gmail.com with ESMTPSA id x38-v6sm6793915qtc.39.2018.10.07.16.28.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 07 Oct 2018 16:28:06 -0700 (PDT) From: Martin Brandenburg To: devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, hubcap@omnibond.com Cc: Martin Brandenburg Subject: [PATCH 10/19] orangefs: service ops done for writeback are not killable Date: Sun, 7 Oct 2018 23:27:27 +0000 Message-Id: <20181007232736.3780-11-martin@omnibond.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181007232736.3780-1-martin@omnibond.com> References: <20181007232736.3780-1-martin@omnibond.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Martin Brandenburg --- fs/orangefs/orangefs-kernel.h | 1 + fs/orangefs/orangefs-utils.c | 2 +- fs/orangefs/waitqueue.c | 18 ++++++++++-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index 9fe60d086e2d..cdb08e51a4b1 100644 --- a/fs/orangefs/orangefs-kernel.h +++ b/fs/orangefs/orangefs-kernel.h @@ -441,6 +441,7 @@ extern const struct dentry_operations orangefs_dentry_operations; #define ORANGEFS_OP_CANCELLATION 4 /* this is a cancellation */ #define ORANGEFS_OP_NO_MUTEX 8 /* don't acquire request_mutex */ #define ORANGEFS_OP_ASYNC 16 /* Queue it, but don't wait */ +#define ORANGEFS_OP_WRITEBACK 32 int service_operation(struct orangefs_kernel_op_s *op, const char *op_name, diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c index a4fac527f85d..9221c4a3398e 100644 --- a/fs/orangefs/orangefs-utils.c +++ b/fs/orangefs/orangefs-utils.c @@ -430,7 +430,7 @@ int orangefs_inode_setattr(struct inode *inode) spin_unlock(&inode->i_lock); ret = service_operation(new_op, __func__, - get_interruptible_flag(inode)); + get_interruptible_flag(inode) | ORANGEFS_OP_WRITEBACK); gossip_debug(GOSSIP_UTILS_DEBUG, "orangefs_inode_setattr: returning %d\n", ret); if (ret) diff --git a/fs/orangefs/waitqueue.c b/fs/orangefs/waitqueue.c index 0729d2645d6a..beafc33d57be 100644 --- a/fs/orangefs/waitqueue.c +++ b/fs/orangefs/waitqueue.c @@ -19,7 +19,7 @@ static int wait_for_matching_downcall(struct orangefs_kernel_op_s *op, long timeout, - bool interruptible) + int flags) __acquires(op->lock); static void orangefs_clean_up_interrupted_operation(struct orangefs_kernel_op_s *op) __releases(op->lock); @@ -143,9 +143,7 @@ int service_operation(struct orangefs_kernel_op_s *op, if (!(flags & ORANGEFS_OP_NO_MUTEX)) mutex_unlock(&orangefs_request_mutex); - ret = wait_for_matching_downcall(op, timeout, - flags & ORANGEFS_OP_INTERRUPTIBLE); - + ret = wait_for_matching_downcall(op, timeout, flags); gossip_debug(GOSSIP_WAIT_DEBUG, "%s: wait_for_matching_downcall returned %d for %p\n", __func__, @@ -319,10 +317,12 @@ static void */ static int wait_for_matching_downcall(struct orangefs_kernel_op_s *op, long timeout, - bool interruptible) + int flags) __acquires(op->lock) { long n; + int writeback = flags & ORANGEFS_OP_WRITEBACK, + interruptible = flags & ORANGEFS_OP_INTERRUPTIBLE; /* * There's a "schedule_timeout" inside of these wait @@ -330,10 +330,12 @@ static int wait_for_matching_downcall(struct orangefs_kernel_op_s *op, * user process that needs something done and is being * manipulated by the client-core process. */ - if (interruptible) + if (writeback) + n = wait_for_completion_io_timeout(&op->waitq, timeout); + else if (!writeback && interruptible) n = wait_for_completion_interruptible_timeout(&op->waitq, - timeout); - else + timeout); + else /* !writeback && !interruptible but compiler complains */ n = wait_for_completion_killable_timeout(&op->waitq, timeout); spin_lock(&op->lock); -- 2.19.0