linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] fchownat.2: add project support updates
@ 2019-03-01 14:06 Wang Shilong
  2019-03-01 14:06 ` [PATCH] statx: test statx support for project Wang Shilong
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Wang Shilong @ 2019-03-01 14:06 UTC (permalink / raw)
  To: linux-fsdevel, linux-ext4, linux-xfs, linux-f2fs-devel
  Cc: lixi, adilger, Wang Shilong, linux-man

From: Wang Shilong <wshilong@ddn.com>

From: Wang Shilong <wshilong@ddn.com>

Cc: linux-man@vger.kernel.org
Signed-off-by: Wang Shilong <wshilong@ddn.com>
---
 man2/chown.2 | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/man2/chown.2 b/man2/chown.2
index 50db789ac..fad74df20 100644
--- a/man2/chown.2
+++ b/man2/chown.2
@@ -217,6 +217,11 @@ instead operate on the link itself, like
 .BR fchownat ()
 dereferences symbolic links, like
 .BR chown ().)
+.TP
+.B AT_FCHOWN_PROJID
+Use
+.I group
+to change file's project ID instead of its group ID.
 .PP
 See
 .BR openat (2)
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH] statx: test statx support for project
  2019-03-01 14:06 [PATCH 1/2] fchownat.2: add project support updates Wang Shilong
@ 2019-03-01 14:06 ` Wang Shilong
  2019-03-01 14:06 ` [PATCH 2/2] statx.2: add project support update Wang Shilong
  2019-03-03 23:08 ` [PATCH 1/2] fchownat.2: add project support updates Dave Chinner
  2 siblings, 0 replies; 10+ messages in thread
From: Wang Shilong @ 2019-03-01 14:06 UTC (permalink / raw)
  To: linux-fsdevel, linux-ext4, linux-xfs, linux-f2fs-devel
  Cc: lixi, adilger, Wang Shilong, fstests

From: Wang Shilong <wshilong@ddn.com>

From: Wang Shilong <wshilong@ddn.com>

CC: fstests@vger.kernel.org
Signed-off-by: Wang Shilong <wshilong@ddn.com>
---
 src/stat_test.c   | 11 ++++++++++-
 src/statx.h       | 19 ++++++++++++++++++-
 tests/generic/423 |  9 ++++++---
 tests/generic/424 | 23 ++++++++++++++++++-----
 4 files changed, 52 insertions(+), 10 deletions(-)

diff --git a/src/stat_test.c b/src/stat_test.c
index 95cfdc4f..9105ff89 100644
--- a/src/stat_test.c
+++ b/src/stat_test.c
@@ -13,10 +13,12 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <sys/types.h>
-#include <sys/stat.h>
 #include <sys/sysmacros.h>
 #include "statx.h"
 
+int fstatat(int dirfd, const char *pathname, struct stat *statbuf,
+	    int flags);
+
 static bool failed = false;
 static bool is_verbose = 0;
 static const char *prog;
