From: Dave Chinner <david@fromorbit.com> To: Wang Shilong <wangshilong1991@gmail.com> Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, lixi@ddn.com, adilger@dilger.ca, Wang Shilong <wshilong@ddn.com> Subject: Re: [PATCH 5/8] fs: add project support to statx Date: Mon, 4 Mar 2019 10:01:06 +1100 [thread overview] Message-ID: <20190303230106.GS23020@dastard> (raw) In-Reply-To: <1551449141-7884-6-git-send-email-wshilong1991@gmail.com> On Fri, Mar 01, 2019 at 11:05:38PM +0900, Wang Shilong wrote: > From: Wang Shilong <wshilong@ddn.com> > > From: Wang Shilong <wshilong@ddn.com> > > Extend statx to support project ID and inherit attribute. > > Signed-off-by: Wang Shilong <wshilong@ddn.com> > --- > fs/stat.c | 1 + > include/linux/stat.h | 2 ++ > include/uapi/linux/stat.h | 8 ++++++-- > tools/include/uapi/linux/stat.h | 8 ++++++-- > 4 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/fs/stat.c b/fs/stat.c > index adbfcd86c81b..82d855c4647c 100644 > --- a/fs/stat.c > +++ b/fs/stat.c > @@ -551,6 +551,7 @@ cp_statx(const struct kstat *stat, struct statx __user *buffer) > tmp.stx_rdev_minor = MINOR(stat->rdev); > tmp.stx_dev_major = MAJOR(stat->dev); > tmp.stx_dev_minor = MINOR(stat->dev); > + tmp.stx_projid = (u32)from_kprojid(&init_user_ns, stat->projid); If we are not in the init_user_ns, the project ID should be zero - it should not be changeable or visible at all. I'm guessing the next patches enforce this? Regardless, the cast to (u32) should not be necessary. Hmmmm. /me looks at from_kprojid_munged() and thinks it needs to be nuked from orbit. There is no such thing as an "overflow" project ID, and 65534 is a valid XFS project ID. > diff --git a/tools/include/uapi/linux/stat.h b/tools/include/uapi/linux/stat.h > index 7b35e98d3c58..21b542b3b061 100644 > --- a/tools/include/uapi/linux/stat.h > +++ b/tools/include/uapi/linux/stat.h > @@ -123,7 +123,9 @@ struct statx { > __u32 stx_dev_major; /* ID of device containing file [uncond] */ > __u32 stx_dev_minor; > /* 0x90 */ > - __u64 __spare2[14]; /* Spare space for future expansion */ > + __u32 stx_projid; /* Project ID of file */ > + __u32 __spare1[1]; > + __u64 __spare2[13]; /* Spare space for future expansion */ > /* 0x100 */ > }; > > @@ -148,7 +150,8 @@ struct statx { > #define STATX_BLOCKS 0x00000400U /* Want/got stx_blocks */ > #define STATX_BASIC_STATS 0x000007ffU /* The stuff in the normal stat struct */ > #define STATX_BTIME 0x00000800U /* Want/got stx_btime */ > -#define STATX_ALL 0x00000fffU /* All currently supported flags */ > +#define STATX_PROJID 0x00001000U /* Want/Got stx_projid */ > +#define STATX_ALL 0x00001fffU /* All currently supported flags */ > #define STATX__RESERVED 0x80000000U /* Reserved for future struct statx expansion */ > > /* > @@ -170,5 +173,6 @@ struct statx { > > #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */ > > +#define STATX_ATTR_PROJINHERIT 0x00002000 /* [I] File project inherit is set */ ^^^^ The project ID inherit attribute is only valid for directories, not files. Also, should probably be named STATX_ATTR_PROJID_INHERIT. Cheers, Dave. -- Dave Chinner david@fromorbit.com
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com> To: Wang Shilong <wangshilong1991@gmail.com> Cc: adilger@dilger.ca, Wang Shilong <wshilong@ddn.com>, lixi@ddn.com, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org Subject: Re: [PATCH 5/8] fs: add project support to statx Date: Mon, 4 Mar 2019 10:01:06 +1100 [thread overview] Message-ID: <20190303230106.GS23020@dastard> (raw) In-Reply-To: <1551449141-7884-6-git-send-email-wshilong1991@gmail.com> On Fri, Mar 01, 2019 at 11:05:38PM +0900, Wang Shilong wrote: > From: Wang Shilong <wshilong@ddn.com> > > From: Wang Shilong <wshilong@ddn.com> > > Extend statx to support project ID and inherit attribute. > > Signed-off-by: Wang Shilong <wshilong@ddn.com> > --- > fs/stat.c | 1 + > include/linux/stat.h | 2 ++ > include/uapi/linux/stat.h | 8 ++++++-- > tools/include/uapi/linux/stat.h | 8 ++++++-- > 4 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/fs/stat.c b/fs/stat.c > index adbfcd86c81b..82d855c4647c 100644 > --- a/fs/stat.c > +++ b/fs/stat.c > @@ -551,6 +551,7 @@ cp_statx(const struct kstat *stat, struct statx __user *buffer) > tmp.stx_rdev_minor = MINOR(stat->rdev); > tmp.stx_dev_major = MAJOR(stat->dev); > tmp.stx_dev_minor = MINOR(stat->dev); > + tmp.stx_projid = (u32)from_kprojid(&init_user_ns, stat->projid); If we are not in the init_user_ns, the project ID should be zero - it should not be changeable or visible at all. I'm guessing the next patches enforce this? Regardless, the cast to (u32) should not be necessary. Hmmmm. /me looks at from_kprojid_munged() and thinks it needs to be nuked from orbit. There is no such thing as an "overflow" project ID, and 65534 is a valid XFS project ID. > diff --git a/tools/include/uapi/linux/stat.h b/tools/include/uapi/linux/stat.h > index 7b35e98d3c58..21b542b3b061 100644 > --- a/tools/include/uapi/linux/stat.h > +++ b/tools/include/uapi/linux/stat.h > @@ -123,7 +123,9 @@ struct statx { > __u32 stx_dev_major; /* ID of device containing file [uncond] */ > __u32 stx_dev_minor; > /* 0x90 */ > - __u64 __spare2[14]; /* Spare space for future expansion */ > + __u32 stx_projid; /* Project ID of file */ > + __u32 __spare1[1]; > + __u64 __spare2[13]; /* Spare space for future expansion */ > /* 0x100 */ > }; > > @@ -148,7 +150,8 @@ struct statx { > #define STATX_BLOCKS 0x00000400U /* Want/got stx_blocks */ > #define STATX_BASIC_STATS 0x000007ffU /* The stuff in the normal stat struct */ > #define STATX_BTIME 0x00000800U /* Want/got stx_btime */ > -#define STATX_ALL 0x00000fffU /* All currently supported flags */ > +#define STATX_PROJID 0x00001000U /* Want/Got stx_projid */ > +#define STATX_ALL 0x00001fffU /* All currently supported flags */ > #define STATX__RESERVED 0x80000000U /* Reserved for future struct statx expansion */ > > /* > @@ -170,5 +173,6 @@ struct statx { > > #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */ > > +#define STATX_ATTR_PROJINHERIT 0x00002000 /* [I] File project inherit is set */ ^^^^ The project ID inherit attribute is only valid for directories, not files. Also, should probably be named STATX_ATTR_PROJID_INHERIT. Cheers, Dave. -- Dave Chinner david@fromorbit.com
next prev parent reply other threads:[~2019-03-03 23:01 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-01 14:05 [PATCH 0/8] add generic interface to set/get project Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 1/8] fs: add support to change project ID Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-03 21:53 ` Dave Chinner 2019-03-03 21:53 ` Dave Chinner 2019-03-04 23:36 ` 答复: " Wang Shilong 2019-03-04 23:36 ` Wang Shilong 2019-03-04 23:36 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 2/8] ext4: support project ID in ext4_setattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 3/8] f2fs: support project ID in f2fs_setattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 4/8] xfs: support project ID in xfs_setattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 15:49 ` Darrick J. Wong 2019-03-01 15:49 ` Darrick J. Wong 2019-03-03 22:18 ` Dave Chinner 2019-03-03 22:18 ` Dave Chinner 2019-03-01 14:05 ` [PATCH 5/8] fs: add project support to statx Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-03 23:01 ` Dave Chinner [this message] 2019-03-03 23:01 ` Dave Chinner 2019-03-01 14:05 ` [PATCH 6/8] ext4: support project in ext4_getattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 7/8] f2fs: support project in f2fs_getattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 14:05 ` [PATCH 8/8] xfs: support project in xfs_getattr() Wang Shilong 2019-03-01 14:05 ` Wang Shilong 2019-03-01 15:39 ` Darrick J. Wong 2019-03-01 15:39 ` Darrick J. Wong 2019-03-03 23:03 ` Dave Chinner 2019-03-03 23:03 ` Dave Chinner 2019-03-03 21:11 ` [PATCH 0/8] add generic interface to set/get project Dave Chinner 2019-03-03 21:11 ` Dave Chinner
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=20190303230106.GS23020@dastard \ --to=david@fromorbit.com \ --cc=adilger@dilger.ca \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-f2fs-devel@lists.sourceforge.net \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-xfs@vger.kernel.org \ --cc=lixi@ddn.com \ --cc=wangshilong1991@gmail.com \ --cc=wshilong@ddn.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: linkBe 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.