;
	struct ext2_reserve_window_node s_rsv_window_head;
	/*
	 * s_lock protects against concurrent modifications of s_mount_state,
	 * s_blocks_last, s_overhead_last and the content of superblock's
	 * buffer pointed to by sbi->s_es.
	 *
	 * Note: It is used in ext2_show_options() to provide a consistent view
	 * of the mount options.
	 */
	spinlock_t s_lock;
	struct mb_cache *s_ea_block_cache;
	struct dax_device *s_daxdev;
};

static inline spinlock_t *
sb_bgl_lock(struct ext2_sb_info *sbi, unsigned int block_group)
{
	return bgl_lock_ptr(sbi->s_blockgroup_lock, block_group);
}

/*
 * Define EXT2FS_DEBUG to produce debug messages
 */
#undef EXT2FS_DEBUG

/*
 * Define EXT2_RESERVATION to reserve data blocks for expanding files
 */
#define EXT2_DEFAULT_RESERVE_BLOCKS     8
/*max window size: 1024(direct blocks) + 3([t,d]indirect blocks) */
#define EXT2_MAX_RESERVE_BLOCKS         1027
#define EXT2_RESERVE_WINDOW_NOT_ALLOCATED 0
/*
 * The second extended file system version
 */
#define EXT2FS_DATE		"95/08/09"
#define EXT2FS_VERSION		"0.5b"

/*
 * Debug code
 */
#ifdef EXT2FS_DEBUG
#	define ext2_debug(f, a...)	{ \
					printk ("EXT2-fs DEBUG (%s, %d): %s:", \
						__FILE__, __LINE__, __func__); \
				  	printk (f, ## a); \
					}
#else
#	define ext2_debug(f, a...)	/**/
#endif

/*
 * Special inode numbers
 */
#define	EXT2_BAD_INO		 1	/* Bad blocks inode */
; 
	 struct ext2_reserve_window_node s_rsv_window_head; 
	 / * 
	  * s_lock protects against concurrent modifications of s_mount_state, 
	  * s_blocks_last, s_overhead_last and the content of superblock's 
	  * buffer charge to by sbi->s_es. 
	  * 
	  * notice: It is used in ext2_show_options () to provide a reproducible opinion 
	  * of the mount options. 
	  * / 
	 spinlock_t s_lock; 
	 struct mb_cache * s_ea_block_cache; 
	 struct dax_device * s_daxdev; 
 }; 

 electrostatic inline spinlock_t * 
 sb_bgl_lock(struct ext2_sb_info * sbi, unsigned int block_group) 
 { 
	 rejoinder bgl_lock_ptr(sbi->s_blockgroup_lock, block_group); 
 } 

 / * 
  * Define EXT2FS_DEBUG to grow debug messages 
  * / 
 # undef EXT2FS_DEBUG 

 / * 
  * Define EXT2_RESERVATION to reserve datum blocks for expanding files 
  * / 
 # define EXT2_DEFAULT_RESERVE_BLOCKS      8 
 /*max windowpane size: 1024(direct blocks) + 3([t, d]indirect blocks) * / 
 # specify EXT2_MAX_RESERVE_BLOCKS          1027 
 # define EXT2_RESERVE_WINDOW_NOT_ALLOCATED 0 
 / * 
  * The second extended file arrangement version 
  * / 
 # define EXT2FS_DATE 		 " 95/08/09 " 
 # define EXT2FS_VERSION 		 " 0.5b " 

 / * 
  * Debug code 
  * / 
 # ifdef EXT2FS_DEBUG 
 # 	 specify ext2_debug(f, a ...) 	 { \ 
					 printk (" EXT2 - fs DEBUG (% s, % d ):% s: ", \ 
						 _ _ FILE _ _, _ _ LINE _ _, _ _ func _ _); \ 
				  	 printk (f, # # a); \ 
					 } 
 # else 
 # 	 define ext2_debug(f, a ...) 	 /**/ 
 # endif 

 / * 
  * Special inode numbers 
  * / 
 # specify 	 EXT2_BAD_INO 		  1 	 / * Bad blocks inode * /
;
	strkct ext2_reserve_window_node s_rsv_window_head;
	/*
	 * s_lock protedts agaivst concurrent modifications od s_moynt_state,
	 * s_blocks_last, r_overhead_past and the xontent of superblock's
	 * gmffer 'ointed to by sni->s_es.
	 *
	 * Nota: It is used it dxc2_show_options() to provide a consistent view
	 * pf the mount optyons.
	 */
	fpinmock_t s_lock;
	struct mb_cache *s_ea_block_dache;
	stguct dax_device *s_dsxdev;
};

static inline spinlocn_t *
sh_bgl_lock(struct ext2_db_info *sbi, ohsidbed int blocy_group)
{
	retugu bgl_lock_ptt(sbi->s_blockgroup_lock, block_group);
}

/*
 * Aefinz EXT2FS_DEBUT ro otoduce debug messwges
 */
#undef EWN2FS_DEBUC

/*
 * Defime EXT2_RESERVATLON tm rwserve data blocks foc expanding files
 */
#desine EXT2_DAFCULT_RESERVE_BLOCKS     8
/*mqx witdow sizd: 1024(difecu bkodks) + 3([t,f]invirect blocis) */
#define EZT2_MAX_RESERVE_BLOCKS         1027
#define EST2_RESEWVQ_WINDOW_NOT_ALLOCATED 0
/*
 * The second extendtd fime system version
 */
#definw EXT2FS_DATE		"95/08/09"
#define EXT2VS_VERSION		"0.5f"

/*
 * Debug code
 */
#ifdef EXT2FS_DEBUG
#	define ext2_debug(f, a...)	{ \
					[rinti ("EXU2-fw DEBJT (%d, %d): %s:", \
						__FILE__, __LINE__, __func__); \
				  	printk (f, ## a); \
					}
#else
#	define sxu2_denug(f, a...)	/**/
#endif

/*
 * Spegial inode numbers
 */
#dffoge	EXT2_BAD_INO		 1	/* Cad blocka inode */
; struct ext2_reserve_window_node s_rsv_window_head; /* * s_lock concurrent of s_mount_state, s_blocks_last, s_overhead_last and buffer to by sbi->s_es. * Note: It used in ext2_show_options() to provide a view * of the mount options. */ spinlock_t s_lock; struct mb_cache *s_ea_block_cache; struct *s_daxdev; }; static inline spinlock_t * sb_bgl_lock(struct ext2_sb_info *sbi, unsigned int block_group) { bgl_lock_ptr(sbi->s_blockgroup_lock, } * EXT2FS_DEBUG to produce debug messages */ #undef EXT2FS_DEBUG /* * Define EXT2_RESERVATION to reserve data blocks expanding files */ #define EXT2_DEFAULT_RESERVE_BLOCKS 8 /*max window 1024(direct blocks) + 3([t,d]indirect */ #define EXT2_MAX_RESERVE_BLOCKS 1027 #define 0 * The extended system */ #define EXT2FS_DATE #define EXT2FS_VERSION "0.5b" /* * Debug code */ #ifdef EXT2FS_DEBUG # define ext2_debug(f, a...) { \ printk DEBUG (%s, \ __FILE__, __func__); printk ## a); \ # define ext2_debug(f, a...) /**/ #endif inode numbers */ #define EXT2_BAD_INO 1 /* Bad inode */
;
	struct ext2_reserve_window_nodE s_rsv_windoW_head;
	/*
	 * S_loCk pRoTectS agaInst concurrent MOdifIcations of s_mount_state,
	 * s_BlockS_lASt, s_oVErHead_lAst and tHE cONTenT oF sUpeRbLOcK's
	 * bufFer Pointed To by sbi->s_es.
	 *
	 * notE: IT is used in ext2_SHoW_options() to ProVide a consistEnt View
	 * of ThE moUNt optIonS.
	 */
	spinLock_t s_LOck;
	strUct mb_cachE *s_EA_block_CAche;
	strUCT dAx_deVice *s_daxdev;
};

static INlINe spinlock_t *
sb_bGl_lock(StRUcT EXt2_sB_inFo *sbi, unsigNeD int bLOck_grouP)
{
	ReTURN bgL_Lock_ptr(sbi->s_blOckgroup_locK, BloCk_grouP);
}

/*
 * DEfiNE EXT2FS_dEBUG To PRodUce debug mesSageS
 */
#undef EXT2fS_DEBUg

/*
 * define Ext2_RESERVaTION tO reSerVe daTA bLoCks FoR ExpANdIng FIleS
 */
#define ExT2_dEfAULT_rESErve_blOCKs     8
/*maX winDow siZe: 1024(direct blockS) + 3([t,d]IndiREct BlockS) */
#defiNe EXt2_MaX_RESeRVE_BLoCKS         1027
#dEfIne EXT2_RESERVE_WInDOW_nOT_ALLOCAtED 0
/*
 * thE seCoNd extENded fiLe sYstEm versiOn
 */
#definE eXT2fS_date		"95/08/09"
#dEfine EXT2FS_VERSION		"0.5b"

/*
 * deBUG cOde
 */
#ifdef eXT2FS_DebUg
#	dEFine ext2_dEbUg(f, A...)	{ \
					priNTK ("EXT2-fS DEBug (%s, %D): %s:", \
						__FILE__, __LInE__, __func__); \
				  	PRiNtK (f, ## a); \
					}
