2015-10-28 19:54:56 +01:00
/*
* Copyright : Matias Bjorling < mb @ bjorling . me >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License version
* 2 as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful , but
* WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
*/
# ifndef GENNVM_H_
# define GENNVM_H_
# include <linux/module.h>
# include <linux/vmalloc.h>
# include <linux/lightnvm.h>
struct gen_lun {
struct nvm_lun vlun ;
int reserved_blocks ;
/* lun block lists */
struct list_head used_list ; /* In-use blocks */
struct list_head free_list ; /* Not used blocks i.e. released
* and ready for use
*/
struct list_head bb_list ; /* Bad blocks. Mutually exclusive with
* free_list and used_list
*/
} ;
2016-07-07 09:54:15 +02:00
struct gen_dev {
2015-11-16 15:34:37 +01:00
struct nvm_dev * dev ;
2015-10-28 19:54:56 +01:00
int nr_luns ;
struct gen_lun * luns ;
2016-03-03 15:06:37 +01:00
struct list_head area_list ;
2016-07-07 09:54:16 +02:00
struct mutex lock ;
struct list_head targets ;
2015-10-28 19:54:56 +01:00
} ;
2016-07-07 09:54:15 +02:00
struct gen_area {
2016-03-03 15:06:37 +01:00
struct list_head list ;
sector_t begin ;
sector_t end ; /* end is excluded */
} ;
2016-07-07 09:54:15 +02:00
# define gen_for_each_lun(bm, lun, i) \
2015-10-28 19:54:56 +01:00
for ( ( i ) = 0 , lun = & ( bm ) - > luns [ 0 ] ; \
( i ) < ( bm ) - > nr_luns ; ( i ) + + , lun = & ( bm ) - > luns [ ( i ) ] )
# endif /* GENNVM_H_ */