[lustre-devel] [PATCH 2/7] lustre: quota: add project quota support for Lustre
James Simmons
jsimmons at infradead.org
Sun Oct 14 12:00:41 PDT 2018
From: Li Xi <lixi at ddn.com>
This patch adds necessary support of project quota,
so that OSTs can be mounted successfully.
Signed-off-by: Li Xi <lixi at ddn.com>
Signed-off-by: Wang Shilong <wshilong at ddn.com>
WC-bug-id: https://jira.whamcloud.com/browse/LU-4017
Reviewed-on: https://review.whamcloud.com/23947
Reviewed-by: Niu Yawei <yawei.niu at intel.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
drivers/staging/lustre/include/uapi/linux/lustre/lustre_idl.h | 9 +++++++--
drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h | 2 ++
drivers/staging/lustre/lustre/llite/dir.c | 4 +++-
drivers/staging/lustre/lustre/osc/osc_quota.c | 4 ++++
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_idl.h b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_idl.h
index 9430f11..1220acd 100644
--- a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_idl.h
+++ b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_idl.h
@@ -913,6 +913,9 @@ enum obdo_flags {
OBD_FL_IDONLY = 0x00000010, /* set in o_flags only adjust obj id*/
OBD_FL_RECREATE_OBJS = 0x00000020, /* recreate missing obj */
OBD_FL_DEBUG_CHECK = 0x00000040, /* echo client/server debug check */
+ OBD_FL_NO_PRJQUOTA = 0x00000080, /* the object's project is over
+ * quota
+ */
OBD_FL_NO_USRQUOTA = 0x00000100, /* the object's owner is over quota */
OBD_FL_NO_GRPQUOTA = 0x00000200, /* the object's group is over quota */
OBD_FL_CREATE_CROW = 0x00000400, /* object should be create on write */
@@ -1086,7 +1089,7 @@ static inline __u32 lov_mds_md_size(__u16 stripes, __u32 lmm_magic)
#define OBD_MD_FLHANDLE (0x00080000ULL) /* file/lock handle */
#define OBD_MD_FLCKSUM (0x00100000ULL) /* bulk data checksum */
#define OBD_MD_FLQOS (0x00200000ULL) /* quality of service stats */
-/*#define OBD_MD_FLOSCOPQ (0x00400000ULL) osc opaque data, never used */
+#define OBD_MD_FLPRJQUOTA (0x00400000ULL) /* over quota flags sent from ost */
/* OBD_MD_FLCOOKIE (0x00800000ULL) obsolete in 2.8 */
#define OBD_MD_FLGROUP (0x01000000ULL) /* group */
#define OBD_MD_FLFID (0x02000000ULL) /* ->ost write inline fid */
@@ -1131,7 +1134,9 @@ static inline __u32 lov_mds_md_size(__u16 stripes, __u32 lmm_magic)
#define OBD_MD_DEFAULT_MEA (0x0040000000000000ULL) /* default MEA */
-#define OBD_MD_FLALLQUOTA (OBD_MD_FLUSRQUOTA | OBD_MD_FLGRPQUOTA)
+#define OBD_MD_FLALLQUOTA (OBD_MD_FLUSRQUOTA | \
+ OBD_MD_FLGRPQUOTA | \
+ OBD_MD_FLPRJQUOTA)
#define OBD_MD_FLGETATTR (OBD_MD_FLID | OBD_MD_FLATIME | OBD_MD_FLMTIME | \
OBD_MD_FLCTIME | OBD_MD_FLSIZE | OBD_MD_FLBLKSZ | \
diff --git a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
index b1961df..9d553ce6 100644
--- a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
+++ b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
@@ -576,6 +576,8 @@ static inline char *qtype_name(int qtype)
return "usr";
case GRPQUOTA:
return "grp";
+ case PRJQUOTA:
+ return "prj";
}
return "unknown";
}
diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
index 7047938..9fa0e2e 100644
--- a/drivers/staging/lustre/lustre/llite/dir.c
+++ b/drivers/staging/lustre/lustre/llite/dir.c
@@ -902,7 +902,7 @@ static int copy_and_ioctl(int cmd, struct obd_export *exp,
return rc;
}
-static inline int check_owner(int type, int id)
+static int check_owner(int type, int id)
{
switch (type) {
case USRQUOTA:
@@ -913,6 +913,8 @@ static inline int check_owner(int type, int id)
if (!in_egroup_p(make_kgid(&init_user_ns, id)))
return -EPERM;
break;
+ case PRJQUOTA:
+ break;
}
return 0;
}
diff --git a/drivers/staging/lustre/lustre/osc/osc_quota.c b/drivers/staging/lustre/lustre/osc/osc_quota.c
index 13ef482..555f1be 100644
--- a/drivers/staging/lustre/lustre/osc/osc_quota.c
+++ b/drivers/staging/lustre/lustre/osc/osc_quota.c
@@ -85,6 +85,8 @@ static inline u32 md_quota_flag(int qtype)
return OBD_MD_FLUSRQUOTA;
case GRPQUOTA:
return OBD_MD_FLGRPQUOTA;
+ case PRJQUOTA:
+ return OBD_MD_FLPRJQUOTA;
default:
return 0;
}
@@ -97,6 +99,8 @@ static inline u32 fl_quota_flag(int qtype)
return OBD_FL_NO_USRQUOTA;
case GRPQUOTA:
return OBD_FL_NO_GRPQUOTA;
+ case PRJQUOTA:
+ return OBD_FL_NO_PRJQUOTA;
default:
return 0;
}
--
1.8.3.1
More information about the lustre-devel
mailing list