@@ -49,6 +51,7 @@ enum fields {
 	stx_mtime_tv_nsec,
 	stx_mtime_tv_sec,
 	stx_nlink,
+	stx_projid,
 	stx_rdev_major,
 	stx_rdev_minor,
 	stx_size,
@@ -84,6 +87,7 @@ static const struct field field_list[nr__fields] = {
 	[stx_mtime_tv_nsec]	= { "stx_mtime.tv_nsec",	STATX_MTIME },
 	[stx_mtime_tv_sec]	= { "stx_mtime.tv_sec",		STATX_MTIME },
 	[stx_nlink]		= { "stx_nlink",		STATX_NLINK },
+	[stx_projid]		= { "stx_projid",		STATX_PROJID },
 	[stx_rdev_major]	= { "stx_rdev_major",		0 },
 	[stx_rdev_minor]	= { "stx_rdev_minor",		0 },
 	[stx_size]		= { "stx_size",			STATX_SIZE },
@@ -113,6 +117,7 @@ static const struct attr_name attr_list[] = {
 	{ "encrypted",	STATX_ATTR_ENCRYPTED },
 	{ "immutable",	STATX_ATTR_IMMUTABLE },
 	{ "nodump",	STATX_ATTR_NODUMP },
+	{ "projinherit",STATX_ATTR_PROJINHERIT },
 };
 
 static int attr_name_cmp(const void *_key, const void *_p)
@@ -155,6 +160,7 @@ void format(void)
 	fprintf(stderr, "\t\tencrypted -- The file is marked as encrypted\n");
 	fprintf(stderr, "\t\timmutable -- The file is marked as immutable\n");
 	fprintf(stderr, "\t\tnodump -- The file is marked as no-dump\n");
+	fprintf(stderr, "\t\tprojinherit -- The file inherit attribute is set\n");
 	fprintf(stderr, "\tcmp_ref -- check that the reference file has identical stats\n");
 	fprintf(stderr, "\tref=<file> -- get reference stats from file\n");
 	fprintf(stderr, "\tstx_<field>=<val> -- statx field value check\n");
@@ -460,6 +466,7 @@ static void cmp_ref(const struct statx *stx, unsigned int mask)
 	cmp("%llu", stx_rdev_minor);
 	cmp("%llu", stx_dev_major);
 	cmp("%llu", stx_dev_minor);
+	cmp("%llu", stx_projid);
 }
 
 /*
@@ -506,6 +513,7 @@ static void check_field(const struct statx *stx, char *arg)
 	case stx_rdev_minor:	uval = stx->stx_rdev_minor;	break;
 	case stx_dev_major:	uval = stx->stx_dev_major;	break;
 	case stx_dev_minor:	uval = stx->stx_dev_minor;	break;
+	case stx_projid:	uval = stx->stx_projid;		break;
 
 	case stx_atime_tv_sec:	sval = stx->stx_atime.tv_sec;	break;
 	case stx_atime_tv_nsec:	sval = stx->stx_atime.tv_nsec;	break;
@@ -562,6 +570,7 @@ static void check_field(const struct statx *stx, char *arg)
 	case stx_rdev_minor:
 	case stx_dev_major:
 	case stx_dev_minor:
+	case stx_projid:
 		ucheck = strtoull(val, &p, 0);
 		if (*p)
 			bad_arg("Field '%s' requires unsigned integer\n", key);
diff --git a/src/statx.h b/src/statx.h
index 3f239d79..db212304 100644
--- a/src/statx.h
+++ b/src/statx.h
@@ -49,6 +49,7 @@ struct statx_timestamp {
 	__s32	tv_nsec;
 	__s32	__reserved;
 };
+#endif /* STATX_TYPE */
 
 /*
  * Structures for the extended file attribute retrieval system call
@@ -87,6 +88,9 @@ struct statx_timestamp {
  * will have values installed for compatibility purposes so that stat() and
  * co. can be emulated in userspace.
  */
+/* walkaround to overide system definition */
+#define statx statx2
+#undef statx
 struct statx {
 	/* 0x00 */
 	__u32	stx_mask;	/* What results were written [uncond] */
@@ -114,10 +118,13 @@ 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	__spare3[1];
+	__u64	__spare2[13];	/* Spare space for future expansion */
 	/* 0x100 */
 };
 
+#ifndef STATX_TYPE
 /*
  * Flags to be stx_mask
  *
@@ -139,7 +146,9 @@ 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 */
+#ifndef STATX_ALL
 #define STATX_ALL		0x00000fffU	/* All currently supported flags */
+#endif
 
 /*
  * Attributes to be found in stx_attributes
@@ -161,6 +170,14 @@ struct statx {
 #define STATX_ATTR_AUTOMOUNT		0x00001000 /* Dir: Automount trigger */
 #endif /* STATX_TYPE */
 
+#ifndef STATX_PROJID
+#define STATX_PROJID		0x00001000U	/* Want/got stx_projid */
+#undef STATX_ALL
+#define STATX_ALL		0x00001fffU	/* All currently supported flags */
+#define STATX_ATTR_PROJINHERIT	0x00002000 /* [I] File project inherit is set */
+#endif /* STATX_PROJID */
+
+
 static inline
 int xfstests_statx(int dfd, const char *filename, unsigned flags,
 		   unsigned int mask, struct statx *buffer)
diff --git a/tests/generic/423 b/tests/generic/423
index b61d5de0..a9577fdb 100755
--- a/tests/generic/423
+++ b/tests/generic/423
@@ -89,7 +89,8 @@ check_stat $TEST_DIR/$seq-dir \
 	   stx_type=dir \
 	   stx_mode=0755 \
 	   stx_rdev_major=0 \
-	   stx_rdev_minor=0
+	   stx_rdev_minor=0 \
+	   stx_projid=0
 
 echo "Test statx on a blockdev"
 mknod -m 0600 $TEST_DIR/$seq-loopy b 7 123
@@ -115,7 +116,8 @@ check_stat $TEST_DIR/$seq-file \
 	   stx_size=20480 \
 	   stx_rdev_major=0 \
 	   stx_rdev_minor=0 \
-	   stx_nlink=1
+	   stx_nlink=1 \
+	   stx_projid=0
 
 echo "Test statx on a symlink"
 ln -s $TEST_DIR/$seq-nowhere $TEST_DIR/$seq-symlink
@@ -127,7 +129,8 @@ check_stat $TEST_DIR/$seq-symlink \
 	   stx_type=sym \
 	   stx_rdev_major=0 \
 	   stx_rdev_minor=0 \
-	   stx_nlink=1
+	   stx_nlink=1 \
+	   stx_projid=0
 
 echo "Test statx on an AF_UNIX socket"
 create_af_unix $TEST_DIR/$seq-sock
diff --git a/tests/generic/424 b/tests/generic/424
index ec1b0035..57aacf40 100755
--- a/tests/generic/424
+++ b/tests/generic/424
@@ -52,10 +52,12 @@ a_supported=""
 c_supported=""
 d_supported=""
 i_supported=""
+P_supported=""
 a_list="0"
 c_list="0"
 d_list="0"
 i_list="0"
+P_list="0"
 
 if $CHATTR_PROG +a $testfile >&/dev/null; then
     a_supported=1
@@ -77,10 +79,15 @@ if $CHATTR_PROG +i $testfile >&/dev/null; then
     i_list="+i -i"
 fi
 
-echo "a=$a_supported d=$d_supported c=$c_supported i=$i_supported" >>$seqres.full
+if $CHATTR_PROG +P $testfile >&/dev/null; then
+    P_supported=1
+    P_list="+P"
+fi
+
+echo "a=$a_supported d=$d_supported c=$c_supported i=$i_supported P=$P_supported" >>$seqres.full
 
-if [ "$a_supported$c_supported$d_supported$i_supported" = "" ]; then
-	_notrun "file system doesn't support any of $CHATTR_PROG +a/+c/+d/+i"
+if [ "$a_supported$c_supported$d_supported$i_supported$P_supported" = "" ]; then
+	_notrun "file system doesn't support any of $CHATTR_PROG +a/+c/+d/+i/+P"
 fi
 
 $CHATTR_PROG -a -c -d -i $testfile
@@ -96,6 +103,7 @@ $CHATTR_PROG -a -c -d -i $testfile
 #	+c		STATX_ATTR_COMPRESSED
 #	+d		STATX_ATTR_NODUMP
 #	+i		STATX_ATTR_IMMUTABLE
+#	+P		STATX_ATTR_PROJINHERIT
 #
 # Note, however, that if the filesystem doesn't paste this information into
 # stx_attributes, there's no way to tell the difference between cleared and
@@ -108,24 +116,29 @@ function try () {
 	       ${c_supported:+$2} \
 	       ${d_supported:+$3} \
 	       ${i_supported:+$4} \
+	       ${P_supported:+$5} \
 	       $testfile
 	check_stat $testfile \
 	       ${a_supported:+attr=${1/a/append}} \
 	       ${c_supported:+attr=${2/c/compressed}} \
 	       ${d_supported:+attr=${3/d/nodump}} \
 	       ${i_supported:+attr=${4/i/immutable}} \
+	       ${P_supported:+attr=${5/p/projinherit}} \
 	       stx_type=file \
 	       stx_size=0 \
 	       stx_rdev_major=0 \
 	       stx_rdev_minor=0 \
-	       stx_nlink=1
+	       stx_nlink=1 \
+	       stx_projid=0
 }
 
 for a in $a_list; do
 	for c in $c_list; do
 		for d in $d_list; do
 			for i in $i_list; do
-				try $a $c $d $i
+				for P in $p_list; do
+					try $a $c $d $i $P
+				done
 			done
 		done
 	done
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] statx.2: add project support update
  2019-03-01 14:06 [PATCH 1/2] fchownat.2: add project support updates Wang Shilong
  2019-03-01 14:06 ` [PATCH] statx: test statx support for project Wang Shilong
@ 2019-03-01 14:06 ` Wang Shilong
  2019-03-01 15:51   ` Darrick J. Wong
  2019-03-04 13:52   ` Michael Kerrisk (man-pages)
  2019-03-03 23:08 ` [PATCH 1/2] fchownat.2: add project support updates Dave Chinner
  2 siblings, 2 replies; 10+ messages in thread
From: Wang Shilong @ 2019-03-01 14:06 UTC (permalink / raw)
  To: linux-fsdevel, linux-ext4, linux-xfs, linux-f2fs-devel
  Cc: lixi, adilger, Wang Shilong, linux-man

From: Wang Shilong <wshilong@ddn.com>

Cc: linux-man@vger.kernel.org
Signed-off-by: Wang Shilong <wshilong@ddn.com>
---
 man2/statx.2 | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/man2/statx.2 b/man2/statx.2
index 7265d8ace..6a9dede8b 100644
--- a/man2/statx.2
+++ b/man2/statx.2
@@ -82,6 +82,7 @@ struct statx {
        containing the filesystem where the file resides */
     __u32 stx_dev_major;   /* Major ID */
     __u32 stx_dev_minor;   /* Minor ID */
+    __u32 stx_projid;      /* Project ID of file */
 };
 .EE
 .in
@@ -261,6 +262,7 @@ STATX_SIZE	Want stx_size
 STATX_BLOCKS	Want stx_blocks
 STATX_BASIC_STATS	[All of the above]
 STATX_BTIME	Want stx_btime
+STATX_PROJID	Want stx_projid
 STATX_ALL	[All currently available fields]
 .TE
 .in
@@ -412,6 +414,9 @@ The device on which this file (inode) resides.
 .IR stx_rdev_major " and "  stx_rdev_minor
 The device that this file (inode) represents if the file is of block or
 character device type.
+.TP
+.I stx_projid
+The file's project ID.
 .PP
 For further information on the above fields, see
 .BR inode (7).
@@ -458,6 +463,9 @@ See
 .TP
 .B STATX_ATTR_ENCRYPTED
 A key is required for the file to be encrypted by the filesystem.
+.TP
+.B STATX_ATTR_PROJINHERIT
+Sub directories or files will inherit parent's project ID automatically.
 .SH RETURN VALUE
 On success, zero is returned.
 On error, \-1 is returned, and
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-01 14:06 ` [PATCH 2/2] statx.2: add project support update Wang Shilong
@ 2019-03-01 15:51   ` Darrick J. Wong
  2019-03-04 13:52   ` Michael Kerrisk (man-pages)
  1 sibling, 0 replies; 10+ messages in thread
