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: 34+ 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-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: link
Be 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.