Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936467AbcKQRL5 (ORCPT ); Thu, 17 Nov 2016 12:11:57 -0500 Received: from mail-qk0-f175.google.com ([209.85.220.175]:33896 "EHLO mail-qk0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934935AbcKQRLw (ORCPT ); Thu, 17 Nov 2016 12:11:52 -0500 MIME-Version: 1.0 In-Reply-To: <147938969703.13574.10295364502230379833.stgit@warthog.procyon.org.uk> References: <147938969703.13574.10295364502230379833.stgit@warthog.procyon.org.uk> From: Michael Kerrisk Date: Thu, 17 Nov 2016 16:10:13 +0100 X-Google-Sender-Auth: 9ybhTuSQNe761L-cZ17yu9IVIOk Message-ID: Subject: Re: [RFC][PATCH 0/4] Enhanced file stat system call To: David Howells Cc: Linux-Fsdevel , Linux Kernel , Linux API Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3933 Lines: 109 Hi David, Can you please CC linux-api@ on all future iterations of this patch! Thanks, Michael On Thu, Nov 17, 2016 at 2:34 PM, David Howells wrote: > > Implement a new system call to provide enhanced file stats. The patches can > be found here: > > http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=xstat > > > =========== > DESCRIPTION > =========== > > The first patch provides this new system call: > > long ret = statx(int dfd, > const char *filename, > unsigned atflag, > unsigned mask, > struct statx *buffer); > > This is an enhanced file stat function that provides a number of useful > features, in summary: > > (1) More information: creation time, data version number and attributes. > A subset of these is available through a number of filesystems (such > as CIFS, NFS, AFS, Ext4 and BTRFS). > > (2) Lightweight stat (AT_STATX_DONT_SYNC): Ask for just those details of > interest, and allow a network fs to approximate anything not of > interest, without going to the server. > > (3) Heavyweight stat (AT_STATX_FORCE_SYNC): Force a network fs to flush > buffers and go to the server, even if it thinks its cached attributes > are up to date. > > (4) Allow the filesystem to indicate what it can/cannot provide: A > filesystem can now say it doesn't support a standard stat feature if > that isn't available. > > (5) Make the fields a consistent size on all arches, and make them large. > > (6) Can be extended by using more request flags and using up the padding > space in the statx struct. > > Note that no lstat() equivalent is required as that can be implemented > through statx() with atflag == 0. There is also no fstat() equivalent as > that can be implemented through statx() with filename == NULL and the > relevant fd passed as dfd. > > > ======= > TESTING > ======= > > A test program is added into samples/statx/ by the first patch. > > David > --- > David Howells (4): > statx: Add a system call to make enhanced file info available > statx: Ext4: Return enhanced file attributes > statx: NFS: Return enhanced file attributes > statx: AFS: Return enhanced file attributes > > > arch/x86/entry/syscalls/syscall_32.tbl | 1 > arch/x86/entry/syscalls/syscall_64.tbl | 1 > fs/afs/inode.c | 21 ++ > fs/exportfs/expfs.c | 4 > fs/ext4/ext4.h | 2 > fs/ext4/file.c | 2 > fs/ext4/inode.c | 38 ++++ > fs/ext4/namei.c | 2 > fs/ext4/symlink.c | 2 > fs/nfs/inode.c | 41 ++++ > fs/stat.c | 294 +++++++++++++++++++++++++++++--- > include/linux/fs.h | 5 - > include/linux/stat.h | 19 +- > include/linux/syscalls.h | 3 > include/uapi/linux/fcntl.h | 2 > include/uapi/linux/stat.h | 124 +++++++++++++ > samples/Kconfig | 5 + > samples/Makefile | 3 > samples/statx/Makefile | 10 + > samples/statx/test-statx.c | 248 +++++++++++++++++++++++++++ > 20 files changed, 771 insertions(+), 56 deletions(-) > create mode 100644 samples/statx/Makefile > create mode 100644 samples/statx/test-statx.c > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Author of "The Linux Programming Interface", http://blog.man7.org/