From: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> To: arnd-r2nGTMty4D4@public.gmane.org Cc: linux-afs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: [PATCH 12/12] fsinfo: CIFS: Return information through the filesystem info syscall Date: Fri, 20 Nov 2015 14:56:51 +0000 [thread overview] Message-ID: <20151120145651.18930.93196.stgit@warthog.procyon.org.uk> (raw) In-Reply-To: <20151120145422.18930.72662.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> Return CIFS filesystem information through the filesystem info retrieval system call. This includes the following: (1) information about the capacity and resolution of the inode timestamps; (2) information about the supported IOC flags; and unless AT_NO_ATTR_SYNC is specified: (3) the statfs information retrieved from the server. We could also return the server and/or domain name. [NOTE: THIS PATCH IS UNTESTED!] Signed-off-by: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- fs/cifs/cifsfs.c | 25 +++++++++++++++++++++++++ fs/cifs/netmisc.c | 4 ---- fs/ntfs/time.h | 2 -- include/linux/time64.h | 2 ++ 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index e739950ca084..213831972164 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -207,6 +207,30 @@ cifs_statfs(struct dentry *dentry, struct kstatfs *buf) return 0; } +/* + * Read filesystem information. + */ +static int cifs_get_fsinfo(struct dentry *dentry, struct fsinfo *f, + unsigned flags) +{ + f->f_namelen = PATH_MAX; + + /* Times are signed 64-bit values with a granularity of 100ns + * with a zero point of 1st Jan 1601. + */ + f->f_min_time = S64_MIN / 10000000 - NTFS_TIME_OFFSET; + f->f_max_time = S64_MAX / 10000000 - NTFS_TIME_OFFSET; + f->f_atime_gran_exponent = -7; + f->f_btime_gran_exponent = -7; + f->f_ctime_gran_exponent = -7; + f->f_mtime_gran_exponent = -7; + + f->f_supported_ioc_flags = + FS_IMMUTABLE_FL | FS_COMPR_FL | FS_HIDDEN_FL | + FS_SYSTEM_FL | FS_ARCHIVE_FL; + return 0; +} + static long cifs_fallocate(struct file *file, int mode, loff_t off, loff_t len) { struct cifs_sb_info *cifs_sb = CIFS_FILE_SB(file); @@ -571,6 +595,7 @@ static int cifs_drop_inode(struct inode *inode) static const struct super_operations cifs_super_ops = { .statfs = cifs_statfs, + .get_fsinfo = cifs_get_fsinfo, .alloc_inode = cifs_alloc_inode, .destroy_inode = cifs_destroy_inode, .drop_inode = cifs_drop_inode, diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c index abae6dd2c6b9..74fdbd8d824d 100644 --- a/fs/cifs/netmisc.c +++ b/fs/cifs/netmisc.c @@ -910,10 +910,6 @@ smbCalcSize(void *buf) 2 /* size of the bcc field */ + get_bcc(ptr)); } -/* The following are taken from fs/ntfs/util.c */ - -#define NTFS_TIME_OFFSET ((u64)(369*365 + 89) * 24 * 3600 * 10000000) - /* * Convert the NT UTC (based 1601-01-01, in hundred nanosecond units) * into Unix UTC (based 1970-01-01, in seconds). diff --git a/fs/ntfs/time.h b/fs/ntfs/time.h index 01233989d5d1..7b546d0615ca 100644 --- a/fs/ntfs/time.h +++ b/fs/ntfs/time.h @@ -27,8 +27,6 @@ #include "endian.h" -#define NTFS_TIME_OFFSET ((s64)(369 * 365 + 89) * 24 * 3600 * 10000000) - /** * utc2ntfs - convert Linux UTC time to NTFS time * @ts: Linux UTC time to convert to NTFS time diff --git a/include/linux/time64.h b/include/linux/time64.h index 367d5af899e8..a12f6384febf 100644 --- a/include/linux/time64.h +++ b/include/linux/time64.h @@ -6,6 +6,8 @@ typedef __s64 time64_t; +#define NTFS_TIME_OFFSET ((u64)(369*365 + 89) * 24 * 3600 * 10000000) + /* * This wants to go into uapi/linux/time.h once we agreed about the * userspace interfaces. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: David Howells <dhowells@redhat.com> To: arnd@arndb.de Cc: linux-afs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-kernel@vger.kernel.org, dhowells@redhat.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Subject: [PATCH 12/12] fsinfo: CIFS: Return information through the filesystem info syscall Date: Fri, 20 Nov 2015 14:56:51 +0000 [thread overview] Message-ID: <20151120145651.18930.93196.stgit@warthog.procyon.org.uk> (raw) In-Reply-To: <20151120145422.18930.72662.stgit@warthog.procyon.org.uk> Return CIFS filesystem information through the filesystem info retrieval system call. This includes the following: (1) information about the capacity and resolution of the inode timestamps; (2) information about the supported IOC flags; and unless AT_NO_ATTR_SYNC is specified: (3) the statfs information retrieved from the server. We could also return the server and/or domain name. [NOTE: THIS PATCH IS UNTESTED!] Signed-off-by: David Howells <dhowells@redhat.com> --- fs/cifs/cifsfs.c | 25 +++++++++++++++++++++++++ fs/cifs/netmisc.c | 4 ---- fs/ntfs/time.h | 2 -- include/linux/time64.h | 2 ++ 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index e739950ca084..213831972164 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -207,6 +207,30 @@ cifs_statfs(struct dentry *dentry, struct kstatfs *buf) return 0; } +/* + * Read filesystem information. + */ +static int cifs_get_fsinfo(struct dentry *dentry, struct fsinfo *f, + unsigned flags) +{ + f->f_namelen = PATH_MAX; + + /* Times are signed 64-bit values with a granularity of 100ns + * with a zero point of 1st Jan 1601. + */ + f->f_min_time = S64_MIN / 10000000 - NTFS_TIME_OFFSET; + f->f_max_time = S64_MAX / 10000000 - NTFS_TIME_OFFSET; + f->f_atime_gran_exponent = -7; + f->f_btime_gran_exponent = -7; + f->f_ctime_gran_exponent = -7; + f->f_mtime_gran_exponent = -7; + + f->f_supported_ioc_flags = + FS_IMMUTABLE_FL | FS_COMPR_FL | FS_HIDDEN_FL | + FS_SYSTEM_FL | FS_ARCHIVE_FL; + return 0; +} + static long cifs_fallocate(struct file *file, int mode, loff_t off, loff_t len) { struct cifs_sb_info *cifs_sb = CIFS_FILE_SB(file); @@ -571,6 +595,7 @@ static int cifs_drop_inode(struct inode *inode) static const struct super_operations cifs_super_ops = { .statfs = cifs_statfs, + .get_fsinfo = cifs_get_fsinfo, .alloc_inode = cifs_alloc_inode, .destroy_inode = cifs_destroy_inode, .drop_inode = cifs_drop_inode, diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c index abae6dd2c6b9..74fdbd8d824d 100644 --- a/fs/cifs/netmisc.c +++ b/fs/cifs/netmisc.c @@ -910,10 +910,6 @@ smbCalcSize(void *buf) 2 /* size of the bcc field */ + get_bcc(ptr)); } -/* The following are taken from fs/ntfs/util.c */ - -#define NTFS_TIME_OFFSET ((u64)(369*365 + 89) * 24 * 3600 * 10000000) - /* * Convert the NT UTC (based 1601-01-01, in hundred nanosecond units) * into Unix UTC (based 1970-01-01, in seconds). diff --git a/fs/ntfs/time.h b/fs/ntfs/time.h index 01233989d5d1..7b546d0615ca 100644 --- a/fs/ntfs/time.h +++ b/fs/ntfs/time.h @@ -27,8 +27,6 @@ #include "endian.h" -#define NTFS_TIME_OFFSET ((s64)(369 * 365 + 89) * 24 * 3600 * 10000000) - /** * utc2ntfs - convert Linux UTC time to NTFS time * @ts: Linux UTC time to convert to NTFS time diff --git a/include/linux/time64.h b/include/linux/time64.h index 367d5af899e8..a12f6384febf 100644 --- a/include/linux/time64.h +++ b/include/linux/time64.h @@ -6,6 +6,8 @@ typedef __s64 time64_t; +#define NTFS_TIME_OFFSET ((u64)(369*365 + 89) * 24 * 3600 * 10000000) + /* * This wants to go into uapi/linux/time.h once we agreed about the * userspace interfaces.
next prev parent reply other threads:[~2015-11-20 14:56 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-20 14:54 [RFC][PATCH 00/12] Enhanced file stat system call David Howells 2015-11-20 14:54 ` [PATCH 01/12] Ext4: Fix extended timestamp encoding and decoding David Howells [not found] ` <20151120145434.18930.89755.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-24 17:37 ` Andreas Dilger 2015-11-24 17:37 ` Andreas Dilger 2015-11-24 19:36 ` Theodore Ts'o [not found] ` <20151124193646.GA3482-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org> 2015-11-24 20:10 ` Arnd Bergmann 2015-11-24 20:10 ` Arnd Bergmann 2015-11-29 2:45 ` Theodore Ts'o 2015-11-29 2:45 ` Theodore Ts'o [not found] ` <20151129024555.GA31968-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org> 2015-11-29 21:30 ` Arnd Bergmann 2015-11-29 21:30 ` Arnd Bergmann 2015-11-30 14:16 ` Theodore Ts'o [not found] ` <20151130141605.GA4316-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org> 2015-11-30 14:37 ` Arnd Bergmann 2015-11-30 14:37 ` Arnd Bergmann 2015-11-30 14:46 ` Elmar Stellnberger 2015-11-26 15:28 ` David Howells 2015-11-26 15:28 ` David Howells 2015-11-20 14:54 ` [PATCH 02/12] statx: Provide IOC flags for Windows fs attributes David Howells [not found] ` <20151120145447.18930.5308.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-24 19:52 ` Theodore Ts'o 2015-11-24 19:52 ` Theodore Ts'o 2015-11-26 15:35 ` David Howells [not found] ` <7976.1448552129-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-26 16:01 ` David Howells 2015-11-26 16:01 ` David Howells 2015-11-26 22:10 ` Andreas Dilger 2015-11-26 22:10 ` Andreas Dilger 2015-11-20 14:54 ` [PATCH 03/12] statx: Add a system call to make enhanced file info available David Howells [not found] ` <20151120145457.18930.79678.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-24 20:21 ` Dave Chinner 2015-11-24 20:21 ` Dave Chinner 2015-12-04 12:06 ` Pavel Machek 2015-12-04 12:06 ` Pavel Machek 2015-12-21 23:21 ` David Howells 2015-11-20 14:55 ` [PATCH 04/12] statx: AFS: Return enhanced file attributes David Howells 2015-11-20 14:55 ` [PATCH 05/12] statx: Ext4: " David Howells 2015-11-20 14:55 ` [PATCH 06/12] statx: NFS: " David Howells 2015-11-20 14:55 ` [PATCH 07/12] statx: CIFS: Return enhanced attributes David Howells 2015-11-24 17:33 ` Steve French 2015-11-24 17:34 ` Steve French 2015-11-24 17:34 ` Steve French 2015-11-20 14:56 ` [PATCH 08/12] fsinfo: Add a system call to make enhanced filesystem info available David Howells 2015-11-20 14:56 ` [PATCH 09/12] fsinfo: Ext4: Return information through the filesystem info syscall David Howells 2015-11-20 14:56 ` [PATCH 10/12] fsinfo: AFS: " David Howells 2015-11-20 14:56 ` [PATCH 11/12] fsinfo: NFS: " David Howells [not found] ` <20151120145422.18930.72662.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-20 14:56 ` David Howells [this message] 2015-11-20 14:56 ` [PATCH 12/12] fsinfo: CIFS: " David Howells 2015-11-24 8:11 ` [RFC][PATCH 00/12] Enhanced file stat system call Christoph Hellwig 2015-11-24 8:11 ` Christoph Hellwig 2015-11-20 16:19 ` Martin Steigerwald 2015-11-24 8:13 ` Christoph Hellwig 2015-11-24 8:48 ` Martin Steigerwald 2015-11-24 8:50 ` Christoph Hellwig 2015-11-20 16:28 ` David Howells 2015-11-20 16:28 ` David Howells 2015-11-20 16:35 ` Martin Steigerwald [not found] ` <4495.1448036915-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> 2015-11-25 17:51 ` J. Bruce Fields 2015-11-25 17:51 ` J. Bruce Fields [not found] ` <20151125175153.GA30335-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org> 2015-11-25 19:30 ` Andreas Dilger 2015-11-25 19:30 ` Andreas Dilger 2015-11-20 16:50 ` Casey Schaufler [not found] ` <564F4F4E.8060603-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org> 2015-11-24 8:15 ` Christoph Hellwig 2015-11-24 8:15 ` Christoph Hellwig 2015-11-24 14:43 ` Casey Schaufler 2015-11-24 16:28 ` Andreas Dilger 2015-11-26 15:19 ` David Howells 2015-11-26 22:06 ` Andreas Dilger
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20151120145651.18930.93196.stgit@warthog.procyon.org.uk \ --to=dhowells-h+wxahxf7alqt0dzr+alfa@public.gmane.org \ --cc=arnd-r2nGTMty4D4@public.gmane.org \ --cc=linux-afs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.