2019-05-24 13:04:05 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2021-05-07 04:06:44 +03:00
/*
2005-12-16 01:31:24 +03:00
* ocfs2_buffer_head . h
*
* Buffer cache handling functions defined
*
* Copyright ( C ) 2002 , 2004 Oracle . All rights reserved .
*/
# ifndef OCFS2_BUFFER_HEAD_IO_H
# define OCFS2_BUFFER_HEAD_IO_H
# include <linux/buffer_head.h>
int ocfs2_write_block ( struct ocfs2_super * osb ,
struct buffer_head * bh ,
2009-02-11 07:00:41 +03:00
struct ocfs2_caching_info * ci ) ;
2008-10-10 04:20:29 +04:00
int ocfs2_read_blocks_sync ( struct ocfs2_super * osb , u64 block ,
unsigned int nr , struct buffer_head * bhs [ ] ) ;
2005-12-16 01:31:24 +03:00
2008-11-14 01:49:19 +03:00
/*
* If not NULL , validate ( ) will be called on a buffer that is freshly
* read from disk . It will not be called if the buffer was in cache .
* Note that if validate ( ) is being used for this buffer , it needs to
* be set even for a READAHEAD call , as it marks the buffer for later
* validation .
*/
2009-02-11 07:00:41 +03:00
int ocfs2_read_blocks ( struct ocfs2_caching_info * ci , u64 block , int nr ,
2008-11-14 01:49:19 +03:00
struct buffer_head * bhs [ ] , int flags ,
int ( * validate ) ( struct super_block * sb ,
struct buffer_head * bh ) ) ;
2007-12-18 10:47:03 +03:00
int ocfs2_write_super_or_backup ( struct ocfs2_super * osb ,
struct buffer_head * bh ) ;
2005-12-16 01:31:24 +03:00
2008-10-10 04:20:34 +04:00
# define OCFS2_BH_IGNORE_CACHE 1
2006-04-22 00:49:02 +04:00
# define OCFS2_BH_READAHEAD 8
2005-12-16 01:31:24 +03:00
2009-02-11 07:00:41 +03:00
static inline int ocfs2_read_block ( struct ocfs2_caching_info * ci , u64 off ,
2008-11-14 01:49:19 +03:00
struct buffer_head * * bh ,
int ( * validate ) ( struct super_block * sb ,
struct buffer_head * bh ) )
2005-12-16 01:31:24 +03:00
{
int status = 0 ;
if ( bh = = NULL ) {
printk ( " ocfs2: bh == NULL \n " ) ;
status = - EINVAL ;
goto bail ;
}
2009-02-11 07:00:41 +03:00
status = ocfs2_read_blocks ( ci , off , 1 , bh , 0 , validate ) ;
2005-12-16 01:31:24 +03:00
bail :
return status ;
}
# endif /* OCFS2_BUFFER_HEAD_IO_H */