Quelle nilfs2_api.h
Sprache: C
/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* nilfs2_api . h - NILFS2 user space API
*
* Copyright ( C ) 2005 - 2008 Nippon Telegraph and Telephone Corporation .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation ; either version 2 . 1 of the License , or
* ( at your option ) any later version .
*/
#ifndef _LINUX_NILFS2_API_H
#define _LINUX_NILFS2_API_H
#include <linux/types.h>
#include <linux/ioctl.h>
/**
* struct nilfs_cpinfo - checkpoint information
* @ ci_flags : flags
* @ ci_pad : padding
* @ ci_cno : checkpoint number
* @ ci_create : creation timestamp
* @ ci_nblk_inc : number of blocks incremented by this checkpoint
* @ ci_inodes_count : inodes count
* @ ci_blocks_count : blocks count
* @ ci_next : next checkpoint number in snapshot list
*/
struct nilfs_cpinfo {
__u32 ci_flags;
__u32 ci_pad;
__u64 ci_cno;
__u64 ci_create;
__u64 ci_nblk_inc;
__u64 ci_inodes_count;
__u64 ci_blocks_count;
__u64 ci_next;
};
/* checkpoint flags */
enum {
NILFS_CPINFO_SNAPSHOT,
NILFS_CPINFO_INVALID,
NILFS_CPINFO_SKETCH,
NILFS_CPINFO_MINOR,
};
#define NILFS_CPINFO_FNS(flag, name) \
static inline int \
nilfs_cpinfo_## name(const struct nilfs_cpinfo *cpinfo) \
{ \
return !!(cpinfo->ci_flags & (1 UL << NILFS_CPINFO_## flag)); \
}
NILFS_CPINFO_FNS(SNAPSHOT, snapshot)
NILFS_CPINFO_FNS(INVALID, invalid)
NILFS_CPINFO_FNS(MINOR, minor)
/**
* nilfs_suinfo - segment usage information
* @ sui_lastmod : timestamp of last modification
* @ sui_nblocks : number of written blocks in segment
* @ sui_flags : segment usage flags
*/
struct nilfs_suinfo {
__u64 sui_lastmod;
__u32 sui_nblocks;
__u32 sui_flags;
};
/* segment usage flags */
enum {
NILFS_SUINFO_ACTIVE,
NILFS_SUINFO_DIRTY,
NILFS_SUINFO_ERROR,
};
#define NILFS_SUINFO_FNS(flag, name) \
static inline int \
nilfs_suinfo_## name(const struct nilfs_suinfo *si) \
{ \
return si->sui_flags & (1 UL << NILFS_SUINFO_## flag); \
}
NILFS_SUINFO_FNS(ACTIVE, active)
NILFS_SUINFO_FNS(DIRTY, dirty)
NILFS_SUINFO_FNS(ERROR, error)
static inline int nilfs_suinfo_clean(const struct nilfs_suinfo *si)
{
return !si->sui_flags;
}
/**
* nilfs_suinfo_update - segment usage information update
* @ sup_segnum : segment number
* @ sup_flags : flags for which fields are active in sup_sui
* @ sup_reserved : reserved necessary for alignment
* @ sup_sui : segment usage information
*/
struct nilfs_suinfo_update {
__u64 sup_segnum;
__u32 sup_flags;
__u32 sup_reserved;
struct nilfs_suinfo sup_sui;
};
enum {
NILFS_SUINFO_UPDATE_LASTMOD,
NILFS_SUINFO_UPDATE_NBLOCKS,
NILFS_SUINFO_UPDATE_FLAGS,
__NR_NILFS_SUINFO_UPDATE_FIELDS,
};
#define NILFS_SUINFO_UPDATE_FNS(flag, name) \
static inline void \
nilfs_suinfo_update_set_## name(struct nilfs_suinfo_update *sup) \
{ \
sup->sup_flags |= 1 UL << NILFS_SUINFO_UPDATE_## flag; \
} \
static inline void \
nilfs_suinfo_update_clear_## name(struct nilfs_suinfo_update *sup) \
{ \
sup->sup_flags &= ~(1 UL << NILFS_SUINFO_UPDATE_## flag); \
} \
static inline int \
nilfs_suinfo_update_## name(const struct nilfs_suinfo_update *sup) \
{ \
return !!(sup->sup_flags & (1 UL << NILFS_SUINFO_UPDATE_## flag));\
}
NILFS_SUINFO_UPDATE_FNS(LASTMOD, lastmod)
NILFS_SUINFO_UPDATE_FNS(NBLOCKS, nblocks)
NILFS_SUINFO_UPDATE_FNS(FLAGS, flags)
enum {
NILFS_CHECKPOINT,
NILFS_SNAPSHOT,
};
/**
* struct nilfs_cpmode - change checkpoint mode structure
* @ cm_cno : checkpoint number
* @ cm_mode : mode of checkpoint
* @ cm_pad : padding
*/
struct nilfs_cpmode {
__u64 cm_cno;
__u32 cm_mode;
__u32 cm_pad;
};
/**
* struct nilfs_argv - argument vector
* @ v_base : pointer on data array from userspace
* @ v_nmembs : number of members in data array
* @ v_size : size of data array in bytes
* @ v_flags : flags
* @ v_index : start number of target data items
*/
struct nilfs_argv {
__u64 v_base;
__u32 v_nmembs; /* number of members */
__u16 v_size; /* size of members */
__u16 v_flags;
__u64 v_index;
};
/**
* struct nilfs_period - period of checkpoint numbers
* @ p_start : start checkpoint number ( inclusive )
* @ p_end : end checkpoint number ( exclusive )
*/
struct nilfs_period {
__u64 p_start;
__u64 p_end;
};
/**
* struct nilfs_cpstat - checkpoint statistics
* @ cs_cno : checkpoint number
* @ cs_ncps : number of checkpoints
* @ cs_nsss : number of snapshots
*/
struct nilfs_cpstat {
__u64 cs_cno;
__u64 cs_ncps;
__u64 cs_nsss;
};
/**
* struct nilfs_sustat - segment usage statistics
* @ ss_nsegs : number of segments
* @ ss_ncleansegs : number of clean segments
* @ ss_ndirtysegs : number of dirty segments
* @ ss_ctime : creation time of the last segment
* @ ss_nongc_ctime : creation time of the last segment not for GC
* @ ss_prot_seq : least sequence number of segments which must not be reclaimed
*/
struct nilfs_sustat {
__u64 ss_nsegs;
__u64 ss_ncleansegs;
__u64 ss_ndirtysegs;
__u64 ss_ctime;
__u64 ss_nongc_ctime;
__u64 ss_prot_seq;
};
/**
* struct nilfs_vinfo - virtual block number information
* @ vi_vblocknr : virtual block number
* @ vi_start : start checkpoint number ( inclusive )
* @ vi_end : end checkpoint number ( exclusive )
* @ vi_blocknr : disk block number
*/
struct nilfs_vinfo {
__u64 vi_vblocknr;
__u64 vi_start;
__u64 vi_end;
__u64 vi_blocknr;
};
/**
* struct nilfs_vdesc - descriptor of virtual block number
* @ vd_ino : inode number
* @ vd_cno : checkpoint number
* @ vd_vblocknr : virtual block number
* @ vd_period : period of checkpoint numbers
* @ vd_blocknr : disk block number
* @ vd_offset : logical block offset inside a file
* @ vd_flags : flags ( data or node block )
* @ vd_pad : padding
*/
struct nilfs_vdesc {
__u64 vd_ino;
__u64 vd_cno;
__u64 vd_vblocknr;
struct nilfs_period vd_period;
__u64 vd_blocknr;
__u64 vd_offset;
__u32 vd_flags;
__u32 vd_pad;
};
/**
* struct nilfs_bdesc - descriptor of disk block number
* @ bd_ino : inode number
* @ bd_oblocknr : disk block address ( for skipping dead blocks )
* @ bd_blocknr : disk block address
* @ bd_offset : logical block offset inside a file
* @ bd_level : level in the b - tree organization
* @ bd_pad : padding
*/
struct nilfs_bdesc {
__u64 bd_ino;
__u64 bd_oblocknr;
__u64 bd_blocknr;
__u64 bd_offset;
__u32 bd_level;
__u32 bd_pad;
};
#define NILFS_IOCTL_IDENT 'n'
#define NILFS_IOCTL_CHANGE_CPMODE \
_IOW(NILFS_IOCTL_IDENT, 0 x80, struct nilfs_cpmode)
#define NILFS_IOCTL_DELETE_CHECKPOINT \
_IOW(NILFS_IOCTL_IDENT, 0 x81, __u64)
#define NILFS_IOCTL_GET_CPINFO \
_IOR(NILFS_IOCTL_IDENT, 0 x82, struct nilfs_argv)
#define NILFS_IOCTL_GET_CPSTAT \
_IOR(NILFS_IOCTL_IDENT, 0 x83, struct nilfs_cpstat)
#define NILFS_IOCTL_GET_SUINFO \
_IOR(NILFS_IOCTL_IDENT, 0 x84, struct nilfs_argv)
#define NILFS_IOCTL_GET_SUSTAT \
_IOR(NILFS_IOCTL_IDENT, 0 x85, struct nilfs_sustat)
#define NILFS_IOCTL_GET_VINFO \
_IOWR(NILFS_IOCTL_IDENT, 0 x86, struct nilfs_argv)
#define NILFS_IOCTL_GET_BDESCS \
_IOWR(NILFS_IOCTL_IDENT, 0 x87, struct nilfs_argv)
#define NILFS_IOCTL_CLEAN_SEGMENTS \
_IOW(NILFS_IOCTL_IDENT, 0 x88, struct nilfs_argv[5 ])
#define NILFS_IOCTL_SYNC \
_IOR(NILFS_IOCTL_IDENT, 0 x8A, __u64)
#define NILFS_IOCTL_RESIZE \
_IOW(NILFS_IOCTL_IDENT, 0 x8B, __u64)
#define NILFS_IOCTL_SET_ALLOC_RANGE \
_IOW(NILFS_IOCTL_IDENT, 0 x8C, __u64[2 ])
#define NILFS_IOCTL_SET_SUINFO \
_IOW(NILFS_IOCTL_IDENT, 0 x8D, struct nilfs_argv)
#endif /* _LINUX_NILFS2_API_H */
Messung V0.5 in Prozent C=95 H=100 G=97
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland
2026-10-10
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126438
#Domains=1897691