LCOV - code coverage report
Current view: top level - fs/xfs - xfs_itable.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc3-acha @ Mon Jul 31 20:08:06 PDT 2023 Lines: 4 4 100.0 %
Date: 2023-07-31 20:08:07 Functions: 0 0 -

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0
       2             : /*
       3             :  * Copyright (c) 2000-2001 Silicon Graphics, Inc.  All Rights Reserved.
       4             :  */
       5             : #ifndef __XFS_ITABLE_H__
       6             : #define __XFS_ITABLE_H__
       7             : 
       8             : /* In-memory representation of a userspace request for batch inode data. */
       9             : struct xfs_ibulk {
      10             :         struct xfs_mount        *mp;
      11             :         struct mnt_idmap        *idmap;
      12             :         void __user             *ubuffer; /* user output buffer */
      13             :         xfs_ino_t               startino; /* start with this inode */
      14             :         unsigned int            icount;   /* number of elements in ubuffer */
      15             :         unsigned int            ocount;   /* number of records returned */
      16             :         unsigned int            flags;    /* see XFS_IBULK_FLAG_* */
      17             : };
      18             : 
      19             : /* Only iterate within the same AG as startino */
      20             : #define XFS_IBULK_SAME_AG       (1U << 0)
      21             : 
      22             : /* Fill out the bs_extents64 field if set. */
      23             : #define XFS_IBULK_NREXT64       (1U << 1)
      24             : 
      25             : /*
      26             :  * Advance the user buffer pointer by one record of the given size.  If the
      27             :  * buffer is now full, return the appropriate error code.
      28             :  */
      29             : static inline int
      30             : xfs_ibulk_advance(
      31             :         struct xfs_ibulk        *breq,
      32             :         size_t                  bytes)
      33             : {
      34 60106294479 :         char __user             *b = breq->ubuffer;
      35             : 
      36 60106294479 :         breq->ubuffer = b + bytes;
      37 60106294479 :         breq->ocount++;
      38 60106294479 :         return breq->ocount == breq->icount ? -ECANCELED : 0;
      39             : }
      40             : 
      41             : /*
      42             :  * Return stat information in bulk (by-inode) for the filesystem.
      43             :  */
      44             : 
      45             : /*
      46             :  * Return codes for the formatter function are 0 to continue iterating, and
      47             :  * non-zero to stop iterating.  Any non-zero value will be passed up to the
      48             :  * bulkstat/inumbers caller.  The special value -ECANCELED can be used to stop
      49             :  * iteration, as neither bulkstat nor inumbers will ever generate that error
      50             :  * code on their own.
      51             :  */
      52             : 
      53             : typedef int (*bulkstat_one_fmt_pf)(struct xfs_ibulk *breq,
      54             :                 const struct xfs_bulkstat *bstat);
      55             : 
      56             : int xfs_bulkstat_one(struct xfs_ibulk *breq, bulkstat_one_fmt_pf formatter);
      57             : int xfs_bulkstat(struct xfs_ibulk *breq, bulkstat_one_fmt_pf formatter);
      58             : void xfs_bulkstat_to_bstat(struct xfs_mount *mp, struct xfs_bstat *bs1,
      59             :                 const struct xfs_bulkstat *bstat);
      60             : 
      61             : typedef int (*inumbers_fmt_pf)(struct xfs_ibulk *breq,
      62             :                 const struct xfs_inumbers *igrp);
      63             : 
      64             : int xfs_inumbers(struct xfs_ibulk *breq, inumbers_fmt_pf formatter);
      65             : void xfs_inumbers_to_inogrp(struct xfs_inogrp *ig1,
      66             :                 const struct xfs_inumbers *ig);
      67             : 
      68             : #endif  /* __XFS_ITABLE_H__ */

Generated by: LCOV version 1.14