cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: Andrew Price <anprice@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] gfs2: Automatically set GFS2_DIF_SYSTEM flag on system files
Date: Thu, 5 Nov 2015 19:03:14 +0000	[thread overview]
Message-ID: <563BA7F2.8030909@redhat.com> (raw)
In-Reply-To: <590030517.5073928.1446748809867.JavaMail.zimbra@redhat.com>

On 05/11/15 18:40, Abhijith Das wrote:
> Hi Andy,
>
> ----- Original Message -----
>> From: "Andrew Price" <anprice@redhat.com>
>> To: "Abhi Das" <adas@redhat.com>, cluster-devel at redhat.com
>> Sent: Thursday, November 5, 2015 12:19:48 PM
>> Subject: Re: [Cluster-devel] [GFS2 PATCH] gfs2: Automatically set GFS2_DIF_SYSTEM flag on system files
>>
>> Hi Abhi,
>>
>> On 30/10/15 19:57, Abhi Das wrote:
>>> When new files and directories are created inside a parent directory
>>> we automatically inherit the GFS2_DIF_SYSTEM flag (if set) and assign
>>> it to the new file/dirs.
>>>
>>> All new system files/dirs created in the metafs by, say gfs2_jadd,
>>> will have this flag set because they will have parent directories in
>>> the metafs whose GFS2_DIF_SYSTEM flag has already been set (most likely
>>> by a previous mkfs.gfs2)
>>>
>>> Resolves: rhbz#1272086
>>> Signed-off-by: Abhi Das <adas@redhat.com>
>>> ---
>>>    fs/gfs2/file.c  | 4 ++--
>>>    fs/gfs2/inode.c | 5 +++++
>>>    2 files changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
>>> index 71cd138..63fe948 100644
>>> --- a/fs/gfs2/file.c
>>> +++ b/fs/gfs2/file.c
>>> @@ -298,9 +298,9 @@ static int gfs2_set_flags(struct file *filp, u32 __user
>>> *ptr)
>>>    		gfsflags &= ~GFS2_DIF_TOPDIR;
>>>    		if (gfsflags & GFS2_DIF_INHERIT_JDATA)
>>>    			gfsflags ^= (GFS2_DIF_JDATA | GFS2_DIF_INHERIT_JDATA);
>>> -		return do_gfs2_set_flags(filp, gfsflags, ~0);
>>> +		return do_gfs2_set_flags(filp, gfsflags, ~GFS2_DIF_SYSTEM);
>>>    	}
>>> -	return do_gfs2_set_flags(filp, gfsflags, ~GFS2_DIF_JDATA);
>>> +	return do_gfs2_set_flags(filp, gfsflags, ~(GFS2_DIF_SYSTEM |
>>> GFS2_DIF_JDATA));
>>
>> Are these two changes still required? The function only seems to get
>> called in the SETFLAGS ioctl path.
>>
>> Cheers,
>> Andy
>>
>
> Yes. This 3rd argument to do_gfs2_set_flags() is a field mask and is used
> like this:
>
> new_flags = (flags & ~mask) | (reqflags & mask);
>
> Since the requested flags 'reqflags' from userspace (gfs2_jadd, for example) can't
> set GFS2_DIF_SYSTEM, only way to preserve this flag's value across SETFLAGS ioctls
> is to not touch it via the mask when it is ANDed with the existing flags 'flags'.
>
> Hope that makes sense.

It does, thanks!

Andy



  reply	other threads:[~2015-11-05 19:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-30 19:57 [Cluster-devel] [GFS2 PATCH] gfs2: Automatically set GFS2_DIF_SYSTEM flag on system files Abhi Das
2015-11-05 17:56 ` Bob Peterson
2015-11-05 18:19 ` Andrew Price
2015-11-05 18:40   ` Abhijith Das
2015-11-05 19:03     ` Andrew Price [this message]
2015-11-10 21:13 ` Bob Peterson

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=563BA7F2.8030909@redhat.com \
    --to=anprice@redhat.com \
    /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).