LCOV - code coverage report
Current view: top level - fs/xfs/scrub - quotacheck.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc4-xfsx @ Mon Jul 31 20:08:34 PDT 2023 Lines: 8 10 80.0 %
Date: 2023-07-31 20:08:34 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0-or-later */
       2             : /*
       3             :  * Copyright (C) 2020-2023 Oracle.  All Rights Reserved.
       4             :  * Author: Darrick J. Wong <djwong@kernel.org>
       5             :  */
       6             : #ifndef __XFS_SCRUB_QUOTACHECK_H__
       7             : #define __XFS_SCRUB_QUOTACHECK_H__
       8             : 
       9             : /* Quota counters for live quotacheck. */
      10             : struct xqcheck_dquot {
      11             :         /* block usage count */
      12             :         int64_t                 bcount;
      13             : 
      14             :         /* inode usage count */
      15             :         int64_t                 icount;
      16             : 
      17             :         /* realtime block usage count */
      18             :         int64_t                 rtbcount;
      19             : 
      20             :         /* Record state */
      21             :         unsigned int            flags;
      22             : };
      23             : 
      24             : /*
      25             :  * This incore dquot record has been written at least once.  We never want to
      26             :  * store an xqcheck_dquot that looks uninitialized.
      27             :  */
      28             : #define XQCHECK_DQUOT_WRITTEN           (1U << 0)
      29             : 
      30             : /* Already checked this dquot. */
      31             : #define XQCHECK_DQUOT_COMPARE_SCANNED   (1U << 1)
      32             : 
      33             : /* Already repaired this dquot. */
      34             : #define XQCHECK_DQUOT_REPAIR_SCANNED    (1U << 2)
      35             : 
      36             : /* Live quotacheck control structure. */
      37             : struct xqcheck {
      38             :         struct xfs_scrub        *sc;
      39             : 
      40             :         /* Shadow dquot counter data. */
      41             :         struct xfarray          *ucounts;
      42             :         struct xfarray          *gcounts;
      43             :         struct xfarray          *pcounts;
      44             : 
      45             :         /* Lock protecting quotacheck count observations */
      46             :         struct mutex            lock;
      47             : 
      48             :         struct xchk_iscan       iscan;
      49             : 
      50             :         /* Hooks into the quota code. */
      51             :         struct xfs_dqtrx_hook   hooks;
      52             : 
      53             :         /* Shadow quota delta tracking structure. */
      54             :         struct rhashtable       shadow_dquot_acct;
      55             : };
      56             : 
      57             : /* Return the incore counter array for a given quota type. */
      58             : static inline struct xfarray *
      59   115411635 : xqcheck_counters_for(
      60             :         struct xqcheck          *xqc,
      61             :         xfs_dqtype_t            dqtype)
      62             : {
      63   115411635 :         switch (dqtype) {
      64    54933431 :         case XFS_DQTYPE_USER:
      65    54933431 :                 return xqc->ucounts;
      66    54910750 :         case XFS_DQTYPE_GROUP:
      67    54910750 :                 return xqc->gcounts;
      68     5567454 :         case XFS_DQTYPE_PROJ:
      69     5567454 :                 return xqc->pcounts;
      70             :         }
      71             : 
      72           0 :         ASSERT(0);
      73           0 :         return NULL;
      74             : }
      75             : 
      76             : #endif /* __XFS_SCRUB_QUOTACHECK_H__ */

Generated by: LCOV version 1.14