From: Darrick J. Wong @ 2019-03-01 15:51 UTC (permalink / raw)
  To: Wang Shilong
  Cc: linux-fsdevel, linux-ext4, linux-xfs, linux-f2fs-devel, lixi,
	adilger, Wang Shilong, linux-man

On Fri, Mar 01, 2019 at 11:06:24PM +0900, Wang Shilong wrote:
> From: Wang Shilong <wshilong@ddn.com>
> 
> Cc: linux-man@vger.kernel.org
> Signed-off-by: Wang Shilong <wshilong@ddn.com>
> ---
>  man2/statx.2 | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/man2/statx.2 b/man2/statx.2
> index 7265d8ace..6a9dede8b 100644
> --- a/man2/statx.2
> +++ b/man2/statx.2
> @@ -82,6 +82,7 @@ struct statx {
>         containing the filesystem where the file resides */
>      __u32 stx_dev_major;   /* Major ID */
>      __u32 stx_dev_minor;   /* Minor ID */
> +    __u32 stx_projid;      /* Project ID of file */
>  };
>  .EE
>  .in
> @@ -261,6 +262,7 @@ STATX_SIZE	Want stx_size
>  STATX_BLOCKS	Want stx_blocks
>  STATX_BASIC_STATS	[All of the above]
>  STATX_BTIME	Want stx_btime
> +STATX_PROJID	Want stx_projid
>  STATX_ALL	[All currently available fields]
>  .TE
>  .in
> @@ -412,6 +414,9 @@ The device on which this file (inode) resides.
>  .IR stx_rdev_major " and "  stx_rdev_minor
>  The device that this file (inode) represents if the file is of block or
>  character device type.
> +.TP
> +.I stx_projid
> +The file's project ID.
>  .PP
>  For further information on the above fields, see
>  .BR inode (7).
> @@ -458,6 +463,9 @@ See
>  .TP
>  .B STATX_ATTR_ENCRYPTED
>  A key is required for the file to be encrypted by the filesystem.
> +.TP
> +.B STATX_ATTR_PROJINHERIT
> +Sub directories or files will inherit parent's project ID automatically.

