struct {
struct cl_page_list vui_queue;
unsigned long vui_written;
+ unsigned long vui_read;
int vui_from;
int vui_to;
- } write;
+ } readwrite; /* normal io */
} u;
enum vvp_io_subtype vui_io_subtype;
static inline pgoff_t vvp_index(struct vvp_page *vpg)
{
- return vpg->vpg_cl.cpl_index;
+ return vpg->vpg_page->index;
}
struct vvp_device {
static inline struct vvp_device *lu2vvp_dev(const struct lu_device *d)
{
- return container_of0(d, struct vvp_device, vdv_cl.cd_lu_dev);
+ return container_of_safe(d, struct vvp_device, vdv_cl.cd_lu_dev);
}
static inline struct vvp_device *cl2vvp_dev(const struct cl_device *d)
{
- return container_of0(d, struct vvp_device, vdv_cl);
+ return container_of_safe(d, struct vvp_device, vdv_cl);
}
static inline struct vvp_object *cl2vvp(const struct cl_object *obj)
{
- return container_of0(obj, struct vvp_object, vob_cl);
+ return container_of_safe(obj, struct vvp_object, vob_cl);
}
static inline struct vvp_object *lu2vvp(const struct lu_object *obj)
{
- return container_of0(obj, struct vvp_object, vob_cl.co_lu);
+ return container_of_safe(obj, struct vvp_object, vob_cl.co_lu);
}
static inline struct inode *vvp_object_inode(const struct cl_object *obj)