2020-09-17 23:02:40 +03:00
|
|
|
// Copyright (c) Vitaliy Filippov, 2019+
|
2021-02-06 01:26:07 +03:00
|
|
|
// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details)
|
2020-09-17 23:02:40 +03:00
|
|
|
|
2020-02-23 02:11:43 +03:00
|
|
|
#pragma once
|
|
|
|
|
2020-09-04 10:54:21 +03:00
|
|
|
#define POOL_SCHEME_REPLICATED 1
|
|
|
|
#define POOL_SCHEME_XOR 2
|
2020-11-30 00:08:25 +03:00
|
|
|
#define POOL_SCHEME_JERASURE 3
|
2020-09-04 10:54:21 +03:00
|
|
|
#define POOL_ID_MAX 0x10000
|
|
|
|
#define POOL_ID_BITS 16
|
|
|
|
#define INODE_POOL(inode) (pool_id_t)((inode) >> (64 - POOL_ID_BITS))
|
2021-09-25 01:36:44 +03:00
|
|
|
#define INODE_NO_POOL(inode) (inode_t)(inode & ((1l << (64-POOL_ID_BITS)) - 1))
|
2021-09-26 12:55:24 +03:00
|
|
|
#define INODE_WITH_POOL(pool_id, inode) (((inode_t)(pool_id) << (64-POOL_ID_BITS)) | INODE_NO_POOL(inode))
|
2020-09-04 10:54:21 +03:00
|
|
|
|
|
|
|
// Pool ID is 16 bits long
|
|
|
|
typedef uint32_t pool_id_t;
|
|
|
|
|
2020-02-23 02:11:43 +03:00
|
|
|
typedef uint64_t osd_num_t;
|
|
|
|
typedef uint32_t pg_num_t;
|
2020-09-04 10:54:21 +03:00
|
|
|
|
|
|
|
struct pool_pg_num_t
|
|
|
|
{
|
|
|
|
pool_id_t pool_id;
|
|
|
|
pg_num_t pg_num;
|
|
|
|
};
|
|
|
|
|
|
|
|
inline bool operator < (const pool_pg_num_t & a, const pool_pg_num_t & b)
|
|
|
|
{
|
|
|
|
return a.pool_id < b.pool_id || a.pool_id == b.pool_id && a.pg_num < b.pg_num;
|
|
|
|
}
|