mirror of
				git://sourceware.org/git/lvm2.git
				synced 2025-10-26 07:33:16 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			167 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
 | |
|  * Copyright (C) 2004 Red Hat, Inc. All rights reserved.
 | |
|  *
 | |
|  * This file is part of the device-mapper userspace tools.
 | |
|  *
 | |
|  * This copyrighted material is made available to anyone wishing to use,
 | |
|  * modify, copy, or redistribute it subject to the terms and conditions
 | |
|  * of the GNU Lesser General Public License v.2.1.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public License
 | |
|  * along with this program; if not, write to the Free Software Foundation,
 | |
|  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
|  */
 | |
| 
 | |
| #ifndef LIB_DEVICE_MAPPER_H
 | |
| #define LIB_DEVICE_MAPPER_H
 | |
| 
 | |
| #include <inttypes.h>
 | |
| #include <sys/types.h>
 | |
| 
 | |
| #ifdef linux
 | |
| #  include <linux/types.h>
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Since it is quite laborious to build the ioctl
 | |
|  * arguments for the device-mapper people are
 | |
|  * encouraged to use this library.
 | |
|  *
 | |
|  * You will need to build a struct dm_task for
 | |
|  * each ioctl command you want to execute.
 | |
|  */
 | |
| 
 | |
| typedef void (*dm_log_fn) (int level, const char *file, int line,
 | |
| 			   const char *f, ...);
 | |
| 
 | |
| /*
 | |
|  * The library user may wish to register their own
 | |
|  * logging function, by default errors go to stderr.
 | |
|  * Use dm_log_init(NULL) to restore the default log fn.
 | |
|  */
 | |
| void dm_log_init(dm_log_fn fn);
 | |
| void dm_log_init_verbose(int level);
 | |
| 
 | |
| enum {
 | |
| 	DM_DEVICE_CREATE,
 | |
| 	DM_DEVICE_RELOAD,
 | |
| 	DM_DEVICE_REMOVE,
 | |
| 	DM_DEVICE_REMOVE_ALL,
 | |
| 
 | |
| 	DM_DEVICE_SUSPEND,
 | |
| 	DM_DEVICE_RESUME,
 | |
| 
 | |
| 	DM_DEVICE_INFO,
 | |
| 	DM_DEVICE_DEPS,
 | |
| 	DM_DEVICE_RENAME,
 | |
| 
 | |
| 	DM_DEVICE_VERSION,
 | |
| 
 | |
| 	DM_DEVICE_STATUS,
 | |
| 	DM_DEVICE_TABLE,
 | |
| 	DM_DEVICE_WAITEVENT,
 | |
| 
 | |
| 	DM_DEVICE_LIST,
 | |
| 
 | |
| 	DM_DEVICE_CLEAR,
 | |
| 
 | |
| 	DM_DEVICE_MKNODES,
 | |
| 
 | |
| 	DM_DEVICE_LIST_VERSIONS
 | |
| };
 | |
| 
 | |
| struct dm_task;
 | |
| 
 | |
| struct dm_task *dm_task_create(int type);
 | |
| void dm_task_destroy(struct dm_task *dmt);
 | |
| 
 | |
| int dm_task_set_name(struct dm_task *dmt, const char *name);
 | |
| int dm_task_set_uuid(struct dm_task *dmt, const char *uuid);
 | |
| 
 | |
| /*
 | |
|  * Retrieve attributes after an info.
 | |
|  */
 | |
| struct dm_info {
 | |
| 	int exists;
 | |
| 	int suspended;
 | |
| 	int live_table;
 | |
| 	int inactive_table;
 | |
| 	int32_t open_count;
 | |
| 	uint32_t event_nr;
 | |
| 	uint32_t major;
 | |
| 	uint32_t minor;		/* minor device number */
 | |
| 	int read_only;		/* 0:read-write; 1:read-only */
 | |
| 
 | |
| 	int32_t target_count;
 | |
| };
 | |
| 
 | |
| struct dm_deps {
 | |
| 	uint32_t count;
 | |
| 	uint32_t filler;
 | |
| 	uint64_t device[0];
 | |
| };
 | |
| 
 | |
| struct dm_names {
 | |
| 	uint64_t dev;
 | |
| 	uint32_t next;		/* Offset to next struct from start of this struct */
 | |
| 	char name[0];
 | |
| };
 | |
| 
 | |
| struct dm_versions {
 | |
|         uint32_t next;		/* Offset to next struct from start of this struct */
 | |
|         uint32_t version[3];
 | |
| 
 | |
|         char name[0];
 | |
| };
 | |
| 
 | |
| int dm_get_library_version(char *version, size_t size);
 | |
| int dm_task_get_driver_version(struct dm_task *dmt, char *version, size_t size);
 | |
| int dm_task_get_info(struct dm_task *dmt, struct dm_info *dmi);
 | |
| const char *dm_task_get_name(struct dm_task *dmt);
 | |
| const char *dm_task_get_uuid(struct dm_task *dmt);
 | |
| 
 | |
| struct dm_deps *dm_task_get_deps(struct dm_task *dmt);
 | |
| struct dm_names *dm_task_get_names(struct dm_task *dmt);
 | |
| struct dm_versions *dm_task_get_versions(struct dm_task *dmt);
 | |
| 
 | |
| int dm_task_set_ro(struct dm_task *dmt);
 | |
| int dm_task_set_newname(struct dm_task *dmt, const char *newname);
 | |
| int dm_task_set_minor(struct dm_task *dmt, int minor);
 | |
| int dm_task_set_major(struct dm_task *dmt, int major);
 | |
| int dm_task_set_event_nr(struct dm_task *dmt, uint32_t event_nr);
 | |
| 
 | |
| /*
 | |
|  * Use these to prepare for a create or reload.
 | |
|  */
 | |
| int dm_task_add_target(struct dm_task *dmt,
 | |
| 		       uint64_t start,
 | |
| 		       uint64_t size, const char *ttype, const char *params);
 | |
| 
 | |
| /*
 | |
|  * Format major/minor numbers correctly for input to driver
 | |
|  */
 | |
| int dm_format_dev(char *buf, int bufsize, uint32_t dev_major, uint32_t dev_minor);
 | |
| 
 | |
| /* Use this to retrive target information returned from a STATUS call */
 | |
| void *dm_get_next_target(struct dm_task *dmt,
 | |
| 			 void *next, uint64_t *start, uint64_t *length,
 | |
| 			 char **target_type, char **params);
 | |
| 
 | |
| /*
 | |
|  * Call this to actually run the ioctl.
 | |
|  */
 | |
| int dm_task_run(struct dm_task *dmt);
 | |
| 
 | |
| /*
 | |
|  * Configure the device-mapper directory
 | |
|  */
 | |
| int dm_set_dev_dir(const char *dir);
 | |
| const char *dm_dir(void);
 | |
| 
 | |
| /* Release library resources */
 | |
| void dm_lib_release(void);
 | |
| void dm_lib_exit(void);
 | |
| 
 | |
| #endif				/* LIB_DEVICE_MAPPER_H */
 |