Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp346073pxj; Fri, 28 May 2021 05:31:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWnb1FWYObJcFlCb97H0UHYAj0Q/LUdQRlIjMu0E4ZsM0Z3HPjyYPz9gqZrDd8fxcdPjZJ X-Received: by 2002:a50:d69c:: with SMTP id r28mr9632495edi.64.1622205083544; Fri, 28 May 2021 05:31:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622205083; cv=none; d=google.com; s=arc-20160816; b=mnpbodVdu5cWxVhkdNNaOrF2mrxk3VsyJVKd1fmYtUdC5RUK5LeAjADig5kRCR/K2I SR7LO3Api/grqwpo5Ty1nFlN0vRp6ldLPlYcB4TG+O5GUiy2obUMrqJw0f7zmc2KhdfM 6wqVVgcPMWzUga/mMFruyGWhGYDMym/6sN9aNDftVJ0MAtw7kOtLLINMTFahxgPwAuLe riDdmLfyfJWSopol2sBpQqDdJjpP1zoXrOAaPqg4rFeS7QaSnXK/HOR+Ofkkh9WaHx5E mkZ5Ocyh3ggGR0AD1rszP5Ig1VABGAtb/06yRRpq8Ji4teBCEs5q27MfOXgYRKNy5OAk 7FKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=Myl0Vjtkig5JmMciFA7hjLy6jcVOb7nwCKfArgN0eN4=; b=GCFAukCIiT6Bx9pjEX/UHnzatuYbAgtqyD4fJqGoOLY7+GySk1JItPfiLFCJibVNGd 8qRjPWDM+uVhrvl8zLA9veHOkN/eKk+lajtNGlPUTYVVn4AhNEow+kt7eHwridr8gk4y QSiQMAljLuNIZyUlZJUKAjPkPm07b4t+DVXzJzenyAHXPlx57E2vwADqgSDCB9fC41nL +PaVjp83nqUODf3DFfvg4V75juu0Rb9rj6xUqP+8SuC8OLtFZhQPZ5LzKN5ltlD3aWxO IGtQF7XHsBrzFIxMhh2j/Iwh196o2nwGTZjLKY7574CMgsqbExMqGJtrsNjFBB2mrmvh nrxg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j7si5640575ejm.280.2021.05.28.05.30.53; Fri, 28 May 2021 05:31:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234782AbhE1Llr (ORCPT + 99 others); Fri, 28 May 2021 07:41:47 -0400 Received: from foss.arm.com ([217.140.110.172]:39628 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233583AbhE1Llo (ORCPT ); Fri, 28 May 2021 07:41:44 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4ACCE11D4; Fri, 28 May 2021 04:40:09 -0700 (PDT) Received: from entos-ampere-02.shanghai.arm.com (entos-ampere-02.shanghai.arm.com [10.169.214.103]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 144CE3F73B; Fri, 28 May 2021 04:40:02 -0700 (PDT) From: Jia He To: Linus Torvalds , Petr Mladek , Steven Rostedt , Sergey Senozhatsky , Andy Shevchenko , Rasmus Villemoes , Jonathan Corbet , Alexander Viro , Luca Coelho , Kalle Valo , "David S. Miller" , Jakub Kicinski , Heiko Carstens , Vasily Gorbik Cc: Christian Borntraeger , Johannes Berg , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-s390@vger.kernel.org, Jia He Subject: [PATCH RFCv2 0/3] make '%pD' print full path for file Date: Fri, 28 May 2021 19:39:48 +0800 Message-Id: <20210528113951.6225-1-justin.he@arm.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Background ========== Linus suggested printing full path for file instead of printing the components as '%pd'. Typically, there is no need for printk specifiers to take any real locks (ie mount_lock or rename_lock). So I introduce a new helper d_path_fast which is similar to d_path except it doesn't take any seqlock/spinlock. This series is based on Al Viro's d_path cleanup patches [1] which lifted the inner lockless loop into a new helper. [1] https://lkml.org/lkml/2021/5/18/1260 Test ==== The cases I tested: 1. print '%pD' with full path of ext4 file 2. mount a ext4 filesystem upon a ext4 filesystem, and print the file with '%pD' 3. print file path which has more than 256 chars,"-ENAMETOOLONG" will be returned 4. print file path with '%32pD' 5. all test_print selftests After this set, I found many lines containing '%pD[234]' should be changed to '%pD'. I don't want to involve those subsystems in this patch series before the helper is stable enough. You can get the lines by: $find fs/ -name \*.[ch] | xargs grep -rn "\%pD[234" fs/overlayfs/file.c:65: pr_debug("open(%p[%pD2/%c], 0%o) -> (%p, 0%o)\n", fs/nfs/direct.c:453: dfprintk(FILE, "NFS: direct read(%pD2, %zd@%Ld)\n", fs/nfs/direct.c:908: dfprintk(FILE, "NFS: direct write(%pD2, %zd@%Ld)\n", fs/nfs/write.c:1371: dprintk("NFS: nfs_updatepage(%pD2 %d@%lld)\n", fs/nfs/nfs4file.c:116: dprintk("NFS: flush(%pD2)\n", file); fs/nfs/file.c:69: dprintk("NFS: open file(%pD2)\n", filp); fs/nfs/file.c:83: dprintk("NFS: release(%pD2)\n", filp); fs/nfs/file.c:117: dprintk("NFS: llseek file(%pD2, %lld, %d)\n", fs/nfs/file.c:145: dprintk("NFS: flush(%pD2)\n", file); fs/nfs/file.c:166: dprintk("NFS: read(%pD2, %zu@%lu)\n", fs/nfs/file.c:188: dprintk("NFS: mmap(%pD2)\n", file); fs/nfs/file.c:213: dprintk("NFS: fsync file(%pD2) datasync %d\n", file, datasync); fs/nfs/file.c:328: dfprintk(PAGECACHE, "NFS: write_begin(%pD2(%lu), %u@%lld)\n", fs/nfs/file.c:360: dfprintk(PAGECACHE, "NFS: write_end(%pD2(%lu), %u@%lld)\n", fs/nfs/file.c:551: dfprintk(PAGECACHE, "NFS: vm_page_mkwrite(%pD2(%lu), offset %lld)\n", fs/nfs/file.c:621: dprintk("NFS: write(%pD2, %zu@%Ld)\n", fs/nfs/file.c:803: dprintk("NFS: lock(%pD2, t=%x, fl=%x, r=%lld:%lld)\n", fs/nfs/file.c:841: dprintk("NFS: flock(%pD2, t=%x, fl=%x)\n", fs/nfs/dir.c:111: dfprintk(FILE, "NFS: open dir(%pD2)\n", filp); fs/nfs/dir.c:456: pr_notice("NFS: directory %pD2 contains a readdir loop." fs/nfs/dir.c:1084: dfprintk(FILE, "NFS: readdir(%pD2) starting at cookie %llu\n", fs/nfs/dir.c:1158: dfprintk(FILE, "NFS: readdir(%pD2) returns %d\n", file, res); fs/nfs/dir.c:1166: dfprintk(FILE, "NFS: llseek dir(%pD2, %lld, %d)\n", fs/nfs/dir.c:1208: dfprintk(FILE, "NFS: fsync dir(%pD2) datasync %d\n", filp, datasync); fs/nfsd/nfs4state.c:2439: seq_printf(s, "filename: \"%pD2\"", f->nf_file); fs/exec.c:817: pr_warn_once("process '%pD4' started with executable stack\n", fs/iomap/direct-io.c:429: pr_warn_ratelimited("Direct I/O collision with buffered writes! File: %pD4 Comm: %.20s\n", fs/ioctl.c:81: pr_warn_ratelimited("[%s/%d] FS: %s File: %pD4 would truncate fibmap result\n", fs/read_write.c:425: "kernel %s not supported for file %pD4 (pid: %d comm: %.20s)\n", fs/splice.c:754: "splice %s not supported for file %pD4 (pid: %d comm: %.20s)\n", fs/afs/mntpt.c:64: _enter("%p,%p{%pD2}", inode, file, file); Changelog: v2: - implement new d_path_fast based on Al Viro's patches - add check_pointer check (by Petr) - change the max full path size to 256 in stack space v1: https://lkml.org/lkml/2021/5/8/122 Jia He (3): fs: introduce helper d_path_fast() lib/vsprintf.c: make %pD print full path for file s390/hmcdrv: remove the redundant directory path in debug message Documentation/core-api/printk-formats.rst | 5 +++-- drivers/s390/char/hmcdrv_dev.c | 10 +++++----- fs/d_path.c | 21 +++++++++++++++++++++ include/linux/dcache.h | 1 + lib/vsprintf.c | 21 +++++++++++++++++---- 5 files changed, 47 insertions(+), 11 deletions(-) -- 2.17.1