"Newly created files and directories will inherit...", I think?

I appreciate the manpage and fstests updates immensely. :)

--D

>  .SH RETURN VALUE
>  On success, zero is returned.
>  On error, \-1 is returned, and
> -- 
> 2.19.1
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] fchownat.2: add project support updates
  2019-03-01 14:06 [PATCH 1/2] fchownat.2: add project support updates Wang Shilong
  2019-03-01 14:06 ` [PATCH] statx: test statx support for project Wang Shilong
  2019-03-01 14:06 ` [PATCH 2/2] statx.2: add project support update Wang Shilong
@ 2019-03-03 23:08 ` Dave Chinner
  2 siblings, 0 replies; 10+ messages in thread
From: Dave Chinner @ 2019-03-03 23:08 UTC (permalink / raw)
  To: Wang Shilong
  Cc: linux-fsdevel, linux-ext4, linux-xfs, linux-f2fs-devel, lixi,
	adilger, Wang Shilong, linux-man

On Fri, Mar 01, 2019 at 11:06:22PM +0900, Wang Shilong wrote:
> From: Wang Shilong <wshilong@ddn.com>
> 
> From: Wang Shilong <wshilong@ddn.com>
> 
> Cc: linux-man@vger.kernel.org
> Signed-off-by: Wang Shilong <wshilong@ddn.com>
> ---
>  man2/chown.2 | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/man2/chown.2 b/man2/chown.2
> index 50db789ac..fad74df20 100644
> --- a/man2/chown.2
> +++ b/man2/chown.2
> @@ -217,6 +217,11 @@ instead operate on the link itself, like
>  .BR fchownat ()
>  dereferences symbolic links, like
>  .BR chown ().)
> +.TP
> +.B AT_FCHOWN_PROJID
> +Use
> +.I group
> +to change file's project ID instead of its group ID.

Needs to document init_user_ns constraint.

>  .PP
>  See
>  .BR openat (2)

Also missing new ENOSPC error that attempting to change a project ID
can result in. Also should document the EPERM error condition when
changing project ID in wrong userns, and EINVAL if an invalid
project ID is supplied.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-01 14:06 ` [PATCH 2/2] statx.2: add project support update Wang Shilong
  2019-03-01 15:51   ` Darrick J. Wong
@ 2019-03-04 13:52   ` Michael Kerrisk (man-pages)
  2019-03-04 20:50     ` Dave Chinner
  1 sibling, 1 reply; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2019-03-04 13:52 UTC (permalink / raw)
  To: Wang Shilong
  Cc: linux-fsdevel, Ext4 Developers List, xfs, linux-f2fs-devel, lixi,
	Andreas Dilger, Wang Shilong, linux-man, Darrick J. Wong

Hello Wang Shilong,

On Fri, 1 Mar 2019 at 15:06, Wang Shilong <wangshilong1991@gmail.com> wrote:
>
> From: Wang Shilong <wshilong@ddn.com>

I take it that these patches relate to some API changes that are not
yet merged into the kernel, right?

Also, I think we need some accompanying info to describe project IDs.
Can you point me at any documents/resources?

Thanks,

Michael

>
> Cc: linux-man@vger.kernel.org
> Signed-off-by: Wang Shilong <wshilong@ddn.com>
> ---
>  man2/statx.2 | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/man2/statx.2 b/man2/statx.2
> index 7265d8ace..6a9dede8b 100644
> --- a/man2/statx.2
> +++ b/man2/statx.2
> @@ -82,6 +82,7 @@ struct statx {
>         containing the filesystem where the file resides */
>      __u32 stx_dev_major;   /* Major ID */
>      __u32 stx_dev_minor;   /* Minor ID */
> +    __u32 stx_projid;      /* Project ID of file */
>  };
>  .EE
>  .in
> @@ -261,6 +262,7 @@ STATX_SIZE  Want stx_size
>  STATX_BLOCKS   Want stx_blocks
>  STATX_BASIC_STATS      [All of the above]
>  STATX_BTIME    Want stx_btime
> +STATX_PROJID   Want stx_projid
>  STATX_ALL      [All currently available fields]
>  .TE
>  .in
> @@ -412,6 +414,9 @@ The device on which this file (inode) resides.
>  .IR stx_rdev_major " and "  stx_rdev_minor
>  The device that this file (inode) represents if the file is of block or
>  character device type.
> +.TP
> +.I stx_projid
> +The file's project ID.
>  .PP
>  For further information on the above fields, see
>  .BR inode (7).
> @@ -458,6 +463,9 @@ See
>  .TP
>  .B STATX_ATTR_ENCRYPTED
>  A key is required for the file to be encrypted by the filesystem.
> +.TP
> +.B STATX_ATTR_PROJINHERIT
> +Sub directories or files will inherit parent's project ID automatically.
>  .SH RETURN VALUE
>  On success, zero is returned.
>  On error, \-1 is returned, and
> --
> 2.19.1
>


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-04 13:52   ` Michael Kerrisk (man-pages)
@ 2019-03-04 20:50     ` Dave Chinner
  2019-03-04 21:16       ` Michael Kerrisk (man-pages)
  2019-03-04 22:56       ` Eugene Syromyatnikov
  0 siblings, 2 replies; 10+ messages in thread
From: Dave Chinner @ 2019-03-04 20:50 UTC (permalink / raw)
  To: Michael Kerrisk (man-pages)
  Cc: Wang Shilong, linux-fsdevel, Ext4 Developers List, xfs,
	linux-f2fs-devel, lixi, Andreas Dilger, Wang Shilong, linux-man,
	Darrick J. Wong

On Mon, Mar 04, 2019 at 02:52:59PM +0100, Michael Kerrisk (man-pages) wrote:
> Hello Wang Shilong,
> 
> On Fri, 1 Mar 2019 at 15:06, Wang Shilong <wangshilong1991@gmail.com> wrote:
> >
> > From: Wang Shilong <wshilong@ddn.com>
> 
> I take it that these patches relate to some API changes that are not
> yet merged into the kernel, right?
> 
> Also, I think we need some accompanying info to describe project IDs.
> Can you point me at any documents/resources?

Probably "best" documented in the man pages that ship with xfsprogs.
Basically, it's just another quota ID that can be used to account
for files/directories in arbitrary admin defined groups. i.e. quotas
that aren't bound by user/group identities.

$ man 8 xfs_quota
$ man 5 projects
$ man 5 projid

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-04 20:50     ` Dave Chinner
@ 2019-03-04 21:16       ` Michael Kerrisk (man-pages)
  2019-03-04 23:17         ` Dave Chinner
  2019-03-04 22:56       ` Eugene Syromyatnikov
  1 sibling, 1 reply; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2019-03-04 21:16 UTC (permalink / raw)
  To: Dave Chinner
  Cc: Wang Shilong, linux-fsdevel, Ext4 Developers List, xfs,
	linux-f2fs-devel, lixi, Andreas Dilger, Wang Shilong, linux-man,
	Darrick J. Wong

Hi Dave,
On Mon, 4 Mar 2019 at 21:50, Dave Chinner <david@fromorbit.com> wrote:
>
> On Mon, Mar 04, 2019 at 02:52:59PM +0100, Michael Kerrisk (man-pages) wrote:
> > Hello Wang Shilong,
> >
> > On Fri, 1 Mar 2019 at 15:06, Wang Shilong <wangshilong1991@gmail.com> wrote:
> > >
> > > From: Wang Shilong <wshilong@ddn.com>
> >
> > I take it that these patches relate to some API changes that are not
> > yet merged into the kernel, right?
> >
> > Also, I think we need some accompanying info to describe project IDs.
> > Can you point me at any documents/resources?
>
> Probably "best" documented in the man pages that ship with xfsprogs.

But, these IDs are a kernel construct, right? Is their scope limited
just to XFS, or do other filesystems have the concept also?

Cheers,

Michael

> Basically, it's just another quota ID that can be used to account
> for files/directories in arbitrary admin defined groups. i.e. quotas
> that aren't bound by user/group identities.
>
> $ man 8 xfs_quota
> $ man 5 projects
> $ man 5 projid

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-04 20:50     ` Dave Chinner
  2019-03-04 21:16       ` Michael Kerrisk (man-pages)
@ 2019-03-04 22:56       ` Eugene Syromyatnikov
  1 sibling, 0 replies; 10+ messages in thread
