linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: dhowells@redhat.com, "Theodore Y. Ts'o" <tytso@mit.edu>,
	Matthew Wilcox <willy@infradead.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 36/38] vfs: Add a sample program for the new mount API [ver #10]
Date: Tue, 31 Jul 2018 11:11:53 +0100	[thread overview]
Message-ID: <18974.1533031913@warthog.procyon.org.uk> (raw)
In-Reply-To: <20180731094021.GC9836@amd>

Pavel Machek <pavel@ucw.cz> wrote:

> Proposal is "message %s foo %s\0param 1\0param2\0", only strings
> allowed.

I think that's too strict and you will need to allow integer values, IP
addresses and possibly other things also.  It could certainly have a limited
set (e.g. no kernel pointers).

You also haven't proposed what you think the internal interface should look
like.

> That's simple enough, yet allows translations.

Yes and no.  From the point of view of translating it, yes, it's easier, but
from the point of view of actually writing these things in the kernel, it's
not.

So, currently, I have, say:

	cg_invalf(fc, "option or name mismatch, new: 0x%x \"%s\", old: 0x%x \"%s\"", ...);

Now I can split that to separate out the option change error from the option
change error:

	cg_invalf(fc, "Name mismatch, new: \"%s\", old: \"%s\"", ...);
	cg_invalf(fc, "Option mismatch, new: 0x%x, old: 0x%x", ...);

but we still need to communicate to the logging function how many arguments
we're actually passing.  Now, I wouldn't consider this a fast-path, so
actually counting the arguments encoded in the format string is probably fine
- otherwise we have to actually pass the number of arguments in, e.g.:

	cg_invalf(fc, "Option mismatch, new: 0x%x, old: 0x%x", 2, ...);

and then the kernel has to render the whole lot into 

Another example, in ext4 we have:

	printk(KERN_NOTICE "EXT4-fs (%s): last error at time %u: %.*s:%d",

so we could do something like:

	infof(fc, "EXT4-fs (%s): last error at time %u: %.*s:%d", ...);

on mount.  But the use of "%.*s" is a pain for your interface.  We can't pass
qualifiers like "*" to userspace, so either the caller would have to copy the
string first or the logging routines would have to edit the format string.
Though I suppose we could leave the editing to userspace.

David

  parent reply	other threads:[~2018-07-31 11:51 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-27 17:31 [PATCH 00/38] VFS: Introduce filesystem context [ver #10] David Howells
2018-07-27 17:31 ` [PATCH 01/38] vfs: syscall: Add open_tree(2) to reference or clone a mount " David Howells
2018-07-27 17:31 ` [PATCH 02/38] vfs: syscall: Add move_mount(2) to move mounts around " David Howells
2018-07-27 17:31 ` [PATCH 03/38] teach move_mount(2) to work with OPEN_TREE_CLONE " David Howells
2018-07-27 17:31 ` [PATCH 04/38] vfs: Suppress MS_* flag defs within the kernel unless explicitly enabled " David Howells
2018-07-27 17:31 ` [PATCH 05/38] vfs: Introduce the basic header for the new mount API's filesystem context " David Howells
2018-07-27 17:32 ` [PATCH 06/38] vfs: Introduce logging functions " David Howells
2018-07-27 17:32 ` [PATCH 07/38] vfs: Add configuration parser helpers " David Howells
2018-07-27 17:32 ` [PATCH 08/38] vfs: Add LSM hooks for the new mount API " David Howells
2018-07-27 17:32 ` [PATCH 09/38] selinux: Implement the new mount API LSM hooks " David Howells
2018-07-27 17:32 ` [PATCH 10/38] smack: Implement filesystem context security " David Howells
2018-07-27 17:32 ` [PATCH 11/38] apparmor: Implement security hooks for the new mount API " David Howells
2018-07-27 17:32 ` [PATCH 12/38] vfs: Pass key and value into LSM and FS and provide a helper parser " David Howells
2018-07-27 17:32 ` [PATCH 13/38] tomoyo: Implement security hooks for the new mount API " David Howells
2018-07-28  2:29   ` Tetsuo Handa
2018-07-30 10:49   ` David Howells
2018-07-27 17:32 ` [PATCH 14/38] vfs: Separate changing mount flags full remount " David Howells
2018-07-27 17:33 ` [PATCH 15/38] vfs: Implement a filesystem superblock creation/configuration context " David Howells
2018-07-27 17:33 ` [PATCH 16/38] vfs: Remove unused code after filesystem context changes " David Howells
2018-07-27 17:33 ` [PATCH 17/38] procfs: Move proc_fill_super() to fs/proc/root.c " David Howells
2018-07-27 17:33 ` [PATCH 18/38] proc: Add fs_context support to procfs " David Howells
2018-07-27 17:33 ` [PATCH 19/38] ipc: Convert mqueue fs to fs_context " David Howells
2018-07-27 17:33 ` [PATCH 20/38] cpuset: Use " David Howells
2018-07-27 17:33 ` [PATCH 21/38] kernfs, sysfs, cgroup, intel_rdt: Support " David Howells
2018-07-27 17:33 ` [PATCH 22/38] hugetlbfs: Convert to " David Howells
2018-07-27 17:33 ` [PATCH 23/38] vfs: Remove kern_mount_data() " David Howells
2018-07-27 17:34 ` [PATCH 24/38] vfs: Provide documentation for new mount API " David Howells
2018-07-27 17:34 ` [PATCH 25/38] Make anon_inodes unconditional " David Howells
2018-07-27 20:04   ` Randy Dunlap
2018-07-30 10:52   ` David Howells
2018-07-27 17:34 ` [PATCH 26/38] vfs: syscall: Add fsopen() to prepare for superblock creation " David Howells
2018-07-27 17:34 ` [PATCH 27/38] vfs: Implement logging through fs_context " David Howells
2018-07-27 17:34 ` [PATCH 28/38] vfs: Add some logging to the core users of the fs_context log " David Howells
2018-07-27 17:34 ` [PATCH 29/38] vfs: syscall: Add fsconfig() for configuring and managing a context " David Howells
2018-07-27 19:42   ` Andy Lutomirski
2018-07-27 21:51   ` David Howells
2018-07-27 21:57     ` Andy Lutomirski
2018-07-27 22:27     ` David Howells
2018-07-27 22:32   ` Jann Horn
2018-07-29  8:50   ` David Howells
2018-07-29 11:14     ` Jann Horn
2018-07-30 12:32     ` David Howells
2018-07-27 17:34 ` [PATCH 30/38] vfs: syscall: Add fsmount() to create a mount for a superblock " David Howells
2018-07-27 19:27   ` Andy Lutomirski
2018-07-27 19:43     ` Andy Lutomirski
2018-07-27 22:09     ` David Howells
2018-07-27 22:06   ` David Howells
2018-07-27 17:34 ` [PATCH 31/38] vfs: syscall: Add fspick() to select a superblock for reconfiguration " David Howells
2018-07-27 17:34 ` [PATCH 32/38] afs: Add fs_context support " David Howells
2018-07-27 17:35 ` [PATCH 33/38] afs: Use fs_context to pass parameters over automount " David Howells
2018-07-27 17:35 ` [PATCH 34/38] vfs: syscall: Add fsinfo() to query filesystem information " David Howells
2018-07-27 19:35   ` Andy Lutomirski
2018-07-27 22:12   ` David Howells
2018-07-27 23:14   ` Jann Horn
2018-07-27 23:49   ` David Howells
2018-07-28  0:14     ` Anton Altaparmakov
2018-07-27 23:51   ` David Howells
2018-07-27 23:58     ` Jann Horn
2018-07-28  0:08     ` David Howells
2018-07-30 14:48   ` David Howells
2018-07-31  4:16   ` Al Viro
2018-07-31 12:39   ` David Howells
2018-07-31 13:20   ` David Howells
2018-07-31 23:49   ` Darrick J. Wong
2018-08-01  1:07   ` David Howells
2018-07-27 17:35 ` [PATCH 35/38] afs: Add fsinfo support " David Howells
2018-07-27 17:35 ` [PATCH 36/38] vfs: Add a sample program for the new mount API " David Howells
2018-07-29 11:37   ` Pavel Machek
2018-07-30 12:23   ` David Howells
2018-07-30 14:31     ` Pavel Machek
2018-07-30 18:08       ` Matthew Wilcox
2018-07-30 18:16         ` Pavel Machek
2018-07-30 18:18         ` Linus Torvalds
2018-07-30 18:38           ` Matthew Wilcox
2018-07-30 18:59             ` Linus Torvalds
2018-07-30 19:49               ` Matthew Wilcox
2018-07-30 21:02                 ` Theodore Y. Ts'o
2018-07-30 21:23                   ` Pavel Machek
2018-07-30 23:58                   ` Matthew Wilcox
2018-07-31  0:58                     ` Theodore Y. Ts'o
2018-07-31  9:40                       ` Pavel Machek
2018-07-31 10:11                       ` David Howells [this message]
2018-07-31 11:34                         ` Pavel Machek
2018-07-31 12:07                           ` Matthew Wilcox
2018-07-31 12:28                             ` Pavel Machek
2018-07-31 13:33                               ` Al Viro
2018-07-31 13:00                             ` David Howells
2018-07-31 19:39                               ` Pavel Machek
2018-07-31 21:00                               ` David Howells
2018-07-31 21:21                                 ` Linus Torvalds
2018-07-31 21:38                                 ` David Howells
2018-07-30 20:47               ` Pavel Machek
2018-07-30 15:33     ` David Howells
2018-07-30 17:30       ` Pavel Machek
2018-07-30 17:54         ` Linus Torvalds
2018-07-30 18:16           ` Pavel Machek
2018-07-27 17:35 ` [PATCH 37/38] vfs: Allow fsinfo() to query what's in an fs_context " David Howells
2018-07-27 17:35 ` [PATCH 38/38] vfs: Allow fsinfo() to be used to query an fs parameter description " David Howells

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=18974.1533031913@warthog.procyon.org.uk \
    --to=dhowells@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).