2005-04-17 02:20:36 +04:00
/*
* Internal header file for device mapper
*
* Copyright ( C ) 2001 , 2002 Sistina Software
2006-06-26 11:27:32 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2005-04-17 02:20:36 +04:00
*
* This file is released under the LGPL .
*/
# ifndef DM_INTERNAL_H
# define DM_INTERNAL_H
# include <linux/fs.h>
# include <linux/device-mapper.h>
# include <linux/list.h>
# include <linux/blkdev.h>
2006-03-27 13:17:54 +04:00
# include <linux/hdreg.h>
2005-04-17 02:20:36 +04:00
2006-12-08 13:41:04 +03:00
/*
* Suspend feature flags
*/
# define DM_SUSPEND_LOCKFS_FLAG (1 << 0)
2006-12-08 13:41:07 +03:00
# define DM_SUSPEND_NOFLUSH_FLAG (1 << 1)
2006-12-08 13:41:04 +03:00
2005-04-17 02:20:36 +04:00
/*
* List of devices that a metadevice uses and should open / close .
*/
2008-10-10 16:37:09 +04:00
struct dm_dev_internal {
2005-04-17 02:20:36 +04:00
struct list_head list ;
atomic_t count ;
2008-10-10 16:37:09 +04:00
struct dm_dev dm_dev ;
2005-04-17 02:20:36 +04:00
} ;
struct dm_table ;
/*-----------------------------------------------------------------
2006-06-26 11:27:33 +04:00
* Internal table functions .
2005-04-17 02:20:36 +04:00
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void dm_table_event_callback ( struct dm_table * t ,
void ( * fn ) ( void * ) , void * context ) ;
struct dm_target * dm_table_get_target ( struct dm_table * t , unsigned int index ) ;
struct dm_target * dm_table_find_target ( struct dm_table * t , sector_t sector ) ;
void dm_table_set_restrictions ( struct dm_table * t , struct request_queue * q ) ;
struct list_head * dm_table_get_devices ( struct dm_table * t ) ;
void dm_table_presuspend_targets ( struct dm_table * t ) ;
void dm_table_postsuspend_targets ( struct dm_table * t ) ;
2006-10-03 12:15:36 +04:00
int dm_table_resume_targets ( struct dm_table * t ) ;
2005-04-17 02:20:36 +04:00
int dm_table_any_congested ( struct dm_table * t , int bdi_bits ) ;
2007-12-13 17:15:25 +03:00
/*
* To check the return value from dm_table_find_target ( ) .
*/
# define dm_target_is_valid(t) ((t)->table)
2005-04-17 02:20:36 +04:00
/*-----------------------------------------------------------------
* A registry of target types .
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
int dm_target_init ( void ) ;
void dm_target_exit ( void ) ;
struct target_type * dm_get_target_type ( const char * name ) ;
void dm_put_target_type ( struct target_type * t ) ;
int dm_target_iterate ( void ( * iter_func ) ( struct target_type * tt ,
void * param ) , void * param ) ;
int dm_split_args ( int * argc , char * * * argvp , char * input ) ;
/*
* The device - mapper can be driven through one of two interfaces ;
* ioctl or filesystem , depending which patch you have applied .
*/
int dm_interface_init ( void ) ;
void dm_interface_exit ( void ) ;
/*
* Targets for linear and striped mappings
*/
int dm_linear_init ( void ) ;
void dm_linear_exit ( void ) ;
int dm_stripe_init ( void ) ;
void dm_stripe_exit ( void ) ;
2006-06-26 11:27:34 +04:00
int dm_open_count ( struct mapped_device * md ) ;
int dm_lock_for_deletion ( struct mapped_device * md ) ;
2005-04-17 02:20:36 +04:00
2007-12-13 17:15:57 +03:00
void dm_kobject_uevent ( struct mapped_device * md ) ;
2008-04-25 00:43:49 +04:00
int dm_kcopyd_init ( void ) ;
void dm_kcopyd_exit ( void ) ;
2005-04-17 02:20:36 +04:00
# endif