From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933177AbdEKR1I (ORCPT ); Thu, 11 May 2017 13:27:08 -0400 Received: from mx142.netapp.com ([216.240.21.19]:37953 "EHLO mx142.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932712AbdEKR1F (ORCPT ); Thu, 11 May 2017 13:27:05 -0400 X-IronPort-AV: E=Sophos;i="5.38,325,1491289200"; d="scan'208";a="187847620" Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=Netapp.com; Subject: Re: [RFC][PATCH 00/14] VFS: Introduce superblock configuration context [ver #2] To: David Howells , , , CC: , , References: <149451118535.4599.16084557087363834548.stgit@warthog.procyon.org.uk> From: Anna Schumaker Message-ID: <68231d1a-9902-ce3d-73e3-6e74754832e4@Netapp.com> Date: Thu, 11 May 2017 13:26:57 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.0 MIME-Version: 1.0 In-Reply-To: <149451118535.4599.16084557087363834548.stgit@warthog.procyon.org.uk> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [99.9.112.69] X-ClientProxiedBy: BN6PR07CA0019.namprd07.prod.outlook.com (10.173.33.157) To DM5PR06MB2475.namprd06.prod.outlook.com (10.168.178.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0735fd99-4909-4730-b7c0-08d49892efea X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DM5PR06MB2475; X-Microsoft-Exchange-Diagnostics: 1;DM5PR06MB2475;3:qCSLucnMSVBWVfcUEhb9HP4kApnoQmcTelS1yoTJPUvayKof7/IEvdR1vGJ/UpH9rsdgQjOodyMgsXc564Yr54Su7OANv3+5dQ+ZtPEtuAl9HO+nOLp6rupgtGyJR1KCsIyCBcqtK6+JXg3ksaqZ/OBZGVU5kKo3wDgPsZC5Ha6xr3GmrYgKgQOK5GyZCqAT8SViAoHhwFxguz9fcvYvjjjdCyC3CCGKYnujCc73IpczZLTaVuyTxYdirGIS8Wlz24FTNMDw6HGr/nBImjfYn+oWDNFnIprkh3hCmhEAxbki4UYHS0bJQ42JnOY0MvRFAvkMq83Hb3u1S39z9ieScw==;25:IMZwVdespGtHv6yiXmo6RJ7frDUGqcyoWcgK2hyOfodwypIdJRVpQ0+ytz3BVVlaa8d3kQjwz5xxeG1KmtZefdhMfg/xDNYF6OfUCBehDHOCxvRVRERUVHsfYfgPsd6B2fM7EarWI3hpuclSQCwKgENavl90lACSBko2kUQNZDU/fRq9oKIw/HwE/FEN+5gczjLIkDjN++4W5QPBWdnBQUREZYw5nNVLIZxSdql7Ya0o5KM1bw9g6dkvdo6vFTAxmiwQA6xcY5BuX2vy9K211pSuCBJ+IAoy92LVjxxrggWjTYccajoPf6pwPHZbTziz3+wnonHU/Tpu9e8v1IpP3eZfoJ9tDHwestrdxn3+UvAM2+4Hsm8dSB08ie1BHEhnZ8jcqtoqA/cUtXWpE5/UdEALdC3CvLR/8wKVPgbZyq89TCVTFYljD2IGE1UQlEalluqPTE8Q9MJI8o87F9PzU1gEo+eKox+Cdgh/PPCy0PA= X-Microsoft-Exchange-Diagnostics: 1;DM5PR06MB2475;31:nXifQ6x7zj85OphvKjnwcoyOeTUeWku16tXRO9Ne3Wdrcg2bSv1KIooCMLiBwTqLtCo6dGpwNtZIwGmsFmLNF0qLP6qi20n4Z/csJ2qNeePOMRoW49xzxIenNihWMBXhcnLXmLOZfF2hxBge3Q9YgWKZvQ5VyCP0GuKCFiBQIQRNrnc/zNtcfs1SaRJ0EcW1V6C1OHR0ROR1WB1O+R08Uz5TR5g+lQVraoxYTOt5O7TJ4JzaNCVixF4ZTDTJClXAsnJTGCjSlIUJEA5yJ11Wdg==;20:Zd0zMbsjv0UiRQR9dZEpHXmJEoIVDxL5i/ApFKcGv7E+qXNI/YQcR9P6NUEYsTk8HUMMQ1AWhvQaP8VOy/C/r97rBnwbSF9SsBmcJhhxhMPBL8jSUklQJoPFnpAyd1RjTDUgxRC4vM1qH0k077OqScyeN/64WQ03tjyb9V/BzVEnCqdtUFS737hyaTXwbF21GbgLC4Ktsr/pDP1Qoh0hIrup7uSrW5prz7C3aufhn8zc/xQKrWADyKLlt6ns6w5ktw+7gOohtpFQfCXdz1EWoeByBr4sgthHvV0sOjCUfX7NnC3am7tUofL1/XDSPc5+j6NRHg2us+v+xMOZ1ehjV5fskmJI/ulX3Z+CaPfZy2Db35FWOBfeO+MwwLaAwY/TMXVPaE0pV8gUCTJJIXMzN9NFnlPw45Kcdg8VsF0nvNxwylHtPU5yrqup5AyKPQZcX44AeeG0VVoNRarUC517/hxxuuq2GbMFgYF1cQazpvcCVh04GpdT6Fhu7HOSxy4D X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(9452136761055)(84791874153150); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(6072148);SRVR:DM5PR06MB2475;BCL:0;PCL:0;RULEID:;SRVR:DM5PR06MB2475; X-Microsoft-Exchange-Diagnostics: 1;DM5PR06MB2475;4:XqDa9qGow9QY1kCG78DLyrmnE4MC4xFUMPVZYsxf/2tEkCkQNbxmnsA9JAajW5doSv4eqRIn2K4K/QChLc4ityNhtrD2l0L2FIjff8UUzRJ8K9Lev36DVHFP0T27RNDNUwaHA2EUUhvkctApJDateL9wrtE48HdqrNnMyarQuryavmXJWKP4+G8G962ZwB6BEr/6yYmwQi+fI/bOlAKD4Nxm2QrmeJ00qrlaZCHUgnNMcgCiG38/sv50sL08bSk7Sd6lXnab8m3bHnlcDREUBd+GPDdwdzRzwiX7/Iz3zTbKvcuSo8dul+tMW7nIfTosnRAEGzBug53B+dFFJDriWjsE9ZKEpW8quULmjemc7FjRMKn/p3UqyLJBS93zODb82vrtLuidbEz5JS9w+7saM2N6hc3cniETUWs/q3OuMaKIF93YbMwHZKpxTzFYWshwH4vYOHi5O8d68Ne1WxVbJEKnf2u0ld1z+H5uSvP/JtFUVZU5mko3It5NJ4MkAkrSbbngv+TSUkaz0oiez4Ih7x6xNzFJlH8Ihx/H0PNkSRBaW9POc2XO1b4uwAkg6RetHxj0hNyjw2WrFq7//det+5eMuOfG2sAhHFbScxh3uf8ttTm5pAaQsDB0MLvZbXjCX7d0W2wMZvzGoSlZjx7t4vXi+S+Z/pCyVhXtyRQJ6hpfxidliO2BO+HeKjJQZopnwu9DJdTr/mNLxxkei0KRW9uXApk56JrXrob3xJ5Qnrwvv06ZwhWP/F2VJ4Goyz+HXgV5EfHiB5A9eaXUbj9mAsL+S/RR3dHCaH2pw+frg48C9Cto9BrCIXcRid+gGYG8P/Bejcctij91SFo2EzDCvN0xWXSWFH1THAMjca8+NldG/iNyLVJTCdAnoM+7yGwphjeSSj8M8snTLtFDoObihBouHKzs3s1Bs3Yu4v5+bHU= X-Forefront-PRVS: 0304E36CA3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39450400003)(39410400002)(39840400002)(39850400002)(39400400002)(377454003)(24454002)(33646002)(54906002)(66066001)(6506006)(4001350100001)(65956001)(38730400002)(5660300001)(42186005)(6246003)(53416004)(305945005)(65806001)(65826007)(6666003)(83506001)(72206003)(47776003)(6306002)(189998001)(966004)(6486002)(53936002)(31686004)(4326008)(25786009)(31696002)(2950100002)(64126003)(81166006)(3846002)(50466002)(7736002)(23676002)(8676002)(478600001)(54356999)(76176999)(50986999)(229853002)(36756003)(53546009)(6116002)(86362001)(2201001)(2870700001)(2906002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR06MB2475;H:gouda.nowheycreamery.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjA2TUIyNDc1OzIzOkk2V0N5MjN1SWhxQnZTbjFzQjZONkxKN3JG?= =?utf-8?B?RjloZTlUdStYTkdHYkRaZlBlVWRvb3NEV0UyQTFFc2hzVFFVQ3ltMGN0ency?= =?utf-8?B?RTlZMDFsWTllZUVzVi9wNFoxaFdlM0hGNHQ0Z096dmRQc3NCL205bndTVk5T?= =?utf-8?B?NlZpeTAyUWFRRU44MGs1NFR3UWlqaUtYbWJkK2l2YWNBdkVWaWhPS1lEZjFr?= =?utf-8?B?WVgyZ2ZqRUx0MFZwQ2NqYVM4U0NGMFJweTJzTEduQVpTVDVLVUp6b3B3cUlF?= =?utf-8?B?bUx3NHdRZ2R0OStXWjRDMFJJZ1puU2RsaGVqS0ZOOXBhVC84Kzl4akhpa3Er?= =?utf-8?B?NkVKblZxeDhTc0kzMGQvbkZQT2tiN2FNcWNaK1E0Z1F0cFg2RlkyVlFDUDJX?= =?utf-8?B?UGRKbWZNeW41RHpHU3JFMDg0eVFxTkJrNkVUbVZ1bGFVY25VQ2NhQk52d21Z?= =?utf-8?B?VEFBQjI4UE1rVnUrOC9VSHRnSVRqMEU3YSt5RXJSNUZnVE9XaTlCTWJTSWxi?= =?utf-8?B?cG1lSU1JSVErTXpndjhLSXNSbVUyUElPU3V0cGM5LzBjaUxYMExjVUxPU0xk?= =?utf-8?B?Z1MwcnF6UnBtY3ozdFR3WHN5Z0lCQ2hLWTFwcmhqUWZsMU5HRytZdUxOWms0?= =?utf-8?B?QVorUGkwcTA1WnJEZGF6bFRMZWowWFpQcENtclhWb004TnNPZ2hLdGJwTCtT?= =?utf-8?B?R0ZidnRtQjdWbGN5VDhYSTlpb3A2ZnNDQ2dES3N4M2YyNitDTWVVaHVvbDRW?= =?utf-8?B?MGRGdDZmNjNtRlM5VHVBWFRNNllqQ0tHVWQ5ck1ObjJ6OFA4bUZRSlp1MFBG?= =?utf-8?B?WEQ2WHJpQ01WNm8yamI0R3drdGtpTXRZNS9HT0VIV3J4Vm82Q0c4eFhKdDk2?= =?utf-8?B?a2FtMDNTdmV3eUhScGhjMUNRam9EMDU5M2JVNjRwbS9RR2NlQmlyZDc0UFdq?= =?utf-8?B?S1RSK3dEcmhQU0srS2cxb1pweWJsZzFYejFwVW0zeVNDRjVDVnhZQWhweitC?= =?utf-8?B?Ujk3NmFacG50S0x5UnBnRWczaVZtZGswek1teStRcDZMdmtvUXBNT2Rzai9l?= =?utf-8?B?a2V1WUlrK1ZKai9oWUR0TEFKMXhJSm9XR0lDRHlPazBBKzlwUFpNZFM3NU5T?= =?utf-8?B?RU8yVEI0YWRzeFh1Z0ZQWU14Z2Y4VzFxdkVSVVJpWjlPSEZFZWRBUW9ORGl0?= =?utf-8?B?V2FlWGdqcFpjR0J0clhSU2JHWUNvNGxxeG5HUkdnNWowRkp1SVNPWGI2ZWZ4?= =?utf-8?B?L1o3UWZuTHp6MEdLalR6ZlNiaFlEZUJlYjZPdlVjUk1WeFdGaVJ6WkgxYkw5?= =?utf-8?B?ZHJpbVBzQVBHWFk5OE5lN1UxSDlTaCtnMmZUREhMeWJKSVBPWlFRZEowZExT?= =?utf-8?B?VlZFN01haFZKRzRLay9sSFc3bHJiYWloMVdla2h3UFB4V3lORXlJam9TMUVt?= =?utf-8?B?cG1hNjN0RjY5MGJ1UUwvU2RBUFlkWmpHTGlyK1dob1UydzNNajRyOHh1Tzkw?= =?utf-8?B?OW9Ba2dDNXc2NERMR1pNbDlXdXdKWmFIUVZnbFJQdlJKZXBLdjh1OUpndzhY?= =?utf-8?B?UURlVFpkZ21YQ0ovMVZ5VmJoaldldnFkSTdzbHJURnpLL3E5eW1xVWdwTnlM?= =?utf-8?B?N0dCQkw1M1pYM1dVVVF3TXQ3RUJYT0ZPeUd2a0dJMUwzeTh0OWhXOU9kQWVU?= =?utf-8?B?QkxzeGdpd0dxOWRXUUpEd1FRZ2w1Tm5JV0JYNVNXTy9kUU1BSUZPSFoyMWZU?= =?utf-8?B?ejBHa2xKNGxQSFlxaExsMzQ5NjFKejY2V2VIbTBCK1NEeWhSakNKYTJ1WjJw?= =?utf-8?B?SnFaU1MzdzVNTHhvOVNDc1d5NWorR0UxVlhQaTU2WWpJUFF2RWs1cisyTkVW?= =?utf-8?Q?uPh2I26Ngs4=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR06MB2475;6:U5lHOcy+E4/+4pSNdR44qsIoTCtgrAIHJGXGKmI7EGS0RbC6FSUg3lQO29r5SdqOHymdBeRD8snwdy5Zvq3MRNV98jDlX6Inzj9di2rVZV1z74MPCC19Hq0sJZkIIkX+Q3+HZgvJVxzgkD2ibcYg/N/KVEEKEXTPUNJHIwpY1aZawlB2zKyE8aXfo932/hc60fEf5SrYrDlrK0OSidYAfUQ0LHBEW7Pe6lylEgRLrWvznkMxfgPclwOrCcGaoKiEdZ3OMLPAHmxv4QvS5jEsW+NA8ffUDkvEKpyjssV8jNEQoG0uLH6a7848dJ0zq9ie7Bzd2YUio6wrzhYeS22Qlw2Cp2rDH5fL0LDmIETP0VNzLBLff14GsZfpa7fPSfKV5nIIZ+JNiZ2hazQlW0Kgqr8m0tLQHa8VCUakvyrcLsPBVS6ZNN3wtnoyxv/hd4uJOAHiEalfkQgb0944MoEnExYO8XXq0sKB7fkAtVVK/eR9qnhJNUbkpxvLmdNOGTSId4UAkiLXqwJ82lbJh2BWog==;5:KBuGRwypR7TqQu5KM6CufixWVV9vXPdSAZxxUCfT4mFKKSbn/ERoCW1Kh0wYXBHUAsktlRZM5IVmHO0WdeDZLwJBqbDdGPyEhihE/os+Yms41ewNVhxDy/vR27/zsegfZstSp0amVINVER7XXKpfqA==;24:+5eDY5LvsuyX2H1HN/Jze3wGqjMqzBmwZMmLsSQs5zCnUdghpFVbzL2JeQWFMFQECe+Dqn1pKg1JUSQ3ZZJqhVNwQJZr9r0hDBZGzlOXX1g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR06MB2475;7:WwT7LFLuxl2FpdTWLP5LsLNv76RojElye4mdIB2SlMXP//NGUXvTSJMmKpZE09ugSAwEDsb/RDWYJmUELaizBZgYjVRWgeSWZBC9NnsusX36G2WzTA+GkkdAlgEgiVUvODu3mxnvhdk3HJlSaCKL2BNZcH/TYMTR/wDXZcREglN1puNW/0eOn9ZylWtWYW6BdGxRv5Tl68Tdp7vhjfkwRh5ZD6zbGkTLZk/zLbNoRS684TaKLqlsw0PNbDHjBjX1xH4UwF0TQIcT5tHNnAFItKGkwPITDzHP1YSFwsuXPrOSTPqKnLWz5mFlbEvrj5Oy9rcgFnMD9wHJ3A6TfEAFTw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2017 17:27:01.5069 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR06MB2475 X-OriginatorOrg: netapp.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi David, On 05/11/2017 09:59 AM, David Howells wrote: > > Here are a set of patches to create a superblock configuration context > prior to setting up a new mount, populating it with the parsed > options/binary data, creating the superblock and then effecting the mount. > > This allows namespaces and other information to be conveyed through the > mount procedure. It also allows extra error information to be returned > (so many things can go wrong during a mount that a small integer isn't > really sufficient to convey the issue). > > This also allows Miklós Szeredi's idea of doing: > > fd = fsopen("nfs"); > write(fd, "option=val", ...); > fsmount(fd, "/mnt"); > > that he presented at LSF-2017 to be implemented (see the relevant patches > in the series), to which I can add: > > read(fd, error_buffer, ...); > > to read back any error message. I didn't use netlink as that would make it > depend on CONFIG_NET and would introduce network namespacing issues. > > I've implemented mount context handling for procfs and nfs. > > Significant changes: > > ver #2: > > (*) Removed the ->fill_super() from sb_config_operations and passed it in > directly to functions that want to call it. NFS now calls > nfs_fill_super() directly rather than jumping through a pointer to it > since there's only the one option at the moment. > > (*) Removed ->mnt_ns and ->sb from sb_config and moved ->pid_ns into > proc_sb_config. > > (*) Renamed create_super -> get_tree. > > (*) Renamed struct mount_context to struct sb_config and amended various > variable names. > > (*) sys_fsmount() acquired AT_* flags and MS_* flags (for MNT_* flags) > arguments. > > ver #1: > > (*) Split the sb_config stuff out into its own header. > > (*) Support non-context aware filesystems through a special set of > sb_config operations. > > (*) Stored the created superblock and root dentry into the sb_config after > creation rather than directly into a vfsmount. This allows some > arguments to be removed to various NFS functions. > > (*) Added an explicit superblock-creation step. This allows a created > superblock to then be mounted multiple times. > > (*) Added a flag to say that the sb_config is degraded and cannot have > another go at having a superblock creation whilst getting rid of the > one that says it's already mounted. > > Further developments: > > (*) Implement sb reconfiguration (for now it returns ENOANO). > > (*) Implement mount context support in more filesystems, ext4 being next > on my list. > > (*) Move the walk-from-root stuff that nfs has to generic code so that you > can do something akin to: > > mount /dev/sda1:/foo/bar /mnt > > See nfs_follow_remote_path() and mount_subtree(). This is slightly > tricky in NFS as we have to prevent referral loops. > > (*) Move the pid_ns pointer from struct mount_context to struct > proc_mount_context as I'm not sure it's necessary for anything other > than procfs. > > (*) Work out how to get at the error message incurred by submounts > encountered during nfs_follow_remote_path(). > > Should the error message be moved to task_struct and made more > general, perhaps retrieved with a prctl() function? > > (*) Clean up/consolidate the security functions. Possibly add a > validation hook to be called at the same time as the mount context > validate op. > > The patches can be found here also: > > http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=mount-context > > David > --- > David Howells (14): > Provide a function to create a NUL-terminated string from unterminated data > Clean up whitespace in fs/namespace.c > VFS: Make get_mnt_ns() return the namespace > VFS: Make get_filesystem() return the affected filesystem > VFS: Provide empty name qstr > VFS: Introduce a superblock configuration context > Implement fsopen() to prepare for a mount > Implement fsmount() to effect a pre-configured mount > Sample program for driving fsopen/fsmount > procfs: Move proc_fill_super() to fs/proc/root.c > proc: Add superblock config support to procfs > NFS: Add mount context support. > Support legacy filesystems > Add commands to create or update a superblock > > > Documentation/filesystems/mounting.txt | 470 ++++++++ > arch/x86/entry/syscalls/syscall_32.tbl | 2 > arch/x86/entry/syscalls/syscall_64.tbl | 2 > fs/Makefile | 3 > fs/dcache.c | 8 > fs/filesystems.c | 3 > fs/fsopen.c | 302 +++++ > fs/gfs2/dir.c | 3 > fs/internal.h | 4 > fs/libfs.c | 17 > fs/mount.h | 3 > fs/namei.c | 3 > fs/namespace.c | 495 +++++++-- > fs/nfs/Makefile | 2 > fs/nfs/client.c | 74 + > fs/nfs/getroot.c | 76 + > fs/nfs/internal.h | 142 +-- > fs/nfs/mount.c | 1497 +++++++++++++++++++++++++++ > fs/nfs/namespace.c | 76 + > fs/nfs/nfs3_fs.h | 2 > fs/nfs/nfs3client.c | 6 > fs/nfs/nfs3proc.c | 2 > fs/nfs/nfs4_fs.h | 4 > fs/nfs/nfs4client.c | 82 + > fs/nfs/nfs4namespace.c | 208 ++-- > fs/nfs/nfs4proc.c | 3 > fs/nfs/nfs4super.c | 220 ++-- > fs/nfs/proc.c | 2 > fs/nfs/super.c | 1782 ++------------------------------ > fs/nsfs.c | 3 > fs/pipe.c | 3 > fs/proc/inode.c | 50 - > fs/proc/internal.h | 6 > fs/proc/root.c | 210 +++- > fs/sb_config.c | 524 +++++++++ > fs/super.c | 110 +- > include/linux/dcache.h | 5 > include/linux/fs.h | 16 > include/linux/lsm_hooks.h | 47 + > include/linux/mount.h | 4 > include/linux/nfs_xdr.h | 7 > include/linux/sb_config.h | 100 ++ > include/linux/security.h | 40 + > include/linux/string.h | 1 > include/linux/syscalls.h | 3 > include/uapi/linux/magic.h | 1 > kernel/sys_ni.c | 4 > mm/util.c | 24 > samples/fsmount/test-fsmount.c | 79 + > security/security.c | 45 + > security/selinux/hooks.c | 202 +++- > 51 files changed, 4596 insertions(+), 2381 deletions(-) Is there any way to split the NFS patch into multiple pieces? The patch in your git tree is longer than my attention span, and I'm having a hard time keeping track of everything going on. I also suspect that this might be why it doesn't show up in my email with the rest of your patches. Thanks, Anna > create mode 100644 Documentation/filesystems/mounting.txt > create mode 100644 fs/fsopen.c > create mode 100644 fs/nfs/mount.c > create mode 100644 fs/sb_config.c > create mode 100644 include/linux/sb_config.h > create mode 100644 samples/fsmount/test-fsmount.c > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >