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


Quelle  rtbitmap.h   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2023 Oracle.  All Rights Reserved.
 * Author: Darrick J. Wong <djwong@kernel.org>
 */

#ifndef __XFS_SCRUB_RTBITMAP_H__
#define __XFS_SCRUB_RTBITMAP_H__

/*
 * We use an xfile to construct new bitmap blocks for the portion of the
 * rtbitmap file that we're replacing.  Whereas the ondisk bitmap must be
 * accessed through the buffer cache, the xfile bitmap supports direct
 * word-level accesses.  Therefore, we create a small abstraction for linear
 * access.
 */

typedef unsigned long long xrep_wordoff_t;
typedef unsigned int xrep_wordcnt_t;

/* Mask to round an rtx down to the nearest bitmap word. */
#define XREP_RTBMP_WORDMASK ((1ULL << XFS_NBWORDLOG) - 1)


struct xchk_rtbitmap {
 struct xfs_scrub *sc;

 uint64_t  rextents;
 uint64_t  rbmblocks;
 unsigned int  rextslog;
 unsigned int  resblks;

 /* The next free rt group block number that we expect to see. */
 xfs_rgblock_t  next_free_rgbno;

#ifdef CONFIG_XFS_ONLINE_REPAIR
 /* stuff for staging a new bitmap */
 struct xfs_rtalloc_args args;
 struct xrep_tempexch tempexch;
#endif

 /* The next rtgroup block we expect to see during our rtrmapbt walk. */
 xfs_rgblock_t  next_rgbno;

 /* rtgroup lock flags */
 unsigned int  rtglock_flags;

 /* rtword position of xfile as we write buffers to disk. */
 xrep_wordoff_t  prep_wordoff;

 /* In-Memory rtbitmap for repair. */
 union xfs_rtword_raw words[];
};

#ifdef CONFIG_XFS_ONLINE_REPAIR
int xrep_setup_rtbitmap(struct xfs_scrub *sc, struct xchk_rtbitmap *rtb);

/*
 * How big should the words[] buffer be?
 *
 * For repairs, we want a full fsblock worth of space so that we can memcpy a
 * buffer full of 1s into the xfile bitmap.  The xfile bitmap doesn't have
 * rtbitmap block headers, so we don't use blockwsize.  Scrub doesn't use the
 * words buffer at all.
 */

static inline unsigned int
xchk_rtbitmap_wordcnt(
 struct xfs_scrub *sc)
{
 if (xchk_could_repair(sc))
  return sc->mp->m_sb.sb_blocksize >> XFS_WORDLOG;
 return 0;
}
#else
define xrep_setup_rtbitmap(sc, rtb) (0)
define xchk_rtbitmap_wordcnt(sc) (0)
#endif /* CONFIG_XFS_ONLINE_REPAIR */

#endif /* __XFS_SCRUB_RTBITMAP_H__ */

Messung V0.5
C=84 H=100 G=92

¤ Dauer der Verarbeitung: 0.10 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