LCOV - code coverage report
Current view: top level - fs/quota - kqid.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 30 0.0 %
Date: 2014-02-18 Functions: 0 5 0.0 %
Branches: 0 24 0.0 %

           Branch data     Line data    Source code
       1                 :            : #include <linux/fs.h>
       2                 :            : #include <linux/quota.h>
       3                 :            : #include <linux/export.h>
       4                 :            : 
       5                 :            : /**
       6                 :            :  *      qid_eq - Test to see if to kquid values are the same
       7                 :            :  *      @left: A qid value
       8                 :            :  *      @right: Another quid value
       9                 :            :  *
      10                 :            :  *      Return true if the two qid values are equal and false otherwise.
      11                 :            :  */
      12                 :          0 : bool qid_eq(struct kqid left, struct kqid right)
      13                 :            : {
      14         [ #  # ]:          0 :         if (left.type != right.type)
      15                 :            :                 return false;
      16   [ #  #  #  # ]:          0 :         switch(left.type) {
      17                 :            :         case USRQUOTA:
      18                 :          0 :                 return uid_eq(left.uid, right.uid);
      19                 :            :         case GRPQUOTA:
      20                 :          0 :                 return gid_eq(left.gid, right.gid);
      21                 :            :         case PRJQUOTA:
      22                 :          0 :                 return projid_eq(left.projid, right.projid);
      23                 :            :         default:
      24                 :          0 :                 BUG();
      25                 :            :         }
      26                 :            : }
      27                 :            : EXPORT_SYMBOL(qid_eq);
      28                 :            : 
      29                 :            : /**
      30                 :            :  *      qid_lt - Test to see if one qid value is less than another
      31                 :            :  *      @left: The possibly lesser qid value
      32                 :            :  *      @right: The possibly greater qid value
      33                 :            :  *
      34                 :            :  *      Return true if left is less than right and false otherwise.
      35                 :            :  */
      36                 :          0 : bool qid_lt(struct kqid left, struct kqid right)
      37                 :            : {
      38         [ #  # ]:          0 :         if (left.type < right.type)
      39                 :            :                 return true;
      40         [ #  # ]:          0 :         if (left.type > right.type)
      41                 :            :                 return false;
      42   [ #  #  #  # ]:          0 :         switch (left.type) {
      43                 :            :         case USRQUOTA:
      44                 :          0 :                 return uid_lt(left.uid, right.uid);
      45                 :            :         case GRPQUOTA:
      46                 :          0 :                 return gid_lt(left.gid, right.gid);
      47                 :            :         case PRJQUOTA:
      48                 :          0 :                 return projid_lt(left.projid, right.projid);
      49                 :            :         default:
      50                 :          0 :                 BUG();
      51                 :            :         }
      52                 :            : }
      53                 :            : EXPORT_SYMBOL(qid_lt);
      54                 :            : 
      55                 :            : /**
      56                 :            :  *      from_kqid - Create a qid from a kqid user-namespace pair.
      57                 :            :  *      @targ: The user namespace we want a qid in.
      58                 :            :  *      @kuid: The kernel internal quota identifier to start with.
      59                 :            :  *
      60                 :            :  *      Map @kqid into the user-namespace specified by @targ and
      61                 :            :  *      return the resulting qid.
      62                 :            :  *
      63                 :            :  *      There is always a mapping into the initial user_namespace.
      64                 :            :  *
      65                 :            :  *      If @kqid has no mapping in @targ (qid_t)-1 is returned.
      66                 :            :  */
      67                 :          0 : qid_t from_kqid(struct user_namespace *targ, struct kqid kqid)
      68                 :            : {
      69         [ #  # ]:          0 :         switch (kqid.type) {
      70                 :            :         case USRQUOTA:
      71                 :            :                 return from_kuid(targ, kqid.uid);
      72                 :            :         case GRPQUOTA:
      73                 :            :                 return from_kgid(targ, kqid.gid);
      74                 :            :         case PRJQUOTA:
      75                 :            :                 return from_kprojid(targ, kqid.projid);
      76                 :            :         default:
      77                 :          0 :                 BUG();
      78                 :            :         }
      79                 :            : }
      80                 :            : EXPORT_SYMBOL(from_kqid);
      81                 :            : 
      82                 :            : /**
      83                 :            :  *      from_kqid_munged - Create a qid from a kqid user-namespace pair.
      84                 :            :  *      @targ: The user namespace we want a qid in.
      85                 :            :  *      @kqid: The kernel internal quota identifier to start with.
      86                 :            :  *
      87                 :            :  *      Map @kqid into the user-namespace specified by @targ and
      88                 :            :  *      return the resulting qid.
      89                 :            :  *
      90                 :            :  *      There is always a mapping into the initial user_namespace.
      91                 :            :  *
      92                 :            :  *      Unlike from_kqid from_kqid_munged never fails and always
      93                 :            :  *      returns a valid projid.  This makes from_kqid_munged
      94                 :            :  *      appropriate for use in places where failing to provide
      95                 :            :  *      a qid_t is not a good option.
      96                 :            :  *
      97                 :            :  *      If @kqid has no mapping in @targ the kqid.type specific
      98                 :            :  *      overflow identifier is returned.
      99                 :            :  */
     100                 :          0 : qid_t from_kqid_munged(struct user_namespace *targ, struct kqid kqid)
     101                 :            : {
     102   [ #  #  #  # ]:          0 :         switch (kqid.type) {
     103                 :            :         case USRQUOTA:
     104                 :          0 :                 return from_kuid_munged(targ, kqid.uid);
     105                 :            :         case GRPQUOTA:
     106                 :          0 :                 return from_kgid_munged(targ, kqid.gid);
     107                 :            :         case PRJQUOTA:
     108                 :          0 :                 return from_kprojid_munged(targ, kqid.projid);
     109                 :            :         default:
     110                 :          0 :                 BUG();
     111                 :            :         }
     112                 :            : }
     113                 :            : EXPORT_SYMBOL(from_kqid_munged);
     114                 :            : 
     115                 :            : /**
     116                 :            :  *      qid_valid - Report if a valid value is stored in a kqid.
     117                 :            :  *      @qid: The kernel internal quota identifier to test.
     118                 :            :  */
     119                 :          0 : bool qid_valid(struct kqid qid)
     120                 :            : {
     121   [ #  #  #  # ]:          0 :         switch (qid.type) {
     122                 :            :         case USRQUOTA:
     123                 :          0 :                 return uid_valid(qid.uid);
     124                 :            :         case GRPQUOTA:
     125                 :          0 :                 return gid_valid(qid.gid);
     126                 :            :         case PRJQUOTA:
     127                 :          0 :                 return projid_valid(qid.projid);
     128                 :            :         default:
     129                 :          0 :                 BUG();
     130                 :            :         }
     131                 :            : }
     132                 :            : EXPORT_SYMBOL(qid_valid);

Generated by: LCOV version 1.9