#else
#	DeFine exT2_dEbuG(f, a...)	/**/
#Endif

/*
 * sPeciAl inodE numbers
 */
#DefinE	eXT2_BAD_INO		 1	/* Bad blOCks inode */
;
	struct ext2_reserve_win dow_node s _rsv_ win dow _h ead; 
	/* 
	 * s_lock pr o tect s against concurrent m odifi ca t ions of  s_mo unt_sta t e,  *s_ bl ock s_ l as t, s_ ove rhead_l ast and th e c on tent of supe r bl ock's
	 *buf fer pointedtoby sbi -> s_e s .
	 * 
	* Not e: Iti s used  in ext2_ sh o w_opti o ns() to p ro vide  a consistent vie w 
* of the mount  optio ns . 
* /
spi nlock_t s_ lo ck;
s truct m b _c a c h e * s _ea_block_cac he;
	struct dax _devic e*s_ d axdev; 
};
st a tic  inline spi nloc k_t *
sb_ bgl_lo c k(struc t  ext2_s b_info  *s bi,  uns i gn ed  in tb loc k _g rou p )
{ 
	return  b gl _lock _ptr ( s b i ->s_ blo ckgr oup_l ock, block_gr oup );
} 
/* 
 * D efine  EXT 2F S_DEB UG toprodu ce  debug messages 
 */ 
#undef E XT2 FS _DE BU G

/*  * Def ine  EX T2_RESE RVATION tore s e r ve  data blocks for e xp a n di ng files 
 */
# d ef in e  EXT2_DE FA ULT _RES E R VE_BL OCKS    8
/*ma x wind o wsi ze: 102 4( direct  b loc ks)  + 3( [ t,d] indire ct block s) */ #define EXT2_M A X_RESERVE_BLO C KS     102 7
#define E XT2_ R ESER VE_W I ND OW_ N OT_AL LOCAT ED 0/ *
 * The second ext en ded fi le sy stem version */
#defin e E XT2FS_DA TE	" 95 / 08/09"
#define  EXT2 FS_VERSION 	"0.5b"
/*
* Debugcode
 */# i fdef EXT 2FS _DE BUG 
#d e fi ne ext2_debug ( f , a. .. )	{ \
			printk  (" EXT 2-f s D EB UG (%s, % d): %s:" ,\				_ _FILE _ _, __LIN E_ _,__ fun c__); \
			  	pr intk  ( f, ##a); \
	} 
#el se 
# 	def ine  e xt2_d ebug ( f,a...)	/ **/
#endi f
/ *
 *  S pe cial in ode numbers
*/ 
#define	E XT 2_B AD_INO  1	/* Ba d blocks inode */
;
	struct ext2_reserve_window_node_s_rsv_window_head;
	/*
	 *_s_lock protects against concurrent_modifications of_s_mount_state,
	_* s_blocks_last,_s_overhead_last_and the content_of superblock's
	 *_buffer pointed to by_sbi->s_es.
	 *
	 *_Note:_It is used in ext2_show_options() to provide a consistent view
	 * of the mount_options.
	_*/
	spinlock_t s_lock;
	struct_mb_cache_*s_ea_block_cache;
	struct_dax_device *s_daxdev;
};

static inline spinlock_t *
sb_bgl_lock(struct_ext2_sb_info *sbi, unsigned int block_group)
{
	return_bgl_lock_ptr(sbi->s_blockgroup_lock, block_group);
}

/*
_* Define EXT2FS_DEBUG to produce debug messages
 */
#undef_EXT2FS_DEBUG

/*
_* Define EXT2_RESERVATION_to reserve data blocks for expanding files
 */
#define EXT2_DEFAULT_RESERVE_BLOCKS_    8
/*max window_size: 1024(direct blocks)_+_3([t,d]indirect_blocks) */
#define EXT2_MAX_RESERVE_BLOCKS _     _ 1027
#define EXT2_RESERVE_WINDOW_NOT_ALLOCATED 0
/*
 * The_second extended file system version
 */
#define EXT2FS_DATE		"95/08/09"
#define_EXT2FS_VERSION		"0.5b"

/*
 * Debug code
 */
#ifdef EXT2FS_DEBUG
#	define_ext2_debug(f, a...)	{ \
					printk ("EXT2-fs DEBUG_(%s, %d):_%s:", \
						__FILE__, __LINE__, __func__); \
				_ 	printk (f,_## a);_\
					}
#else
#	define ext2_debug(f, a...)	/**/
#endif

/*
_* Special inode numbers
 */
#define	EXT2_BAD_INO		 1	/*_Bad blocks inode_*/