0001
0002 #include <linux/fs.h>
0003 #include <linux/quota.h>
0004 #include <linux/export.h>
0005
0006
0007
0008
0009
0010
0011
0012
0013 bool qid_eq(struct kqid left, struct kqid right)
0014 {
0015 if (left.type != right.type)
0016 return false;
0017 switch(left.type) {
0018 case USRQUOTA:
0019 return uid_eq(left.uid, right.uid);
0020 case GRPQUOTA:
0021 return gid_eq(left.gid, right.gid);
0022 case PRJQUOTA:
0023 return projid_eq(left.projid, right.projid);
0024 default:
0025 BUG();
0026 }
0027 }
0028 EXPORT_SYMBOL(qid_eq);
0029
0030
0031
0032
0033
0034
0035
0036
0037 bool qid_lt(struct kqid left, struct kqid right)
0038 {
0039 if (left.type < right.type)
0040 return true;
0041 if (left.type > right.type)
0042 return false;
0043 switch (left.type) {
0044 case USRQUOTA:
0045 return uid_lt(left.uid, right.uid);
0046 case GRPQUOTA:
0047 return gid_lt(left.gid, right.gid);
0048 case PRJQUOTA:
0049 return projid_lt(left.projid, right.projid);
0050 default:
0051 BUG();
0052 }
0053 }
0054 EXPORT_SYMBOL(qid_lt);
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 qid_t from_kqid(struct user_namespace *targ, struct kqid kqid)
0069 {
0070 switch (kqid.type) {
0071 case USRQUOTA:
0072 return from_kuid(targ, kqid.uid);
0073 case GRPQUOTA:
0074 return from_kgid(targ, kqid.gid);
0075 case PRJQUOTA:
0076 return from_kprojid(targ, kqid.projid);
0077 default:
0078 BUG();
0079 }
0080 }
0081 EXPORT_SYMBOL(from_kqid);
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101 qid_t from_kqid_munged(struct user_namespace *targ, struct kqid kqid)
0102 {
0103 switch (kqid.type) {
0104 case USRQUOTA:
0105 return from_kuid_munged(targ, kqid.uid);
0106 case GRPQUOTA:
0107 return from_kgid_munged(targ, kqid.gid);
0108 case PRJQUOTA:
0109 return from_kprojid_munged(targ, kqid.projid);
0110 default:
0111 BUG();
0112 }
0113 }
0114 EXPORT_SYMBOL(from_kqid_munged);
0115
0116
0117
0118
0119
0120 bool qid_valid(struct kqid qid)
0121 {
0122 switch (qid.type) {
0123 case USRQUOTA:
0124 return uid_valid(qid.uid);
0125 case GRPQUOTA:
0126 return gid_valid(qid.gid);
0127 case PRJQUOTA:
0128 return projid_valid(qid.projid);
0129 default:
0130 BUG();
0131 }
0132 }
0133 EXPORT_SYMBOL(qid_valid);