Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753973AbdLMVzq (ORCPT ); Wed, 13 Dec 2017 16:55:46 -0500 Received: from mail-lf0-f66.google.com ([209.85.215.66]:45404 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753839AbdLMVzm (ORCPT ); Wed, 13 Dec 2017 16:55:42 -0500 X-Google-Smtp-Source: ACJfBovknxwheILLFCzpsRjw+ubtBqd9PfeWT7xAE0yEfQbL+w4QGvg89QEKPiCL0wpKy6B3O3FhOA== From: Andrei Vagin To: target-devel@vger.kernel.org, "Nicholas A. Bellinger" Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Andrei Vagin Subject: [PATCH] target: don't call an unmap callback if a range length is zero Date: Wed, 13 Dec 2017 13:55:13 -0800 Message-Id: <20171213215513.26416-1-avagin@openvz.org> X-Mailer: git-send-email 2.13.6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1054 Lines: 35 If a length of a range is zero, it means there is nothing to unmap and we can skip this range. Here is one more reason, why we have to skip such ranges. An unmap callback calls file_operations->fallocate(), but the man page for the fallocate syscall says that fallocate(fd, mode, offset, let) returns EINVAL, if len is zero. It means that file_operations->fallocate() isn't obligated to handle zero ranges too. Signed-off-by: Andrei Vagin --- drivers/target/target_core_sbc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c index 750a04ed0e93..b054682e974f 100644 --- a/drivers/target/target_core_sbc.c +++ b/drivers/target/target_core_sbc.c @@ -1216,9 +1216,11 @@ sbc_execute_unmap(struct se_cmd *cmd) goto err; } - ret = ops->execute_unmap(cmd, lba, range); - if (ret) - goto err; + if (range) { + ret = ops->execute_unmap(cmd, lba, range); + if (ret) + goto err; + } ptr += 16; size -= 16; -- 2.13.6