cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

striper.h (1781B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _LINUX_CEPH_STRIPER_H
      3#define _LINUX_CEPH_STRIPER_H
      4
      5#include <linux/list.h>
      6#include <linux/types.h>
      7
      8struct ceph_file_layout;
      9
     10void ceph_calc_file_object_mapping(struct ceph_file_layout *l,
     11				   u64 off, u64 len,
     12				   u64 *objno, u64 *objoff, u32 *xlen);
     13
     14struct ceph_object_extent {
     15	struct list_head oe_item;
     16	u64 oe_objno;
     17	u64 oe_off;
     18	u64 oe_len;
     19};
     20
     21static inline void ceph_object_extent_init(struct ceph_object_extent *ex)
     22{
     23	INIT_LIST_HEAD(&ex->oe_item);
     24}
     25
     26/*
     27 * Called for each mapped stripe unit.
     28 *
     29 * @bytes: number of bytes mapped, i.e. the minimum of the full length
     30 *         requested (file extent length) or the remainder of the stripe
     31 *         unit within an object
     32 */
     33typedef void (*ceph_object_extent_fn_t)(struct ceph_object_extent *ex,
     34					u32 bytes, void *arg);
     35
     36int ceph_file_to_extents(struct ceph_file_layout *l, u64 off, u64 len,
     37			 struct list_head *object_extents,
     38			 struct ceph_object_extent *alloc_fn(void *arg),
     39			 void *alloc_arg,
     40			 ceph_object_extent_fn_t action_fn,
     41			 void *action_arg);
     42int ceph_iterate_extents(struct ceph_file_layout *l, u64 off, u64 len,
     43			 struct list_head *object_extents,
     44			 ceph_object_extent_fn_t action_fn,
     45			 void *action_arg);
     46
     47struct ceph_file_extent {
     48	u64 fe_off;
     49	u64 fe_len;
     50};
     51
     52static inline u64 ceph_file_extents_bytes(struct ceph_file_extent *file_extents,
     53					  u32 num_file_extents)
     54{
     55	u64 bytes = 0;
     56	u32 i;
     57
     58	for (i = 0; i < num_file_extents; i++)
     59		bytes += file_extents[i].fe_len;
     60
     61	return bytes;
     62}
     63
     64int ceph_extent_to_file(struct ceph_file_layout *l,
     65			u64 objno, u64 objoff, u64 objlen,
     66			struct ceph_file_extent **file_extents,
     67			u32 *num_file_extents);
     68
     69u64 ceph_get_num_objects(struct ceph_file_layout *l, u64 size);
     70
     71#endif