Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/fs/xfs/libxfs/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  xfs_trans_space.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2000,2005 Silicon Graphics, Inc.
 * All Rights Reserved.
 */

#include "xfs.h"
#include "xfs_fs.h"
#include "xfs_shared.h"
#include "xfs_format.h"
#include "xfs_da_format.h"
#include "xfs_log_format.h"
#include "xfs_trans_resv.h"
#include "xfs_mount.h"
#include "xfs_da_btree.h"
#include "xfs_bmap_btree.h"
#include "xfs_trans_space.h"

/* Calculate the disk space required to add a parent pointer. */
unsigned int
xfs_parent_calc_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen)
{
 /*
 * Parent pointers are always the first attr in an attr tree, and never
 * larger than a block
 */

 return XFS_DAENTER_SPACE_RES(mp, XFS_ATTR_FORK) +
        XFS_NEXTENTADD_SPACE_RES(mp, namelen, XFS_ATTR_FORK);
}

unsigned int
xfs_create_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen)
{
 unsigned int  ret;

 ret = XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp, namelen);
 if (xfs_has_parent(mp))
  ret += xfs_parent_calc_space_res(mp, namelen);

 return ret;
}

unsigned int
xfs_mkdir_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen)
{
 return xfs_create_space_res(mp, namelen);
}

unsigned int
xfs_link_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen)
{
 unsigned int  ret;

 ret = XFS_DIRENTER_SPACE_RES(mp, namelen);
 if (xfs_has_parent(mp))
  ret += xfs_parent_calc_space_res(mp, namelen);

 return ret;
}

unsigned int
xfs_symlink_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen,
 unsigned int  fsblocks)
{
 unsigned int  ret;

 ret = XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp, namelen) +
   fsblocks;

 if (xfs_has_parent(mp))
  ret += xfs_parent_calc_space_res(mp, namelen);

 return ret;
}

unsigned int
xfs_remove_space_res(
 struct xfs_mount *mp,
 unsigned int  namelen)
{
 unsigned int  ret = XFS_DIRREMOVE_SPACE_RES(mp);

 if (xfs_has_parent(mp))
  ret += xfs_parent_calc_space_res(mp, namelen);

 return ret;
}

unsigned int
xfs_rename_space_res(
 struct xfs_mount *mp,
 unsigned int  src_namelen,
 bool   target_exists,
 unsigned int  target_namelen,
 bool   has_whiteout)
{
 unsigned int  ret;

 ret = XFS_DIRREMOVE_SPACE_RES(mp) +
   XFS_DIRENTER_SPACE_RES(mp, target_namelen);

 if (xfs_has_parent(mp)) {
  if (has_whiteout)
   ret += xfs_parent_calc_space_res(mp, src_namelen);
  ret += 2 * xfs_parent_calc_space_res(mp, target_namelen);
 }

 if (target_exists)
  ret += xfs_parent_calc_space_res(mp, target_namelen);

 return ret;
}

Messung V0.5
C=98 H=97 G=97

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.