All of lore.kernel.org
 help / color / mirror / Atom feed
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 10/12] fsinfo: AFS: Return information through the filesystem info syscall
Date: Fri, 20 Nov 2015 14:56:26 +0000	[thread overview]
Message-ID: <20151120145626.18930.53321.stgit@warthog.procyon.org.uk> (raw)
In-Reply-To: <20151120145422.18930.72662.stgit@warthog.procyon.org.uk>

Return AFS 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) the cell name as the domain name, setting FSINFO_DOMAIN_NAME;

 (3) the volume name, setting FSINFO_VOLUME_NAME;

 (4) the volume ID plus the volume type75 as the volume ID, setting
     FSINFO_VOLUME_ID;

and unless AT_NO_ATTR_SYNC is specified:

 (5) the statfs information retrieved from the server.

Note that no FSID value is returned as the local FSID since the FSID value
is a local handle used by NFSD; see the volume ID field instead.

Example output:

	[root@andromeda ~]# ./test-fsinfo /afs
	fsinfo(/afs) = 0
	mask  : 1ad
	dev   : 00:24
	fs    : type=6b414653 name=afs
	ioc   : 0
	nameln: 255
	flags : 1020
	times : range=0-ffffffff
	atime : gran=1s
	btime : gran=1s
	ctime : gran=1s
	mtime : gran=1s
	blocks: n=5000 fr=4998 av=4998
	bsize : 1024
	frsize: 1024
	volid : 20000000 00000000 00000000 00000000
	volume: 'root.afs'
	domain: 'cambridge.redhat.com'

Possibly I should indicate the length of data stored in the volid field.

Signed-off-by: David Howells <dhowells@redhat.com>
---

 fs/afs/super.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/fs/afs/super.c b/fs/afs/super.c
index 1fb4a5129f7d..ca88bb43ee1a 100644
--- a/fs/afs/super.c
+++ b/fs/afs/super.c
@@ -37,6 +37,8 @@ static void afs_kill_super(struct super_block *sb);
 static struct inode *afs_alloc_inode(struct super_block *sb);
 static void afs_destroy_inode(struct inode *inode);
 static int afs_statfs(struct dentry *dentry, struct kstatfs *buf);
+static int afs_get_fsinfo(struct dentry *dentry, struct fsinfo *f,
+			  unsigned flags);
 
 struct file_system_type afs_fs_type = {
 	.owner		= THIS_MODULE,
@@ -49,6 +51,7 @@ MODULE_ALIAS_FS("afs");
 
 static const struct super_operations afs_super_ops = {
 	.statfs		= afs_statfs,
+	.get_fsinfo	= afs_get_fsinfo,
 	.alloc_inode	= afs_alloc_inode,
 	.drop_inode	= afs_drop_inode,
 	.destroy_inode	= afs_destroy_inode,
@@ -555,3 +558,39 @@ static int afs_statfs(struct dentry *dentry, struct kstatfs *buf)
 	buf->f_bavail = buf->f_bfree = buf->f_blocks - vs.blocks_in_use;
 	return 0;
 }
+
+/*
+ * Read filesystem information.
+ */
+static int afs_get_fsinfo(struct dentry *dentry, struct fsinfo *f,
+			  unsigned flags)
+{
+	struct afs_super_info *as = dentry->d_sb->s_fs_info;
+	int ret;
+
+	f->f_bsize	= AFS_BLOCK_SIZE;
+	f->f_namelen	= AFSNAMEMAX - 1;
+	f->f_min_time	= 0;
+	f->f_max_time	= U32_MAX;
+
+	/* Construct a volume ID from the AFS volume ID and type */
+	f->f_volume_id[0] = as->volume->vid >> 24;
+	f->f_volume_id[1] = as->volume->vid >> 16;
+	f->f_volume_id[2] = as->volume->vid >> 8;
+	f->f_volume_id[3] = as->volume->vid >> 0;
+	f->f_volume_id[4] = as->volume->type;
+
+	strcpy(f->f_volume_name, as->volume->vlocation->vldb.name);
+	strcpy(f->f_domain_name, as->volume->cell->name);
+
+	f->f_mask = FSINFO_VOLUME_ID | FSINFO_VOLUME_NAME | FSINFO_DOMAIN_NAME;
+
+	if (flags & AT_NO_ATTR_SYNC)
+		return 0;
+
+	ret = vfs_get_fsinfo_from_statfs(dentry, f, flags);
+
+	/* Don't pass the FSID to userspace since this isn't exportable */
+	f->f_mask &= ~FSINFO_FSID;
+	return 0;
+}

  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 ` David Howells [this message]
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   ` [PATCH 12/12] fsinfo: CIFS: " David Howells
2015-11-20 14:56     ` 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=20151120145626.18930.53321.stgit@warthog.procyon.org.uk \
    --to=dhowells@redhat.com \
    --cc=arnd@arndb.de \
    --cc=linux-afs@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=samba-technical@lists.samba.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: link
Be 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.