linux-headers (unknown)

(root)/
include/
linux/
falloc.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef _FALLOC_H_
       3  #define _FALLOC_H_
       4  
       5  #define FALLOC_FL_KEEP_SIZE	0x01 /* default is extend size */
       6  #define FALLOC_FL_PUNCH_HOLE	0x02 /* de-allocates range */
       7  #define FALLOC_FL_NO_HIDE_STALE	0x04 /* reserved codepoint */
       8  
       9  /*
      10   * FALLOC_FL_COLLAPSE_RANGE is used to remove a range of a file
      11   * without leaving a hole in the file. The contents of the file beyond
      12   * the range being removed is appended to the start offset of the range
      13   * being removed (i.e. the hole that was punched is "collapsed"),
      14   * resulting in a file layout that looks like the range that was
      15   * removed never existed. As such collapsing a range of a file changes
      16   * the size of the file, reducing it by the same length of the range
      17   * that has been removed by the operation.
      18   *
      19   * Different filesystems may implement different limitations on the
      20   * granularity of the operation. Most will limit operations to
      21   * filesystem block size boundaries, but this boundary may be larger or
      22   * smaller depending on the filesystem and/or the configuration of the
      23   * filesystem or file.
      24   *
      25   * Attempting to collapse a range that crosses the end of the file is
      26   * considered an illegal operation - just use ftruncate(2) if you need
      27   * to collapse a range that crosses EOF.
      28   */
      29  #define FALLOC_FL_COLLAPSE_RANGE	0x08
      30  
      31  /*
      32   * FALLOC_FL_ZERO_RANGE is used to convert a range of file to zeros preferably
      33   * without issuing data IO. Blocks should be preallocated for the regions that
      34   * span holes in the file, and the entire range is preferable converted to
      35   * unwritten extents - even though file system may choose to zero out the
      36   * extent or do whatever which will result in reading zeros from the range
      37   * while the range remains allocated for the file.
      38   *
      39   * This can be also used to preallocate blocks past EOF in the same way as
      40   * with fallocate. Flag FALLOC_FL_KEEP_SIZE should cause the inode
      41   * size to remain the same.
      42   */
      43  #define FALLOC_FL_ZERO_RANGE		0x10
      44  
      45  /*
      46   * FALLOC_FL_INSERT_RANGE is use to insert space within the file size without
      47   * overwriting any existing data. The contents of the file beyond offset are
      48   * shifted towards right by len bytes to create a hole.  As such, this
      49   * operation will increase the size of the file by len bytes.
      50   *
      51   * Different filesystems may implement different limitations on the granularity
      52   * of the operation. Most will limit operations to filesystem block size
      53   * boundaries, but this boundary may be larger or smaller depending on
      54   * the filesystem and/or the configuration of the filesystem or file.
      55   *
      56   * Attempting to insert space using this flag at OR beyond the end of
      57   * the file is considered an illegal operation - just use ftruncate(2) or
      58   * fallocate(2) with mode 0 for such type of operations.
      59   */
      60  #define FALLOC_FL_INSERT_RANGE		0x20
      61  
      62  /*
      63   * FALLOC_FL_UNSHARE_RANGE is used to unshare shared blocks within the
      64   * file size without overwriting any existing data. The purpose of this
      65   * call is to preemptively reallocate any blocks that are subject to
      66   * copy-on-write.
      67   *
      68   * Different filesystems may implement different limitations on the
      69   * granularity of the operation. Most will limit operations to filesystem
      70   * block size boundaries, but this boundary may be larger or smaller
      71   * depending on the filesystem and/or the configuration of the filesystem
      72   * or file.
      73   *
      74   * This flag can only be used with allocate-mode fallocate, which is
      75   * to say that it cannot be used with the punch, zero, collapse, or
      76   * insert range modes.
      77   */
      78  #define FALLOC_FL_UNSHARE_RANGE		0x40
      79  
      80  #endif /* _FALLOC_H_ */