# ioctl_xfs_scrubv_metadata

## NAME



           ioctl_xfs_scrubv_metadata - check a lot of XFS filesystem metadata
    


## SYNOPSIS



           **#include <xfs/xfs_fs.h>**
    
           **int ioctl(int** _dest_fd_**, XFS_IOC_SCRUBV_METADATA, struct**
           **xfs_scrub_vec_head ***_arg_**);**
    


## DESCRIPTION



           This XFS ioctl asks the kernel driver to examine several pieces of
           filesystem metadata for errors or suboptimal metadata.  Multiple
           scrub types can be invoked to target a single filesystem object.
           See ioctl_xfs_scrub_metadata(2) for a discussion of metadata
           validation, and documentation of the various **XFS_SCRUB_TYPE** and
           **XFS_SCRUB_FLAGS** values referenced below.
    
           The types and location of the metadata to scrub are conveyed as a
           vector with a header of the following form:
    
               struct xfs_scrub_vec_head {
                    __u64 svh_ino;
                    __u32 svh_gen;
                    __u32 svh_agno;
                    __u32 svh_flags;
                    __u16 svh_rest_us;
                    __u16 svh_nr;
                    __u64 svh_reserved;
                    __u64 svh_vectors;
               };
    
           The field _svh_ino_ , _svh_gen_ , and _svh_agno_ correspond to the _sm_ino_ ,
           _sm_gen_ , and _sm_agno_ fields of the regular scrub ioctl.  Exactly
           one filesystem object can be specified in a single call.  The
           kernel will proceed with each vector in _svh_vectors_ until progress
           is no longer possible.
    
           The field _svh_rest_us_ specifies an amount of time to pause between
           each scrub invocation to give the system a chance to process other
           requests.
    
           The field _svh_nr_ specifies the number of vectors in the
           _svh_vectors_ array.
    
           The field _svh_vectors_ is a pointer to an array of **struct**
           **xfs_scrub_vec** structures.
    
           The field _svh_reserved_ must be zero.
    
           Each vector has the following form:
    
               struct xfs_scrub_vec {
                    __u32 sv_type;
                    __u32 sv_flags;
                    __s32 sv_ret;
                    __u32 sv_reserved;
               };
    
           The fields _sv_type_ and _sv_flags_ indicate the type of metadata to
           check and the behavioral changes that userspace will permit of the
           kernel.  The _sv_flags_ field will be updated upon completion of the
           scrub call.  See the documentation of **XFS_SCRUB_TYPE_*** and
           **XFS_SCRUB_[IO]FLAG_*** values in ioctl_xfs_scrub_metadata(2) for a
           detailed description of their purpose.
    
           If a vector's _sv_type_ field is set to the value
           **XFS_SCRUB_TYPE_BARRIER** , the kernel will stop processing vectors
           and return to userspace if a scrubber flags corruption by setting
           one of the **XFS_SCRUB_OFLAG_*** values in _sv_flags_ or returns an
           operation error in _sv_ret_.  Otherwise, the kernel returns only
           after processing all vectors.
    
           The _sv_ret_ field is set to the return value of the scrub function.
           See the RETURN VALUE section of the ioctl_xfs_scrub_metadata(2)
           manual page for more information.
    
           The **sv_reserved** field must be zero.
    


## RETURN VALUE



           On error, -1 is returned, and _errno_ is set to indicate the error.
    


## ERRORS



           Error codes can be one of, but are not limited to, the following:
    
           **EINVAL** One or more of the arguments specified is invalid.
    
           **EINTR** The operation was interrupted.
    
           **ENOMEM** There was not sufficient memory to perform the scrub or
                  repair operation.
    
           **EFAULT** A memory fault was encountered while reading or writing the
                  vector.
    


## CONFORMING TO



           This API is specific to XFS filesystem on the Linux kernel.
    


## NOTES



           These operations may block other filesystem operations for a long
           time.  A calling process can stop the operation by being sent a
           fatal signal, but non-fatal signals are blocked.
    


* * *