From: Eugene Syromyatnikov @ 2019-03-04 22:56 UTC (permalink / raw)
  To: Dave Chinner
  Cc: Michael Kerrisk (man-pages),
	Wang Shilong, linux-fsdevel, Ext4 Developers List, xfs,
	linux-f2fs-devel, lixi, Andreas Dilger, Wang Shilong, linux-man,
	Darrick J. Wong

On Mon, Mar 4, 2019 at 9:57 PM Dave Chinner <david@fromorbit.com> wrote:
>
> On Mon, Mar 04, 2019 at 02:52:59PM +0100, Michael Kerrisk (man-pages) wrote:
> > Hello Wang Shilong,
> >
> > On Fri, 1 Mar 2019 at 15:06, Wang Shilong <wangshilong1991@gmail.com> wrote:
> > >
> > > From: Wang Shilong <wshilong@ddn.com>
> >
> > I take it that these patches relate to some API changes that are not
> > yet merged into the kernel, right?
> >
> > Also, I think we need some accompanying info to describe project IDs.
> > Can you point me at any documents/resources?
>
> Probably "best" documented in the man pages that ship with xfsprogs.
> Basically, it's just another quota ID that can be used to account
> for files/directories in arbitrary admin defined groups. i.e. quotas
> that aren't bound by user/group identities.
>
> $ man 8 xfs_quota
> $ man 5 projects
> $ man 5 projid

