From patchwork Tue Aug 28 23:38:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Darrick Wong X-Patchwork-Id: 963176 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.b="44wkuSYH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 420QDR4xw5z9s3x for ; Wed, 29 Aug 2018 09:38:15 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727679AbeH2DcN (ORCPT ); Tue, 28 Aug 2018 23:32:13 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:42200 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727162AbeH2DcN (ORCPT ); Tue, 28 Aug 2018 23:32:13 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w7SNXkgP074845; Tue, 28 Aug 2018 23:38:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=b2UIBWHne2Q2NJXli3RftJud45KOdtGq7Fg6cOuQap4=; b=44wkuSYHZUW1hbBX8/HH8C8gPaTQ4lvHrbFs3gLb/h8Z0oPb+UOYA0hLzGrhLk1bx6xj yHW69wN2ToxBJ+3LaNHqjzt2j+KzZsqv4TuZYZ5fbewB7YOvLVFRztU/cjj1e8M661RK Ewch/Scxbr46ELS9AW2k/WojdanpYUiAOQKgyNxlZc6vCaNZl6fkKZCo+cv+kqj0PviI JS2/eJviP3ytIRlkBW07uJyDXTJ5We8pftSf4RkfsbbMv82xUcYJtKo21CCpK46SlA+g /YMsaFezeZ2NDIMwGVJ3KPNLtIJlNVXwxWNZr/6qwQ1zThkQUHBBtAaz8IgtLU2pkC5r GA== Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by userp2120.oracle.com with ESMTP id 2m2yrq6q3y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:09 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w7SNc3Ln018553 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:04 GMT Received: from abhmp0001.oracle.com (abhmp0001.oracle.com [141.146.116.7]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w7SNc2eS001926; Tue, 28 Aug 2018 23:38:03 GMT Received: from localhost (/67.169.218.210) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 28 Aug 2018 16:38:02 -0700 Subject: [PATCH 1/3] libext2fs: use ZERO_RANGE before PUNCH_HOLE in unix_zeroout From: "Darrick J. Wong" To: tytso@mit.edu, darrick.wong@oracle.com Cc: Andreas Dilger , linux-ext4@vger.kernel.org Date: Tue, 28 Aug 2018 16:38:00 -0700 Message-ID: <153549948026.19148.1559925598066978819.stgit@magnolia> In-Reply-To: <153549947412.19148.4891642282274103717.stgit@magnolia> References: <153549947412.19148.4891642282274103717.stgit@magnolia> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8999 signatures=668708 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1808280228 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Darrick J. Wong In unix_zeroout() for files, we should try a ZERO_RANGE before we try PUNCH_HOLE because the former will not cause us to lose preallocated blocks. Since block devices have supported fallocate for a few years now, refactor the fallocate calls into a helper and call it from either case. Reported-by: Andreas Dilger Signed-off-by: Darrick J. Wong Reviewed-by: Andreas Dilger --- lib/ext2fs/unix_io.c | 53 ++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c index 7a4c9bf5e..74fc8a75d 100644 --- a/lib/ext2fs/unix_io.c +++ b/lib/ext2fs/unix_io.c @@ -1126,6 +1126,31 @@ static errcode_t unix_discard(io_channel channel, unsigned long long block, return EXT2_ET_UNIMPLEMENTED; } +/* + * If we know about ZERO_RANGE, try that before we try PUNCH_HOLE because + * ZERO_RANGE doesn't unmap preallocated blocks. We prefer fallocate because + * it always invalidates page cache, and libext2fs requires that reads after + * ZERO_RANGE return zeroes. + */ +static int __unix_zeroout(int fd, off_t offset, off_t len) +{ + int ret = -1; + +#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_ZERO_RANGE) + ret = fallocate(fd, FALLOC_FL_ZERO_RANGE, offset, len); + if (ret == 0) + return 0; +#endif +#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) + ret = fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, + offset, len); + if (ret == 0) + return 0; +#endif + errno = EOPNOTSUPP; + return ret; +} + /* parameters might not be used if OS doesn't support zeroout */ #if __GNUC_PREREQ (4, 6) #pragma GCC diagnostic push @@ -1144,10 +1169,7 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block, if (safe_getenv("UNIX_IO_NOZEROOUT")) goto unimplemented; - if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) { - /* Not implemented until the BLKZEROOUT mess is fixed */ - goto unimplemented; - } else { + if (!(channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE)) { /* Regular file, try to use truncate/punch/zero. */ struct stat statbuf; @@ -1167,26 +1189,11 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block, if (ret) goto err; } -#if defined(HAVE_FALLOCATE) && (defined(FALLOC_FL_ZERO_RANGE) || \ - (defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE))) -#if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) - ret = fallocate(data->dev, - FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, - (off_t)(block) * channel->block_size + data->offset, - (off_t)(count) * channel->block_size); - if (ret == 0) - goto err; -#endif -#ifdef FALLOC_FL_ZERO_RANGE - ret = fallocate(data->dev, - FALLOC_FL_ZERO_RANGE, - (off_t)(block) * channel->block_size + data->offset, - (off_t)(count) * channel->block_size); -#endif -#else - goto unimplemented; -#endif /* HAVE_FALLOCATE && (ZERO_RANGE || (PUNCH_HOLE && KEEP_SIZE)) */ } + + ret = __unix_zeroout(data->dev, + (off_t)(block) * channel->block_size + data->offset, + (off_t)(count) * channel->block_size); err: if (ret < 0) { if (errno == EOPNOTSUPP) From patchwork Tue Aug 28 23:38:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Darrick Wong X-Patchwork-Id: 963177 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.b="REonxlR3"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 420QDS6RSnz9s4s for ; Wed, 29 Aug 2018 09:38:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727680AbeH2DcO (ORCPT ); Tue, 28 Aug 2018 23:32:14 -0400 Received: from userp2130.oracle.com ([156.151.31.86]:46178 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727339AbeH2DcO (ORCPT ); Tue, 28 Aug 2018 23:32:14 -0400 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w7SNXktw090916; Tue, 28 Aug 2018 23:38:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=fdLBtKRDUnq61aOg7blIA5fFK/XfG8uTvh/PqxmhVVE=; b=REonxlR3c0NRXtGFHsGxWozW7Mdo6zI7T08My4ibPsOTByGDxEoooWlvpJ1PeG4uxO3t rnR82Cs4FuiNz1E6/HFkw7dcGgmqXnX1iLoiRDBHt4mU/0+f+5wgNQpJPIdIuxGXVheT C/BiOB4np2kWg53e/So5G5ASultAc335wLTMvMUXPp8WTaW5P3o10hEbAi0lilGQqBhM ui69F4aLZ+ml7sqgxNPxrgTWiZoN5pAKMuK72MY4zAbPwlLa3cfW2I7W8wROsDAEkEi8 G3oWnBng8WxK48a7r+WP3Knc1sSdAGVx/MPkO0S7Cg451/Ew398Nu/9FMvVEeuYpVSY+ vg== Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by userp2130.oracle.com with ESMTP id 2m2xhtpu5q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:10 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w7SNc9CO018723 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:09 GMT Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id w7SNc9Et004798; Tue, 28 Aug 2018 23:38:09 GMT Received: from localhost (/67.169.218.210) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 28 Aug 2018 16:38:08 -0700 Subject: [PATCH 2/3] libext2fs: try to always use PUNCH_HOLE for unix_discard From: "Darrick J. Wong" To: tytso@mit.edu, darrick.wong@oracle.com Cc: Andreas Dilger , linux-ext4@vger.kernel.org Date: Tue, 28 Aug 2018 16:38:07 -0700 Message-ID: <153549948773.19148.3986347562796042813.stgit@magnolia> In-Reply-To: <153549947412.19148.4891642282274103717.stgit@magnolia> References: <153549947412.19148.4891642282274103717.stgit@magnolia> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8999 signatures=668708 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=2 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=845 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1808280228 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Darrick J. Wong Now that block devices support PUNCH_HOLE via fallocate, refactor the unix_discard code into a helper that will always try to use it. For block devices we can fall back to BLKDISCARD, but we prefer to use fallocate because it will always invalidate the page cache of the zeroed region. Signed-off-by: Darrick J. Wong Reviewed-by: Andreas Dilger --- lib/ext2fs/unix_io.c | 61 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c index 74fc8a75d..16e2052cd 100644 --- a/lib/ext2fs/unix_io.c +++ b/lib/ext2fs/unix_io.c @@ -1081,6 +1081,38 @@ static errcode_t unix_set_option(io_channel channel, const char *option, #define BLKDISCARD _IO(0x12,119) #endif +/* + * Try a PUNCH_HOLE to unmap blocks, then BLKDISCARD if that doesn't work. + * We prefer PUNCH_HOLE because it invalidates the page cache, even on block + * devices. + */ +static int __unix_discard(int fd, int is_bdev, off_t offset, off_t len) +{ +#ifdef BLKDISCARD + __u64 range[2]; +#endif + int ret = -1; + +#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) + ret = fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, + offset, len); + if (ret == 0) + return 0; +#endif +#ifdef BLKDISCARD + if (is_bdev) { + range[0] = (__u64)offset; + range[1] = (__u64)len; + + ret = ioctl(fd, BLKDISCARD, &range); + if (ret == 0) + return 0; + } +#endif + errno = EOPNOTSUPP; + return ret; +} + static errcode_t unix_discard(io_channel channel, unsigned long long block, unsigned long long count) { @@ -1091,31 +1123,10 @@ static errcode_t unix_discard(io_channel channel, unsigned long long block, data = (struct unix_private_data *) channel->private_data; EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL); - if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) { -#ifdef BLKDISCARD - __u64 range[2]; - - range[0] = (__u64)(block) * channel->block_size + data->offset; - range[1] = (__u64)(count) * channel->block_size; - - ret = ioctl(data->dev, BLKDISCARD, &range); -#else - goto unimplemented; -#endif - } else { -#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) - /* - * If we are not on block device, try to use punch hole - * to reclaim free space. - */ - ret = fallocate(data->dev, - FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, - (off_t)(block) * channel->block_size + data->offset, - (off_t)(count) * channel->block_size); -#else - goto unimplemented; -#endif - } + ret = __unix_discard(data->dev, + (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE), + (off_t)(block) * channel->block_size + data->offset, + (off_t)(count) * channel->block_size); if (ret < 0) { if (errno == EOPNOTSUPP) goto unimplemented; From patchwork Tue Aug 28 23:38:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Darrick Wong X-Patchwork-Id: 963178 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.b="Sn0dM+c0"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 420QDb0bKvz9s4Z for ; Wed, 29 Aug 2018 09:38:23 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727686AbeH2DcV (ORCPT ); Tue, 28 Aug 2018 23:32:21 -0400 Received: from userp2130.oracle.com ([156.151.31.86]:46238 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727339AbeH2DcV (ORCPT ); Tue, 28 Aug 2018 23:32:21 -0400 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w7SNXtEi090948; Tue, 28 Aug 2018 23:38:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=zhhv/6IBDwpFSgNAJqsip2t3VNHnfFCt2WFp72RllHo=; b=Sn0dM+c0nlrFfSVn+WYCyRTIevCGfKg6Iinp/Fr5KiBWHSeLv9b/oCuG6S3G9qrvD+6u zQIhdSJdSZhHnuZebV39GwIJ3B5hBx5Adhddj3AtokxsvG9dVa342OtZqHOhlq+OQvO2 TSACZV8giNS76GMJRSegQctvZYDlkYx5F1LZdmxAFdcD6dK8RK52b4nfkryqTsiEpj2W +mmf5SDuulplb/VXEHN0i/e337JOwm9E0/aRmCMArA2OOcK+T+oR1SpcrFJBNdChdKf1 zzMPpFhOT6sxpLyy/ddV25wMgJ55+LNL/logt3kmj4R5mA5SzJZf4vmGlF5QxdeAHm00 Bw== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp2130.oracle.com with ESMTP id 2m2xhtpu60-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:18 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w7SNcHre023154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Aug 2018 23:38:17 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w7SNcGib001967; Tue, 28 Aug 2018 23:38:17 GMT Received: from localhost (/67.169.218.210) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 28 Aug 2018 16:38:16 -0700 Subject: [PATCH 3/3] e2scrub: fix makefile MKINSTALLDIRS -> MKDIR_P From: "Darrick J. Wong" To: tytso@mit.edu, darrick.wong@oracle.com Cc: linux-ext4@vger.kernel.org Date: Tue, 28 Aug 2018 16:38:14 -0700 Message-ID: <153549949400.19148.6121202702013251597.stgit@magnolia> In-Reply-To: <153549947412.19148.4891642282274103717.stgit@magnolia> References: <153549947412.19148.4891642282274103717.stgit@magnolia> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8999 signatures=668708 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=9 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1808280228 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Darrick J. Wong Fix the MKINSTALLDIRS -> MKDIR_P transition in the scrub/ dir. Signed-off-by: Darrick J. Wong --- scrub/Makefile.in | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scrub/Makefile.in b/scrub/Makefile.in index f58331de8..769c35bc9 100644 --- a/scrub/Makefile.in +++ b/scrub/Makefile.in @@ -85,24 +85,24 @@ e2scrub_all_cron: e2scrub_all_cron.in $(Q) $(SUBSTITUTE_UPTIME) $< $@ installdirs-udev: - $(E) " MKINSTALLDIRS $(UDEV_RULES_DIR)" - $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(UDEV_RULES_DIR) + $(E) " MKDIR_P $(UDEV_RULES_DIR)" + $(Q) $(MKDIR_P) $(DESTDIR)$(UDEV_RULES_DIR) installdirs-crond: - $(E) " MKINSTALLDIRS $(CROND_DIR)" - $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(CROND_DIR) + $(E) " MKDIR_P $(CROND_DIR)" + $(Q) $(MKDIR_P) $(DESTDIR)$(CROND_DIR) installdirs-libprogs: - $(E) " MKINSTALLDIRS $(pkglibdir)" - $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(pkglibdir) + $(E) " MKDIR_P $(pkglibdir)" + $(Q) $(MKDIR_P) $(DESTDIR)$(pkglibdir) installdirs-systemd: - $(E) " MKINSTALLDIRS $(SYSTEMD_SYSTEM_UNIT_DIR)" - $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(SYSTEMD_SYSTEM_UNIT_DIR) + $(E) " MKDIR_P $(SYSTEMD_SYSTEM_UNIT_DIR)" + $(Q) $(MKDIR_P) $(DESTDIR)$(SYSTEMD_SYSTEM_UNIT_DIR) installdirs: $(INSTALLDIRS_TGT) - $(E) " MKINSTALLDIRS $(root_sbindir) $(man8dir) $(root_sysconfdir)" - $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(root_sbindir) \ + $(E) " MKDIR_P $(root_sbindir) $(man8dir) $(root_sysconfdir)" + $(Q) $(MKDIR_P) $(DESTDIR)$(root_sbindir) \ $(DESTDIR)$(man8dir) $(DESTDIR)$(root_sysconfdir) install-udev: