Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.1 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge