From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bhuna.collabora.co.uk ([46.235.227.227]:39392 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751748AbeEVUiJ (ORCPT ); Tue, 22 May 2018 16:38:09 -0400 From: Gabriel Krisman Bertazi To: viro@ZenIV.linux.org.uk Cc: linux-fsdevel@vger.kernel.org, Gabriel Krisman Bertazi Subject: [PATCH NOMERGE 04/13] vfs: Allow bind,remount with MS_CASEFOLD Date: Tue, 22 May 2018 17:38:09 -0300 Message-Id: <20180522203818.14666-5-krisman@collabora.co.uk> In-Reply-To: <20180522203818.14666-1-krisman@collabora.co.uk> References: <20180522203818.14666-1-krisman@collabora.co.uk> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Signed-off-by: Gabriel Krisman Bertazi --- fs/namespace.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 0053e29b73cc..127d3028c1e8 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2261,17 +2261,28 @@ static int do_loopback(struct path *path, const char *old_name, static int change_mount_flags(struct vfsmount *mnt, int ms_flags) { int error = 0; - int readonly_request = 0; + int readonly_request = 0, casefold_request = 0; if (ms_flags & MS_RDONLY) readonly_request = 1; - if (readonly_request == __mnt_is_readonly(mnt)) - return 0; + if (ms_flags & MS_CASEFOLD) + casefold_request = 1; + + if (readonly_request != __mnt_is_readonly(mnt)) { + if (readonly_request) + error = mnt_make_readonly(real_mount(mnt)); + else + __mnt_unmake_readonly(real_mount(mnt)); + if (error) + goto out; + } - if (readonly_request) - error = mnt_make_readonly(real_mount(mnt)); + if (casefold_request) + mnt->mnt_flags |= MNT_CASEFOLD; else - __mnt_unmake_readonly(real_mount(mnt)); + mnt->mnt_flags &= ~MNT_CASEFOLD; + +out: return error; } -- 2.17.0