Project quotas also mentioned in quotactl(2).

-- 
Eugene Syromyatnikov
mailto:evgsyr@gmail.com
xmpp:esyr@jabber.{ru|org}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] statx.2: add project support update
  2019-03-04 21:16       ` Michael Kerrisk (man-pages)
@ 2019-03-04 23:17         ` Dave Chinner
  0 siblings, 0 replies; 10+ messages in thread
From: Dave Chinner @ 2019-03-04 23:17 UTC (permalink / raw)
  To: Michael Kerrisk (man-pages)
  Cc: Wang Shilong, linux-fsdevel, Ext4 Developers List, xfs,
	linux-f2fs-devel, lixi, Andreas Dilger, Wang Shilong, linux-man,
	Darrick J. Wong

On Mon, Mar 04, 2019 at 10:16:29PM +0100, Michael Kerrisk (man-pages) wrote:
> Hi Dave,
> On Mon, 4 Mar 2019 at 21:50, Dave Chinner <david@fromorbit.com> wrote:
> >
> > On Mon, Mar 04, 2019 at 02:52:59PM +0100, Michael Kerrisk (man-pages) wrote:
> > > Hello Wang Shilong,
> > >
> > > On Fri, 1 Mar 2019 at 15:06, Wang Shilong <wangshilong1991@gmail.com> wrote:
> > > >
> > > > From: Wang Shilong <wshilong@ddn.com>
> > >
> > > I take it that these patches relate to some API changes that are not
> > > yet merged into the kernel, right?
> > >
> > > Also, I think we need some accompanying info to describe project IDs.
> > > Can you point me at any documents/resources?
> >
> > Probably "best" documented in the man pages that ship with xfsprogs.
> 
> But, these IDs are a kernel construct, right?

