nilfs2: move ioctl interface and disk layout to uapi separately
The header file "include/linux/nilfs2_fs.h" is composed of parts for ioctl and disk format, and both are intended to be shared with user space programs. This moves them to the uapi directory "include/uapi/linux" splitting the file to "nilfs2_api.h" and "nilfs2_ondisk.h". The following minor changes are accompanied by this migration: - nilfs_direct_node struct in nilfs2/direct.h is converged to nilfs2_ondisk.h because it's an on-disk structure. - inline functions nilfs_rec_len_from_disk() and nilfs_rec_len_to_disk() are moved to nilfs2/dir.c. Link: http://lkml.kernel.org/r/1465825507-3407-4-git-send-email-konishi.ryusuke@lab.ntt.co.jp Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
4ce5c3426c
commit
e63e88bc53
|
@ -267,7 +267,8 @@ among NILFS2 files can be depicted as follows:
|
||||||
`-- file (ino=yy)
|
`-- file (ino=yy)
|
||||||
( regular file, directory, or symlink )
|
( regular file, directory, or symlink )
|
||||||
|
|
||||||
For detail on the format of each file, please see include/linux/nilfs2_fs.h.
|
For detail on the format of each file, please see nilfs2_ondisk.h
|
||||||
|
located at include/uapi/linux directory.
|
||||||
|
|
||||||
There are no patents or other intellectual property that we protect
|
There are no patents or other intellectual property that we protect
|
||||||
with regard to the design of NILFS2. It is allowed to replicate the
|
with regard to the design of NILFS2. It is allowed to replicate the
|
||||||
|
|
|
@ -248,7 +248,7 @@ Code Seq#(hex) Include File Comments
|
||||||
'm' 00 drivers/scsi/megaraid/megaraid_ioctl.h conflict!
|
'm' 00 drivers/scsi/megaraid/megaraid_ioctl.h conflict!
|
||||||
'm' 00-1F net/irda/irmod.h conflict!
|
'm' 00-1F net/irda/irmod.h conflict!
|
||||||
'n' 00-7F linux/ncp_fs.h and fs/ncpfs/ioctl.c
|
'n' 00-7F linux/ncp_fs.h and fs/ncpfs/ioctl.c
|
||||||
'n' 80-8F linux/nilfs2_fs.h NILFS2
|
'n' 80-8F uapi/linux/nilfs2_api.h NILFS2
|
||||||
'n' E0-FF linux/matroxfb.h matroxfb
|
'n' E0-FF linux/matroxfb.h matroxfb
|
||||||
'o' 00-1F fs/ocfs2/ocfs2_fs.h OCFS2
|
'o' 00-1F fs/ocfs2/ocfs2_fs.h OCFS2
|
||||||
'o' 00-03 mtd/ubi-user.h conflict! (OCFS2 and UBI overlaps)
|
'o' 00-03 mtd/ubi-user.h conflict! (OCFS2 and UBI overlaps)
|
||||||
|
|
|
@ -8258,8 +8258,9 @@ T: git git://github.com/konis/nilfs2.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/filesystems/nilfs2.txt
|
F: Documentation/filesystems/nilfs2.txt
|
||||||
F: fs/nilfs2/
|
F: fs/nilfs2/
|
||||||
F: include/linux/nilfs2_fs.h
|
|
||||||
F: include/trace/events/nilfs2.h
|
F: include/trace/events/nilfs2.h
|
||||||
|
F: include/uapi/linux/nilfs2_api.h
|
||||||
|
F: include/uapi/linux/nilfs2_ondisk.h
|
||||||
|
|
||||||
NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
|
NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
|
||||||
M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
|
M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
#include <linux/nilfs2_ondisk.h> /* nilfs_binfo, nilfs_inode, etc */
|
||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "dat.h"
|
#include "dat.h"
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
#include <linux/nilfs2_ondisk.h> /* nilfs_btree_node */
|
||||||
#include "btnode.h"
|
#include "btnode.h"
|
||||||
#include "bmap.h"
|
#include "bmap.h"
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "mdt.h"
|
#include "mdt.h"
|
||||||
#include "cpfile.h"
|
#include "cpfile.h"
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
|
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
#include <linux/nilfs2_api.h> /* nilfs_cpstat */
|
||||||
|
#include <linux/nilfs2_ondisk.h> /* nilfs_inode, nilfs_checkpoint */
|
||||||
|
|
||||||
|
|
||||||
int nilfs_cpfile_get_checkpoint(struct inode *, __u64, int,
|
int nilfs_cpfile_get_checkpoint(struct inode *, __u64, int,
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
|
#include <linux/nilfs2_ondisk.h> /* nilfs_inode, nilfs_checkpoint */
|
||||||
|
|
||||||
|
|
||||||
struct nilfs_palloc_req;
|
struct nilfs_palloc_req;
|
||||||
|
|
|
@ -42,6 +42,28 @@
|
||||||
#include "nilfs.h"
|
#include "nilfs.h"
|
||||||
#include "page.h"
|
#include "page.h"
|
||||||
|
|
||||||
|
static inline unsigned int nilfs_rec_len_from_disk(__le16 dlen)
|
||||||
|
{
|
||||||
|
unsigned int len = le16_to_cpu(dlen);
|
||||||
|
|
||||||
|
#if (PAGE_SIZE >= 65536)
|
||||||
|
if (len == NILFS_MAX_REC_LEN)
|
||||||
|
return 1 << 16;
|
||||||
|
#endif
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline __le16 nilfs_rec_len_to_disk(unsigned int len)
|
||||||
|
{
|
||||||
|
#if (PAGE_SIZE >= 65536)
|
||||||
|
if (len == (1 << 16))
|
||||||
|
return cpu_to_le16(NILFS_MAX_REC_LEN);
|
||||||
|
|
||||||
|
BUG_ON(len > (1 << 16));
|
||||||
|
#endif
|
||||||
|
return cpu_to_le16(len);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nilfs uses block-sized chunks. Arguably, sector-sized ones would be
|
* nilfs uses block-sized chunks. Arguably, sector-sized ones would be
|
||||||
* more robust, but we have what we have
|
* more robust, but we have what we have
|
||||||
|
|
|
@ -24,16 +24,6 @@
|
||||||
#include "bmap.h"
|
#include "bmap.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* struct nilfs_direct_node - direct node
|
|
||||||
* @dn_flags: flags
|
|
||||||
* @dn_pad: padding
|
|
||||||
*/
|
|
||||||
struct nilfs_direct_node {
|
|
||||||
__u8 dn_flags;
|
|
||||||
__u8 pad[7];
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NILFS_DIRECT_NBLOCKS (NILFS_BMAP_SIZE / sizeof(__le64) - 1)
|
#define NILFS_DIRECT_NBLOCKS (NILFS_BMAP_SIZE / sizeof(__le64) - 1)
|
||||||
#define NILFS_DIRECT_KEY_MIN 0
|
#define NILFS_DIRECT_KEY_MIN 0
|
||||||
#define NILFS_DIRECT_KEY_MAX (NILFS_DIRECT_NBLOCKS - 1)
|
#define NILFS_DIRECT_KEY_MAX (NILFS_DIRECT_NBLOCKS - 1)
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "mdt.h"
|
#include "mdt.h"
|
||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include <linux/compat.h> /* compat_ptr() */
|
#include <linux/compat.h> /* compat_ptr() */
|
||||||
#include <linux/mount.h> /* mnt_want_write_file(), mnt_drop_write_file() */
|
#include <linux/mount.h> /* mnt_want_write_file(), mnt_drop_write_file() */
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "nilfs.h"
|
#include "nilfs.h"
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "bmap.h"
|
#include "bmap.h"
|
||||||
|
|
|
@ -23,7 +23,8 @@
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/blkdev.h>
|
#include <linux/blkdev.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
#include <linux/nilfs2_api.h>
|
||||||
|
#include <linux/nilfs2_ondisk.h>
|
||||||
#include "the_nilfs.h"
|
#include "the_nilfs.h"
|
||||||
#include "bmap.h"
|
#include "bmap.h"
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "nilfs.h"
|
#include "nilfs.h"
|
||||||
|
|
||||||
struct nilfs_root;
|
struct nilfs_root;
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "mdt.h"
|
#include "mdt.h"
|
||||||
#include "sufile.h"
|
#include "sufile.h"
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/nilfs2_fs.h>
|
|
||||||
#include "mdt.h"
|
#include "mdt.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,292 @@
|
||||||
|
/*
|
||||||
|
* 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 & (1UL << 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 & (1UL << 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 |= 1UL << NILFS_SUINFO_UPDATE_##flag; \
|
||||||
|
} \
|
||||||
|
static inline void \
|
||||||
|
nilfs_suinfo_update_clear_##name(struct nilfs_suinfo_update *sup) \
|
||||||
|
{ \
|
||||||
|
sup->sup_flags &= ~(1UL << NILFS_SUINFO_UPDATE_##flag); \
|
||||||
|
} \
|
||||||
|
static inline int \
|
||||||
|
nilfs_suinfo_update_##name(const struct nilfs_suinfo_update *sup) \
|
||||||
|
{ \
|
||||||
|
return !!(sup->sup_flags & (1UL << 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, 0x80, struct nilfs_cpmode)
|
||||||
|
#define NILFS_IOCTL_DELETE_CHECKPOINT \
|
||||||
|
_IOW(NILFS_IOCTL_IDENT, 0x81, __u64)
|
||||||
|
#define NILFS_IOCTL_GET_CPINFO \
|
||||||
|
_IOR(NILFS_IOCTL_IDENT, 0x82, struct nilfs_argv)
|
||||||
|
#define NILFS_IOCTL_GET_CPSTAT \
|
||||||
|
_IOR(NILFS_IOCTL_IDENT, 0x83, struct nilfs_cpstat)
|
||||||
|
#define NILFS_IOCTL_GET_SUINFO \
|
||||||
|
_IOR(NILFS_IOCTL_IDENT, 0x84, struct nilfs_argv)
|
||||||
|
#define NILFS_IOCTL_GET_SUSTAT \
|
||||||
|
_IOR(NILFS_IOCTL_IDENT, 0x85, struct nilfs_sustat)
|
||||||
|
#define NILFS_IOCTL_GET_VINFO \
|
||||||
|
_IOWR(NILFS_IOCTL_IDENT, 0x86, struct nilfs_argv)
|
||||||
|
#define NILFS_IOCTL_GET_BDESCS \
|
||||||
|
_IOWR(NILFS_IOCTL_IDENT, 0x87, struct nilfs_argv)
|
||||||
|
#define NILFS_IOCTL_CLEAN_SEGMENTS \
|
||||||
|
_IOW(NILFS_IOCTL_IDENT, 0x88, struct nilfs_argv[5])
|
||||||
|
#define NILFS_IOCTL_SYNC \
|
||||||
|
_IOR(NILFS_IOCTL_IDENT, 0x8A, __u64)
|
||||||
|
#define NILFS_IOCTL_RESIZE \
|
||||||
|
_IOW(NILFS_IOCTL_IDENT, 0x8B, __u64)
|
||||||
|
#define NILFS_IOCTL_SET_ALLOC_RANGE \
|
||||||
|
_IOW(NILFS_IOCTL_IDENT, 0x8C, __u64[2])
|
||||||
|
#define NILFS_IOCTL_SET_SUINFO \
|
||||||
|
_IOW(NILFS_IOCTL_IDENT, 0x8D, struct nilfs_argv)
|
||||||
|
|
||||||
|
#endif /* _LINUX_NILFS2_API_H */
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* nilfs2_fs.h - NILFS2 on-disk structures and common declarations.
|
* nilfs2_ondisk.h - NILFS2 on-disk structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation.
|
* Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation.
|
||||||
*
|
*
|
||||||
|
@ -7,13 +7,6 @@
|
||||||
* it under the terms of the GNU Lesser General Public License as published
|
* 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
|
* by the Free Software Foundation; either version 2.1 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
|
||||||
* 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 Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* Written by Koji Sato and Ryusuke Konishi.
|
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* linux/include/linux/ext2_fs.h
|
* linux/include/linux/ext2_fs.h
|
||||||
|
@ -30,16 +23,15 @@
|
||||||
* Copyright (C) 1991, 1992 Linus Torvalds
|
* Copyright (C) 1991, 1992 Linus Torvalds
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LINUX_NILFS_FS_H
|
#ifndef _LINUX_NILFS2_ONDISK_H
|
||||||
#define _LINUX_NILFS_FS_H
|
#define _LINUX_NILFS2_ONDISK_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/ioctl.h>
|
|
||||||
#include <linux/magic.h>
|
#include <linux/magic.h>
|
||||||
#include <linux/bug.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define NILFS_INODE_BMAP_SIZE 7
|
#define NILFS_INODE_BMAP_SIZE 7
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_inode - structure of an inode on disk
|
* struct nilfs_inode - structure of an inode on disk
|
||||||
* @i_blocks: blocks count
|
* @i_blocks: blocks count
|
||||||
|
@ -338,29 +330,7 @@ enum {
|
||||||
#define NILFS_DIR_ROUND (NILFS_DIR_PAD - 1)
|
#define NILFS_DIR_ROUND (NILFS_DIR_PAD - 1)
|
||||||
#define NILFS_DIR_REC_LEN(name_len) (((name_len) + 12 + NILFS_DIR_ROUND) & \
|
#define NILFS_DIR_REC_LEN(name_len) (((name_len) + 12 + NILFS_DIR_ROUND) & \
|
||||||
~NILFS_DIR_ROUND)
|
~NILFS_DIR_ROUND)
|
||||||
#define NILFS_MAX_REC_LEN ((1<<16)-1)
|
#define NILFS_MAX_REC_LEN ((1 << 16) - 1)
|
||||||
|
|
||||||
static inline unsigned int nilfs_rec_len_from_disk(__le16 dlen)
|
|
||||||
{
|
|
||||||
unsigned int len = le16_to_cpu(dlen);
|
|
||||||
|
|
||||||
#if !defined(__KERNEL__) || (PAGE_SIZE >= 65536)
|
|
||||||
if (len == NILFS_MAX_REC_LEN)
|
|
||||||
return 1 << 16;
|
|
||||||
#endif
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline __le16 nilfs_rec_len_to_disk(unsigned int len)
|
|
||||||
{
|
|
||||||
#if !defined(__KERNEL__) || (PAGE_SIZE >= 65536)
|
|
||||||
if (len == (1 << 16))
|
|
||||||
return cpu_to_le16(NILFS_MAX_REC_LEN);
|
|
||||||
else if (len > (1 << 16))
|
|
||||||
BUG();
|
|
||||||
#endif
|
|
||||||
return cpu_to_le16(len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_finfo - file information
|
* struct nilfs_finfo - file information
|
||||||
|
@ -374,11 +344,10 @@ struct nilfs_finfo {
|
||||||
__le64 fi_cno;
|
__le64 fi_cno;
|
||||||
__le32 fi_nblocks;
|
__le32 fi_nblocks;
|
||||||
__le32 fi_ndatablk;
|
__le32 fi_ndatablk;
|
||||||
/* array of virtual block numbers */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_binfo_v - information for the block to which a virtual block number is assigned
|
* struct nilfs_binfo_v - information on a data block (except DAT)
|
||||||
* @bi_vblocknr: virtual block number
|
* @bi_vblocknr: virtual block number
|
||||||
* @bi_blkoff: block offset
|
* @bi_blkoff: block offset
|
||||||
*/
|
*/
|
||||||
|
@ -388,7 +357,7 @@ struct nilfs_binfo_v {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_binfo_dat - information for the block which belongs to the DAT file
|
* struct nilfs_binfo_dat - information on a DAT node block
|
||||||
* @bi_blkoff: block offset
|
* @bi_blkoff: block offset
|
||||||
* @bi_level: level
|
* @bi_level: level
|
||||||
* @bi_pad: padding
|
* @bi_pad: padding
|
||||||
|
@ -454,7 +423,7 @@ struct nilfs_segment_summary {
|
||||||
#define NILFS_SS_GC 0x0010 /* segment written for cleaner operation */
|
#define NILFS_SS_GC 0x0010 /* segment written for cleaner operation */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_btree_node - B-tree node
|
* struct nilfs_btree_node - header of B-tree node block
|
||||||
* @bn_flags: flags
|
* @bn_flags: flags
|
||||||
* @bn_level: level
|
* @bn_level: level
|
||||||
* @bn_nchildren: number of children
|
* @bn_nchildren: number of children
|
||||||
|
@ -475,6 +444,16 @@ struct nilfs_btree_node {
|
||||||
#define NILFS_BTREE_LEVEL_NODE_MIN (NILFS_BTREE_LEVEL_DATA + 1)
|
#define NILFS_BTREE_LEVEL_NODE_MIN (NILFS_BTREE_LEVEL_DATA + 1)
|
||||||
#define NILFS_BTREE_LEVEL_MAX 14 /* Max level (exclusive) */
|
#define NILFS_BTREE_LEVEL_MAX 14 /* Max level (exclusive) */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct nilfs_direct_node - header of built-in bmap array
|
||||||
|
* @dn_flags: flags
|
||||||
|
* @dn_pad: padding
|
||||||
|
*/
|
||||||
|
struct nilfs_direct_node {
|
||||||
|
__u8 dn_flags;
|
||||||
|
__u8 pad[7];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_palloc_group_desc - block group descriptor
|
* struct nilfs_palloc_group_desc - block group descriptor
|
||||||
* @pg_nfrees: number of free entries in block group
|
* @pg_nfrees: number of free entries in block group
|
||||||
|
@ -573,40 +552,6 @@ NILFS_CHECKPOINT_FNS(SNAPSHOT, snapshot)
|
||||||
NILFS_CHECKPOINT_FNS(INVALID, invalid)
|
NILFS_CHECKPOINT_FNS(INVALID, invalid)
|
||||||
NILFS_CHECKPOINT_FNS(MINOR, minor)
|
NILFS_CHECKPOINT_FNS(MINOR, minor)
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NILFS_CPINFO_FNS(flag, name) \
|
|
||||||
static inline int \
|
|
||||||
nilfs_cpinfo_##name(const struct nilfs_cpinfo *cpinfo) \
|
|
||||||
{ \
|
|
||||||
return !!(cpinfo->ci_flags & (1UL << NILFS_CHECKPOINT_##flag)); \
|
|
||||||
}
|
|
||||||
|
|
||||||
NILFS_CPINFO_FNS(SNAPSHOT, snapshot)
|
|
||||||
NILFS_CPINFO_FNS(INVALID, invalid)
|
|
||||||
NILFS_CPINFO_FNS(MINOR, minor)
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_cpfile_header - checkpoint file header
|
* struct nilfs_cpfile_header - checkpoint file header
|
||||||
* @ch_ncheckpoints: number of checkpoints
|
* @ch_ncheckpoints: number of checkpoints
|
||||||
|
@ -643,8 +588,6 @@ enum {
|
||||||
NILFS_SEGMENT_USAGE_ACTIVE,
|
NILFS_SEGMENT_USAGE_ACTIVE,
|
||||||
NILFS_SEGMENT_USAGE_DIRTY,
|
NILFS_SEGMENT_USAGE_DIRTY,
|
||||||
NILFS_SEGMENT_USAGE_ERROR,
|
NILFS_SEGMENT_USAGE_ERROR,
|
||||||
|
|
||||||
/* ... */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NILFS_SEGMENT_USAGE_FNS(flag, name) \
|
#define NILFS_SEGMENT_USAGE_FNS(flag, name) \
|
||||||
|
@ -704,231 +647,4 @@ struct nilfs_sufile_header {
|
||||||
sizeof(struct nilfs_segment_usage) - 1) / \
|
sizeof(struct nilfs_segment_usage) - 1) / \
|
||||||
sizeof(struct nilfs_segment_usage))
|
sizeof(struct nilfs_segment_usage))
|
||||||
|
|
||||||
/**
|
#endif /* _LINUX_NILFS2_ONDISK_H */
|
||||||
* 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;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NILFS_SUINFO_FNS(flag, name) \
|
|
||||||
static inline int \
|
|
||||||
nilfs_suinfo_##name(const struct nilfs_suinfo *si) \
|
|
||||||
{ \
|
|
||||||
return si->sui_flags & (1UL << NILFS_SEGMENT_USAGE_##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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ioctl */
|
|
||||||
/**
|
|
||||||
* 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 |= 1UL << NILFS_SUINFO_UPDATE_##flag; \
|
|
||||||
} \
|
|
||||||
static inline void \
|
|
||||||
nilfs_suinfo_update_clear_##name(struct nilfs_suinfo_update *sup) \
|
|
||||||
{ \
|
|
||||||
sup->sup_flags &= ~(1UL << NILFS_SUINFO_UPDATE_##flag); \
|
|
||||||
} \
|
|
||||||
static inline int \
|
|
||||||
nilfs_suinfo_update_##name(const struct nilfs_suinfo_update *sup) \
|
|
||||||
{ \
|
|
||||||
return !!(sup->sup_flags & (1UL << 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, 0x80, struct nilfs_cpmode)
|
|
||||||
#define NILFS_IOCTL_DELETE_CHECKPOINT \
|
|
||||||
_IOW(NILFS_IOCTL_IDENT, 0x81, __u64)
|
|
||||||
#define NILFS_IOCTL_GET_CPINFO \
|
|
||||||
_IOR(NILFS_IOCTL_IDENT, 0x82, struct nilfs_argv)
|
|
||||||
#define NILFS_IOCTL_GET_CPSTAT \
|
|
||||||
_IOR(NILFS_IOCTL_IDENT, 0x83, struct nilfs_cpstat)
|
|
||||||
#define NILFS_IOCTL_GET_SUINFO \
|
|
||||||
_IOR(NILFS_IOCTL_IDENT, 0x84, struct nilfs_argv)
|
|
||||||
#define NILFS_IOCTL_GET_SUSTAT \
|
|
||||||
_IOR(NILFS_IOCTL_IDENT, 0x85, struct nilfs_sustat)
|
|
||||||
#define NILFS_IOCTL_GET_VINFO \
|
|
||||||
_IOWR(NILFS_IOCTL_IDENT, 0x86, struct nilfs_argv)
|
|
||||||
#define NILFS_IOCTL_GET_BDESCS \
|
|
||||||
_IOWR(NILFS_IOCTL_IDENT, 0x87, struct nilfs_argv)
|
|
||||||
#define NILFS_IOCTL_CLEAN_SEGMENTS \
|
|
||||||
_IOW(NILFS_IOCTL_IDENT, 0x88, struct nilfs_argv[5])
|
|
||||||
#define NILFS_IOCTL_SYNC \
|
|
||||||
_IOR(NILFS_IOCTL_IDENT, 0x8A, __u64)
|
|
||||||
#define NILFS_IOCTL_RESIZE \
|
|
||||||
_IOW(NILFS_IOCTL_IDENT, 0x8B, __u64)
|
|
||||||
#define NILFS_IOCTL_SET_ALLOC_RANGE \
|
|
||||||
_IOW(NILFS_IOCTL_IDENT, 0x8C, __u64[2])
|
|
||||||
#define NILFS_IOCTL_SET_SUINFO \
|
|
||||||
_IOW(NILFS_IOCTL_IDENT, 0x8D, struct nilfs_argv)
|
|
||||||
|
|
||||||
#endif /* _LINUX_NILFS_FS_H */
|
|
Loading…
Reference in New Issue