On disk filesystem format construct, actually. The kernel doesn't
use them for anything other than filesystem quota accounting - it's
completely oblivious to the meaning of the IDs (unlike uids and gids
used for user and group quota accounting).

> Is their scope limited
> just to XFS, or do other filesystems have the concept also?

Originally only XFS. Irix implemented project quotas rather than
group quotas, IIRC, in the late 80s/early 90s(*) so XFS supported
project quotas for day zero. I think is was 2004/2005 that they were
fully supported on Linux (using an exclusive group or project
quota requirement) and with v5 filesystems we added a third quota
inode so we can have user, group and project quotas all active on a
filesystem at once.

2-3 years ago project quotas were added to ext4 and so anything that
uses the generic kernel quota infrastructure can implement it, too.

Cheers,

Dave.

(*) In some ways, we are still dragging Linux into the '80s, kicking
and screaming all the way :P

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-03-04 23:17 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-01 14:06 [PATCH 1/2] fchownat.2: add project support updates Wang Shilong
2019-03-01 14:06 ` [PATCH] statx: test statx support for project Wang Shilong
2019-03-01 14:06 ` [PATCH 2/2] statx.2: add project support update Wang Shilong
2019-03-01 15:51   ` Darrick J. Wong
2019-03-04 13:52   ` Michael Kerrisk (man-pages)
2019-03-04 20:50     ` Dave Chinner
2019-03-04 21:16       ` Michael Kerrisk (man-pages)
2019-03-04 23:17         ` Dave Chinner
2019-03-04 22:56       ` Eugene Syromyatnikov
2019-03-03 23:08 ` [PATCH 1/2] fchownat.2: add project support updates Dave Chinner

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).