3742 zfs comments need cleaner, more consistent style
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Approved by: Christopher Siden <christopher.siden@delphix.com>

References:
  https://www.illumos.org/issues/3742
  illumos/illumos-gate@f717074149

Ported-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1775

Porting notes:

1. The change to zfs_vfsops.c was dropped because it involves
   zfs_mount_label_policy, which does not exist in the Linux port.
This commit is contained in:
Will Andrews 2013-06-11 09:12:34 -08:00 committed by Brian Behlendorf
parent e49f1e20a0
commit d3cc8b152e
37 changed files with 183 additions and 202 deletions

View File

@ -63,16 +63,15 @@ enum ddt_class {
*/ */
typedef struct ddt_key { typedef struct ddt_key {
zio_cksum_t ddk_cksum; /* 256-bit block checksum */ zio_cksum_t ddk_cksum; /* 256-bit block checksum */
uint64_t ddk_prop; /* LSIZE, PSIZE, compression */ /*
* Encoded with logical & physical size, and compression, as follows:
* +-------+-------+-------+-------+-------+-------+-------+-------+
* | 0 | 0 | 0 | comp | PSIZE | LSIZE |
* +-------+-------+-------+-------+-------+-------+-------+-------+
*/
uint64_t ddk_prop;
} ddt_key_t; } ddt_key_t;
/*
* ddk_prop layout:
*
* +-------+-------+-------+-------+-------+-------+-------+-------+
* | 0 | 0 | 0 | comp | PSIZE | LSIZE |
* +-------+-------+-------+-------+-------+-------+-------+-------+
*/
#define DDK_GET_LSIZE(ddk) \ #define DDK_GET_LSIZE(ddk) \
BF64_GET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1) BF64_GET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1)
#define DDK_SET_LSIZE(ddk, x) \ #define DDK_SET_LSIZE(ddk, x) \

View File

@ -145,9 +145,8 @@ typedef struct dnode_phys {
typedef struct dnode { typedef struct dnode {
/* /*
* dn_struct_rwlock protects the structure of the dnode, * Protects the structure of the dnode, including the number of levels
* including the number of levels of indirection (dn_nlevels), * of indirection (dn_nlevels), dn_maxblkid, and dn_next_*
* dn_maxblkid, and dn_next_*
*/ */
krwlock_t dn_struct_rwlock; krwlock_t dn_struct_rwlock;

View File

@ -112,6 +112,7 @@ typedef struct dsl_pool {
/* /*
* Protects administrative changes (properties, namespace) * Protects administrative changes (properties, namespace)
*
* It is only held for write in syncing context. Therefore * It is only held for write in syncing context. Therefore
* syncing context does not need to ever have it for read, since * syncing context does not need to ever have it for read, since
* nobody else could possibly have it for write. * nobody else could possibly have it for write.

View File

@ -150,6 +150,7 @@ struct sa_os {
/* /*
* header for all bonus and spill buffers. * header for all bonus and spill buffers.
*
* The header has a fixed portion with a variable number * The header has a fixed portion with a variable number
* of "lengths" depending on the number of variable sized * of "lengths" depending on the number of variable sized
* attribues which are determined by the "layout number" * attribues which are determined by the "layout number"
@ -158,29 +159,27 @@ struct sa_os {
#define SA_MAGIC 0x2F505A /* ZFS SA */ #define SA_MAGIC 0x2F505A /* ZFS SA */
typedef struct sa_hdr_phys { typedef struct sa_hdr_phys {
uint32_t sa_magic; uint32_t sa_magic;
uint16_t sa_layout_info; /* Encoded with hdrsize and layout number */ /*
* Encoded with hdrsize and layout number as follows:
* 16 10 0
* +--------+-------+
* | hdrsz |layout |
* +--------+-------+
*
* Bits 0-10 are the layout number
* Bits 11-16 are the size of the header.
* The hdrsize is the number * 8
*
* For example.
* hdrsz of 1 ==> 8 byte header
* 2 ==> 16 byte header
*
*/
uint16_t sa_layout_info;
uint16_t sa_lengths[1]; /* optional sizes for variable length attrs */ uint16_t sa_lengths[1]; /* optional sizes for variable length attrs */
/* ... Data follows the lengths. */ /* ... Data follows the lengths. */
} sa_hdr_phys_t; } sa_hdr_phys_t;
/*
* sa_hdr_phys -> sa_layout_info
*
* 16 10 0
* +--------+-------+
* | hdrsz |layout |
* +--------+-------+
*
* Bits 0-10 are the layout number
* Bits 11-16 are the size of the header.
* The hdrsize is the number * 8
*
* For example.
* hdrsz of 1 ==> 8 byte header
* 2 ==> 16 byte header
*
*/
#define SA_HDR_LAYOUT_NUM(hdr) BF32_GET(hdr->sa_layout_info, 0, 10) #define SA_HDR_LAYOUT_NUM(hdr) BF32_GET(hdr->sa_layout_info, 0, 10)
#define SA_HDR_SIZE(hdr) BF32_GET_SB(hdr->sa_layout_info, 10, 6, 3, 0) #define SA_HDR_SIZE(hdr) BF32_GET_SB(hdr->sa_layout_info, 10, 6, 3, 0)
#define SA_HDR_LAYOUT_INFO_ENCODE(x, num, size) \ #define SA_HDR_LAYOUT_INFO_ENCODE(x, num, size) \

View File

@ -239,7 +239,7 @@ struct spa {
spa_stats_t spa_stats; /* assorted spa statistics */ spa_stats_t spa_stats; /* assorted spa statistics */
/* /*
* spa_refcnt & spa_config_lock must be the last elements * spa_refcount & spa_config_lock must be the last elements
* because refcount_t changes size based on compilation options. * because refcount_t changes size based on compilation options.
* In order for the MDB module to function correctly, the other * In order for the MDB module to function correctly, the other
* fields must remain in the same location. * fields must remain in the same location.

View File

@ -94,7 +94,6 @@ struct space_map_ops {
* 63 62 60 59 50 49 0 * 63 62 60 59 50 49 0
* *
* *
*
* non-debug entry * non-debug entry
* *
* 1 47 1 15 * 1 47 1 15

View File

@ -26,8 +26,6 @@
#ifndef _SYS_UNIQUE_H #ifndef _SYS_UNIQUE_H
#define _SYS_UNIQUE_H #define _SYS_UNIQUE_H
#include <sys/zfs_context.h> #include <sys/zfs_context.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -42,7 +40,7 @@ void unique_fini(void);
/* /*
* Return a new unique value (which will not be uniquified against until * Return a new unique value (which will not be uniquified against until
* it is unique_insert()-ed. * it is unique_insert()-ed).
*/ */
uint64_t unique_create(void); uint64_t unique_create(void);

View File

@ -254,12 +254,13 @@ typedef struct vdev_label {
#define VDD_METASLAB 0x01 #define VDD_METASLAB 0x01
#define VDD_DTL 0x02 #define VDD_DTL 0x02
/* Offset of embedded boot loader region on each label */
#define VDEV_BOOT_OFFSET (2 * sizeof (vdev_label_t))
/* /*
* Size and offset of embedded boot loader region on each label. * Size of embedded boot loader region on each label.
* The total size of the first two labels plus the boot area is 4MB. * The total size of the first two labels plus the boot area is 4MB.
*/ */
#define VDEV_BOOT_OFFSET (2 * sizeof (vdev_label_t)) #define VDEV_BOOT_SIZE (7ULL << 19) /* 3.5M */
#define VDEV_BOOT_SIZE (7ULL << 19) /* 3.5M */
/* /*
* Size of label regions at the start and end of each leaf device. * Size of label regions at the start and end of each leaf device.
@ -326,8 +327,9 @@ extern uint64_t vdev_get_min_asize(vdev_t *vd);
extern void vdev_set_min_asize(vdev_t *vd); extern void vdev_set_min_asize(vdev_t *vd);
/* /*
* zdb uses this tunable, so it must be declared here to make lint happy. * Global variables
*/ */
/* zdb uses this tunable, so it must be declared here to make lint happy. */
extern int zfs_vdev_cache_size; extern int zfs_vdev_cache_size;
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -86,18 +86,22 @@ extern "C" {
#endif #endif
/* /*
* The matchtype specifies which entry will be accessed. * Specifies matching criteria for ZAP lookups.
* MT_EXACT: only find an exact match (non-normalized)
* MT_FIRST: find the "first" normalized (case and Unicode
* form) match; the designated "first" match will not change as long
* as the set of entries with this normalization doesn't change
* MT_BEST: if there is an exact match, find that, otherwise find the
* first normalized match
*/ */
typedef enum matchtype typedef enum matchtype
{ {
/* Only find an exact match (non-normalized) */
MT_EXACT, MT_EXACT,
/*
* If there is an exact match, find that, otherwise find the
* first normalized match.
*/
MT_BEST, MT_BEST,
/*
* Find the "first" normalized (case and Unicode form) match;
* the designated "first" match will not change as long as the
* set of entries with this normalization doesn't change.
*/
MT_FIRST MT_FIRST
} matchtype_t; } matchtype_t;
@ -174,16 +178,21 @@ int zap_destroy(objset_t *ds, uint64_t zapobj, dmu_tx_t *tx);
* call will fail and return EINVAL. * call will fail and return EINVAL.
* *
* If 'integer_size' is equal to or larger than the attribute's integer * If 'integer_size' is equal to or larger than the attribute's integer
* size, the call will succeed and return 0. * When converting to a * size, the call will succeed and return 0.
* larger integer size, the integers will be treated as unsigned (ie. no *
* sign-extension will be performed). * When converting to a larger integer size, the integers will be treated as
* unsigned (ie. no sign-extension will be performed).
* *
* 'num_integers' is the length (in integers) of 'buf'. * 'num_integers' is the length (in integers) of 'buf'.
* *
* If the attribute is longer than the buffer, as many integers as will * If the attribute is longer than the buffer, as many integers as will
* fit will be transferred to 'buf'. If the entire attribute was not * fit will be transferred to 'buf'. If the entire attribute was not
* transferred, the call will return EOVERFLOW. * transferred, the call will return EOVERFLOW.
* */
int zap_lookup(objset_t *ds, uint64_t zapobj, const char *name,
uint64_t integer_size, uint64_t num_integers, void *buf);
/*
* If rn_len is nonzero, realname will be set to the name of the found * If rn_len is nonzero, realname will be set to the name of the found
* entry (which may be different from the requested name if matchtype is * entry (which may be different from the requested name if matchtype is
* not MT_EXACT). * not MT_EXACT).
@ -191,8 +200,6 @@ int zap_destroy(objset_t *ds, uint64_t zapobj, dmu_tx_t *tx);
* If normalization_conflictp is not NULL, it will be set if there is * If normalization_conflictp is not NULL, it will be set if there is
* another name with the same case/unicode normalized form. * another name with the same case/unicode normalized form.
*/ */
int zap_lookup(objset_t *ds, uint64_t zapobj, const char *name,
uint64_t integer_size, uint64_t num_integers, void *buf);
int zap_lookup_norm(objset_t *ds, uint64_t zapobj, const char *name, int zap_lookup_norm(objset_t *ds, uint64_t zapobj, const char *name,
uint64_t integer_size, uint64_t num_integers, void *buf, uint64_t integer_size, uint64_t num_integers, void *buf,
matchtype_t mt, char *realname, int rn_len, matchtype_t mt, char *realname, int rn_len,

View File

@ -101,6 +101,7 @@ typedef enum zap_chunk_type {
*/ */
typedef struct zap_leaf_phys { typedef struct zap_leaf_phys {
struct zap_leaf_header { struct zap_leaf_header {
/* Public to ZAP */
uint64_t lh_block_type; /* ZBT_LEAF */ uint64_t lh_block_type; /* ZBT_LEAF */
uint64_t lh_pad1; uint64_t lh_pad1;
uint64_t lh_prefix; /* hash prefix of this leaf */ uint64_t lh_prefix; /* hash prefix of this leaf */
@ -109,8 +110,7 @@ typedef struct zap_leaf_phys {
uint16_t lh_nentries; /* number of entries */ uint16_t lh_nentries; /* number of entries */
uint16_t lh_prefix_len; /* num bits used to id this */ uint16_t lh_prefix_len; /* num bits used to id this */
/* above is accessable to zap, below is zap_leaf private */ /* Private to zap_leaf */
uint16_t lh_freelist; /* chunk head of free list */ uint16_t lh_freelist; /* chunk head of free list */
uint8_t lh_flags; /* ZLF_* flags */ uint8_t lh_flags; /* ZLF_* flags */
uint8_t lh_pad2[11]; uint8_t lh_pad2[11];
@ -161,13 +161,13 @@ typedef struct zap_leaf {
typedef struct zap_entry_handle { typedef struct zap_entry_handle {
/* below is set by zap_leaf.c and is public to zap.c */ /* Set by zap_leaf and public to ZAP */
uint64_t zeh_num_integers; uint64_t zeh_num_integers;
uint64_t zeh_hash; uint64_t zeh_hash;
uint32_t zeh_cd; uint32_t zeh_cd;
uint8_t zeh_integer_size; uint8_t zeh_integer_size;
/* below is private to zap_leaf.c */ /* Private to zap_leaf */
uint16_t zeh_fakechunk; uint16_t zeh_fakechunk;
uint16_t *zeh_chunkp; uint16_t *zeh_chunkp;
zap_leaf_t *zeh_leaf; zap_leaf_t *zeh_leaf;
@ -202,7 +202,7 @@ extern int zap_entry_read_name(struct zap *zap, const zap_entry_handle_t *zeh,
/* /*
* Replace the value of an existing entry. * Replace the value of an existing entry.
* *
* zap_entry_update may fail if it runs out of space (ENOSPC). * May fail if it runs out of space (ENOSPC).
*/ */
extern int zap_entry_update(zap_entry_handle_t *zeh, extern int zap_entry_update(zap_entry_handle_t *zeh,
uint8_t integer_size, uint64_t num_integers, const void *buf); uint8_t integer_size, uint64_t num_integers, const void *buf);
@ -221,10 +221,7 @@ extern int zap_entry_create(zap_leaf_t *l, struct zap_name *zn, uint32_t cd,
uint8_t integer_size, uint64_t num_integers, const void *buf, uint8_t integer_size, uint64_t num_integers, const void *buf,
zap_entry_handle_t *zeh); zap_entry_handle_t *zeh);
/* /* Determine whether there is another entry with the same normalized form. */
* Return true if there are additional entries with the same normalized
* form.
*/
extern boolean_t zap_entry_normalization_conflict(zap_entry_handle_t *zeh, extern boolean_t zap_entry_normalization_conflict(zap_entry_handle_t *zeh,
struct zap_name *zn, const char *name, struct zap *zap); struct zap_name *zn, const char *name, struct zap *zap);

View File

@ -47,7 +47,8 @@ struct znode_phys;
#define ZFS_ACL_VERSION ZFS_ACL_VERSION_FUID #define ZFS_ACL_VERSION ZFS_ACL_VERSION_FUID
/* /*
* ZFS ACLs are store in various forms. * ZFS ACLs (Access Control Lists) are stored in various forms.
*
* Files created with ACL version ZFS_ACL_VERSION_INITIAL * Files created with ACL version ZFS_ACL_VERSION_INITIAL
* will all be created with fixed length ACEs of type * will all be created with fixed length ACEs of type
* zfs_oldace_t. * zfs_oldace_t.
@ -137,8 +138,8 @@ typedef struct acl_ops {
size_t (*ace_size)(void *acep); /* how big is this ace */ size_t (*ace_size)(void *acep); /* how big is this ace */
size_t (*ace_abstract_size)(void); /* sizeof abstract entry */ size_t (*ace_abstract_size)(void); /* sizeof abstract entry */
int (*ace_mask_off)(void); /* off of access mask in ace */ int (*ace_mask_off)(void); /* off of access mask in ace */
/* ptr to data if any */
int (*ace_data)(void *acep, void **datap); int (*ace_data)(void *acep, void **datap);
/* ptr to data if any */
} acl_ops_t; } acl_ops_t;
/* /*

View File

@ -26,8 +26,6 @@
#ifndef _SYS_FS_ZFS_RLOCK_H #ifndef _SYS_FS_ZFS_RLOCK_H
#define _SYS_FS_ZFS_RLOCK_H #define _SYS_FS_ZFS_RLOCK_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -58,16 +56,14 @@ typedef struct rl {
} rl_t; } rl_t;
/* /*
* Lock a range (offset, length) as either shared (READER) * Lock a range (offset, length) as either shared (RL_READER)
* or exclusive (WRITER or APPEND). APPEND is a special type that * or exclusive (RL_WRITER or RL_APPEND). RL_APPEND is a special type that
* is converted to WRITER that specified to lock from the start of the * is converted to RL_WRITER that specified to lock from the start of the
* end of file. zfs_range_lock() returns the range lock structure. * end of file. Returns the range lock structure.
*/ */
rl_t *zfs_range_lock(znode_t *zp, uint64_t off, uint64_t len, rl_type_t type); rl_t *zfs_range_lock(znode_t *zp, uint64_t off, uint64_t len, rl_type_t type);
/* /* Unlock range and destroy range lock structure. */
* Unlock range and destroy range lock structure.
*/
void zfs_range_unlock(rl_t *rl); void zfs_range_unlock(rl_t *rl);
/* /*
@ -77,7 +73,8 @@ void zfs_range_unlock(rl_t *rl);
void zfs_range_reduce(rl_t *rl, uint64_t off, uint64_t len); void zfs_range_reduce(rl_t *rl, uint64_t off, uint64_t len);
/* /*
* AVL comparison function used to compare range locks * AVL comparison function used to order range locks
* Locks are ordered on the start offset of the range.
*/ */
int zfs_range_compare(const void *arg1, const void *arg2); int zfs_range_compare(const void *arg1, const void *arg2);

View File

@ -139,8 +139,9 @@ extern "C" {
#define ZFS_MAX_BLOCKSIZE (SPA_MAXBLOCKSIZE) #define ZFS_MAX_BLOCKSIZE (SPA_MAXBLOCKSIZE)
/* Path component length */
/* /*
* Path component length
*
* The generic fs code uses MAXNAMELEN to represent * The generic fs code uses MAXNAMELEN to represent
* what the largest component length is. Unfortunately, * what the largest component length is. Unfortunately,
* this length includes the terminating NULL. ZFS needs * this length includes the terminating NULL. ZFS needs
@ -248,11 +249,7 @@ typedef struct znode {
#define S_ISDEV(mode) (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode)) #define S_ISDEV(mode) (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode))
/* /* Called on entry to each ZFS vnode and vfs operation */
* ZFS_ENTER() is called on entry to each ZFS inode and vfs operation.
* ZFS_EXIT() must be called before exitting the vop.
* ZFS_VERIFY_ZP() verifies the znode is valid.
*/
#define ZFS_ENTER(zsb) \ #define ZFS_ENTER(zsb) \
{ \ { \
rrw_enter_read(&(zsb)->z_teardown_lock, FTAG); \ rrw_enter_read(&(zsb)->z_teardown_lock, FTAG); \
@ -262,12 +259,14 @@ typedef struct znode {
} \ } \
} }
/* Must be called before exiting the vop */
#define ZFS_EXIT(zsb) \ #define ZFS_EXIT(zsb) \
{ \ { \
rrw_exit(&(zsb)->z_teardown_lock, FTAG); \ rrw_exit(&(zsb)->z_teardown_lock, FTAG); \
tsd_exit(); \ tsd_exit(); \
} }
/* Verifies the znode is valid */
#define ZFS_VERIFY_ZP(zp) \ #define ZFS_VERIFY_ZP(zp) \
if ((zp)->z_sa_hdl == NULL) { \ if ((zp)->z_sa_hdl == NULL) { \
ZFS_EXIT(ZTOZSB(zp)); \ ZFS_EXIT(ZTOZSB(zp)); \
@ -289,15 +288,14 @@ typedef struct znode {
#define ZFS_OBJ_HOLD_OWNED(zsb, obj_num) \ #define ZFS_OBJ_HOLD_OWNED(zsb, obj_num) \
mutex_owned(ZFS_OBJ_MUTEX((zsb), (obj_num))) mutex_owned(ZFS_OBJ_MUTEX((zsb), (obj_num)))
/* /* Encode ZFS stored time values from a struct timespec */
* Macros to encode/decode ZFS stored time values from/to struct timespec
*/
#define ZFS_TIME_ENCODE(tp, stmp) \ #define ZFS_TIME_ENCODE(tp, stmp) \
{ \ { \
(stmp)[0] = (uint64_t)(tp)->tv_sec; \ (stmp)[0] = (uint64_t)(tp)->tv_sec; \
(stmp)[1] = (uint64_t)(tp)->tv_nsec; \ (stmp)[1] = (uint64_t)(tp)->tv_nsec; \
} }
/* Decode ZFS stored time values to a struct timespec */
#define ZFS_TIME_DECODE(tp, stmp) \ #define ZFS_TIME_DECODE(tp, stmp) \
{ \ { \
(tp)->tv_sec = (time_t)(stmp)[0]; \ (tp)->tv_sec = (time_t)(stmp)[0]; \

View File

@ -242,6 +242,12 @@ typedef struct {
* information needed for replaying the create. If the * information needed for replaying the create. If the
* file doesn't have any actual ACEs then the lr_aclcnt * file doesn't have any actual ACEs then the lr_aclcnt
* would be zero. * would be zero.
*
* After lr_acl_flags, there are a lr_acl_bytes number of variable sized ace's.
* If create is also setting xvattr's, then acl data follows xvattr.
* If ACE FUIDs are needed then they will follow the xvattr_t. Following
* the FUIDs will be the domain table information. The FUIDs for the owner
* and group will be in lr_create. Name follows ACL data.
*/ */
typedef struct { typedef struct {
lr_create_t lr_create; /* common create portion */ lr_create_t lr_create; /* common create portion */
@ -250,13 +256,6 @@ typedef struct {
uint64_t lr_fuidcnt; /* number of real fuids */ uint64_t lr_fuidcnt; /* number of real fuids */
uint64_t lr_acl_bytes; /* number of bytes in ACL */ uint64_t lr_acl_bytes; /* number of bytes in ACL */
uint64_t lr_acl_flags; /* ACL flags */ uint64_t lr_acl_flags; /* ACL flags */
/* lr_acl_bytes number of variable sized ace's follows */
/* if create is also setting xvattr's, then acl data follows xvattr */
/* if ACE FUIDs are needed then they will follow the xvattr_t */
/* Following the FUIDs will be the domain table information. */
/* The FUIDs for the owner and group will be in the lr_create */
/* portion of the record. */
/* name follows ACL data */
} lr_acl_create_t; } lr_acl_create_t;
typedef struct { typedef struct {

View File

@ -33,11 +33,10 @@
extern "C" { extern "C" {
#endif #endif
/* /* Common signature for all zio compress functions. */
* Common signature for all zio compress/decompress functions.
*/
typedef size_t zio_compress_func_t(void *src, void *dst, typedef size_t zio_compress_func_t(void *src, void *dst,
size_t s_len, size_t d_len, int); size_t s_len, size_t d_len, int);
/* Common signature for all zio decompress functions. */
typedef int zio_decompress_func_t(void *src, void *dst, typedef int zio_decompress_func_t(void *src, void *dst,
size_t s_len, size_t d_len, int); size_t s_len, size_t d_len, int);

View File

@ -58,11 +58,11 @@
* tight. * tight.
* *
* 3. The Megiddo and Modha model assumes a fixed page size. All * 3. The Megiddo and Modha model assumes a fixed page size. All
* elements of the cache are therefor exactly the same size. So * elements of the cache are therefore exactly the same size. So
* when adjusting the cache size following a cache miss, its simply * when adjusting the cache size following a cache miss, its simply
* a matter of choosing a single page to evict. In our model, we * a matter of choosing a single page to evict. In our model, we
* have variable sized cache blocks (rangeing from 512 bytes to * have variable sized cache blocks (rangeing from 512 bytes to
* 128K bytes). We therefor choose a set of blocks to evict to make * 128K bytes). We therefore choose a set of blocks to evict to make
* space for a cache miss that approximates as closely as possible * space for a cache miss that approximates as closely as possible
* the space used by the new block. * the space used by the new block.
* *
@ -77,7 +77,7 @@
* ways: 1) via a hash table lookup using the DVA as a key, * ways: 1) via a hash table lookup using the DVA as a key,
* or 2) via one of the ARC lists. The arc_read() interface * or 2) via one of the ARC lists. The arc_read() interface
* uses method 1, while the internal arc algorithms for * uses method 1, while the internal arc algorithms for
* adjusting the cache use method 2. We therefor provide two * adjusting the cache use method 2. We therefore provide two
* types of locks: 1) the hash table lock array, and 2) the * types of locks: 1) the hash table lock array, and 2) the
* arc list locks. * arc list locks.
* *
@ -431,7 +431,7 @@ static arc_stats_t arc_stats = {
#define ARCSTAT(stat) (arc_stats.stat.value.ui64) #define ARCSTAT(stat) (arc_stats.stat.value.ui64)
#define ARCSTAT_INCR(stat, val) \ #define ARCSTAT_INCR(stat, val) \
atomic_add_64(&arc_stats.stat.value.ui64, (val)); atomic_add_64(&arc_stats.stat.value.ui64, (val))
#define ARCSTAT_BUMP(stat) ARCSTAT_INCR(stat, 1) #define ARCSTAT_BUMP(stat) ARCSTAT_INCR(stat, 1)
#define ARCSTAT_BUMPDOWN(stat) ARCSTAT_INCR(stat, -1) #define ARCSTAT_BUMPDOWN(stat) ARCSTAT_INCR(stat, -1)
@ -665,9 +665,7 @@ uint64_t zfs_crc64_table[256];
#define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent) #define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent)
#define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done) #define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done)
/* /* L2ARC Performance Tunables */
* L2ARC Performance Tunables
*/
unsigned long l2arc_write_max = L2ARC_WRITE_SIZE; /* def max write size */ unsigned long l2arc_write_max = L2ARC_WRITE_SIZE; /* def max write size */
unsigned long l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra warmup write */ unsigned long l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra warmup write */
unsigned long l2arc_headroom = L2ARC_HEADROOM; /* # of dev writes */ unsigned long l2arc_headroom = L2ARC_HEADROOM; /* # of dev writes */
@ -3829,7 +3827,7 @@ arc_tempreserve_space(uint64_t reserve, uint64_t txg)
/* /*
* Writes will, almost always, require additional memory allocations * Writes will, almost always, require additional memory allocations
* in order to compress/encrypt/etc the data. We therefor need to * in order to compress/encrypt/etc the data. We therefore need to
* make sure that there is sufficient available memory for this. * make sure that there is sufficient available memory for this.
*/ */
if ((error = arc_memory_throttle(reserve, anon_size, txg))) if ((error = arc_memory_throttle(reserve, anon_size, txg)))

View File

@ -43,7 +43,7 @@
* dsl_scan_sync. This allows the delete operation to finish without traversing * dsl_scan_sync. This allows the delete operation to finish without traversing
* all the dataset's blocks. * all the dataset's blocks.
* *
* Note that while bt_begin and bt_end are only ever incremented in this code * Note that while bt_begin and bt_end are only ever incremented in this code,
* they are effectively reset to 0 every time the entire bptree is freed because * they are effectively reset to 0 every time the entire bptree is freed because
* the bptree's object is destroyed and re-created. * the bptree's object is destroyed and re-created.
*/ */

View File

@ -1804,14 +1804,16 @@ dnode_willuse_space(dnode_t *dn, int64_t space, dmu_tx_t *tx)
} }
/* /*
* This function scans a block at the indicated "level" looking for * Scans a block at the indicated "level" looking for a hole or data,
* a hole or data (depending on 'flags'). If level > 0, then we are * depending on 'flags'.
* scanning an indirect block looking at its pointers. If level == 0, *
* then we are looking at a block of dnodes. If we don't find what we * If level > 0, then we are scanning an indirect block looking at its
* are looking for in the block, we return ESRCH. Otherwise, return * pointers. If level == 0, then we are looking at a block of dnodes.
* with *offset pointing to the beginning (if searching forwards) or *
* end (if searching backwards) of the range covered by the block * If we don't find what we are looking for in the block, we return ESRCH.
* pointer we matched on (or dnode). * Otherwise, return with *offset pointing to the beginning (if searching
* forwards) or end (if searching backwards) of the range covered by the
* block pointer we matched on (or dnode).
* *
* The basic search algorithm used below by dnode_next_offset() is to * The basic search algorithm used below by dnode_next_offset() is to
* use this function to search up the block tree (widen the search) until * use this function to search up the block tree (widen the search) until

View File

@ -302,7 +302,7 @@ free_children(dmu_buf_impl_t *db, uint64_t blkid, uint64_t nblks, int trunc,
} }
/* /*
* free_range: Traverse the indicated range of the provided file * Traverse the indicated range of the provided file
* and "free" all the blocks contained there. * and "free" all the blocks contained there.
*/ */
static void static void
@ -370,7 +370,7 @@ dnode_sync_free_range(dnode_t *dn, uint64_t blkid, uint64_t nblks, dmu_tx_t *tx)
} }
/* /*
* Try to kick all the dnodes dbufs out of the cache... * Try to kick all the dnode's dbufs out of the cache...
*/ */
void void
dnode_evict_dbufs(dnode_t *dn) dnode_evict_dbufs(dnode_t *dn)

View File

@ -380,7 +380,7 @@ dsl_prop_predict(dsl_dir_t *dd, const char *propname,
/* /*
* Unregister this callback. Return 0 on success, ENOENT if ddname is * Unregister this callback. Return 0 on success, ENOENT if ddname is
* invalid, ENOMSG if no matching callback registered. * invalid, or ENOMSG if no matching callback registered.
*/ */
int int
dsl_prop_unregister(dsl_dataset_t *ds, const char *propname, dsl_prop_unregister(dsl_dataset_t *ds, const char *propname,

View File

@ -110,6 +110,7 @@
* location. * location.
* *
* Byteswap implications: * Byteswap implications:
*
* Since the SA attributes are not entirely self describing we can't do * Since the SA attributes are not entirely self describing we can't do
* the normal byteswap processing. The special ZAP layout attribute and * the normal byteswap processing. The special ZAP layout attribute and
* attribute registration attributes define the byteswap function and the * attribute registration attributes define the byteswap function and the
@ -188,7 +189,6 @@ sa_attr_reg_t sa_legacy_attrs[] = {
}; };
/* /*
* ZPL legacy layout
* This is only used for objects of type DMU_OT_ZNODE * This is only used for objects of type DMU_OT_ZNODE
*/ */
sa_attr_type_t sa_legacy_zpl_layout[] = { sa_attr_type_t sa_legacy_zpl_layout[] = {
@ -198,7 +198,6 @@ sa_attr_type_t sa_legacy_zpl_layout[] = {
/* /*
* Special dummy layout used for buffers with no attributes. * Special dummy layout used for buffers with no attributes.
*/ */
sa_attr_type_t sa_dummy_zpl_layout[] = { 0 }; sa_attr_type_t sa_dummy_zpl_layout[] = { 0 };
static int sa_legacy_attr_count = 16; static int sa_legacy_attr_count = 16;

View File

@ -4585,6 +4585,7 @@ spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing)
/* /*
* Detach a device from a mirror or replacing vdev. * Detach a device from a mirror or replacing vdev.
*
* If 'replace_done' is specified, only detach if the parent * If 'replace_done' is specified, only detach if the parent
* is a replacing vdev. * is a replacing vdev.
*/ */
@ -5242,11 +5243,9 @@ spa_vdev_remove_from_namespace(spa_t *spa, vdev_t *vd)
* the spa_vdev_config_[enter/exit] functions which allow us to * the spa_vdev_config_[enter/exit] functions which allow us to
* grab and release the spa_config_lock while still holding the namespace * grab and release the spa_config_lock while still holding the namespace
* lock. During each step the configuration is synced out. * lock. During each step the configuration is synced out.
*/ *
* Currently, this supports removing only hot spares, slogs, and level 2 ARC
/* * devices.
* Remove a device from the pool. Currently, this supports removing only hot
* spares, slogs, and level 2 ARC devices.
*/ */
int int
spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare) spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare)
@ -5356,7 +5355,7 @@ spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare)
/* /*
* Find any device that's done replacing, or a vdev marked 'unspare' that's * Find any device that's done replacing, or a vdev marked 'unspare' that's
* current spared, so we can detach it. * currently spared, so we can detach it.
*/ */
static vdev_t * static vdev_t *
spa_vdev_resilver_done_hunt(vdev_t *vd) spa_vdev_resilver_done_hunt(vdev_t *vd)

View File

@ -320,6 +320,7 @@ spa_config_set(spa_t *spa, nvlist_t *config)
/* /*
* Generate the pool's configuration based on the current in-core state. * Generate the pool's configuration based on the current in-core state.
*
* We infer whether to generate a complete config or just one top-level config * We infer whether to generate a complete config or just one top-level config
* based on whether vd is the root vdev. * based on whether vd is the root vdev.
*/ */

View File

@ -1288,7 +1288,7 @@ spa_freeze(spa_t *spa)
/* /*
* This is a stripped-down version of strtoull, suitable only for converting * This is a stripped-down version of strtoull, suitable only for converting
* lowercase hexidecimal numbers that don't overflow. * lowercase hexadecimal numbers that don't overflow.
*/ */
uint64_t uint64_t
strtonum(const char *str, char **nptr) strtonum(const char *str, char **nptr)

View File

@ -636,7 +636,7 @@ txg_delay(dsl_pool_t *dp, uint64_t txg, hrtime_t delay, hrtime_t resolution)
tx_state_t *tx = &dp->dp_tx; tx_state_t *tx = &dp->dp_tx;
hrtime_t start = gethrtime(); hrtime_t start = gethrtime();
/* don't delay if this txg could transition to quiesing immediately */ /* don't delay if this txg could transition to quiescing immediately */
if (tx->tx_open_txg > txg || if (tx->tx_open_txg > txg ||
tx->tx_syncing_txg == txg-1 || tx->tx_synced_txg == txg-1) tx->tx_syncing_txg == txg-1 || tx->tx_synced_txg == txg-1)
return; return;

View File

@ -966,9 +966,11 @@ vdev_probe_done(zio_t *zio)
} }
/* /*
* Determine whether this device is accessible by reading and writing * Determine whether this device is accessible.
* to several known locations: the pad regions of each vdev label *
* but the first (which we leave alone in case it contains a VTOC). * Read and write to several known locations: the pad regions of each
* vdev label but the first, which we leave alone in case it contains
* a VTOC.
*/ */
zio_t * zio_t *
vdev_probe(vdev_t *vd, zio_t *zio) vdev_probe(vdev_t *vd, zio_t *zio)
@ -2202,10 +2204,12 @@ vdev_degrade(spa_t *spa, uint64_t guid, vdev_aux_t aux)
} }
/* /*
* Online the given vdev. If 'unspare' is set, it implies two things. First, * Online the given vdev.
* any attached spare device should be detached when the device finishes *
* resilvering. Second, the online should be treated like a 'test' online case, * If 'ZFS_ONLINE_UNSPARE' is set, it implies two things. First, any attached
* so no FMA events are generated if the device fails to open. * spare device should be detached when the device finishes resilvering.
* Second, the online should be treated like a 'test' online case, so no FMA
* events are generated if the device fails to open.
*/ */
int int
vdev_online(spa_t *spa, uint64_t guid, uint64_t flags, vdev_state_t *newstate) vdev_online(spa_t *spa, uint64_t guid, uint64_t flags, vdev_state_t *newstate)

View File

@ -37,13 +37,14 @@
/* /*
* These tunables are for performance analysis. * These tunables are for performance analysis.
*/ */
/*
* zfs_vdev_max_pending is the maximum number of i/os concurrently /* The maximum number of I/Os concurrently pending to each device. */
* pending to each device. zfs_vdev_min_pending is the initial number
* of i/os pending to each device (before it starts ramping up to
* max_pending).
*/
int zfs_vdev_max_pending = 10; int zfs_vdev_max_pending = 10;
/*
* The initial number of I/Os pending to each device, before it starts ramping
* up to zfs_vdev_max_pending.
*/
int zfs_vdev_min_pending = 4; int zfs_vdev_min_pending = 4;
/* /*

View File

@ -60,6 +60,7 @@
* o addition (+) is represented by a bitwise XOR * o addition (+) is represented by a bitwise XOR
* o subtraction (-) is therefore identical to addition: A + B = A - B * o subtraction (-) is therefore identical to addition: A + B = A - B
* o multiplication of A by 2 is defined by the following bitwise expression: * o multiplication of A by 2 is defined by the following bitwise expression:
*
* (A * 2)_7 = A_6 * (A * 2)_7 = A_6
* (A * 2)_6 = A_5 * (A * 2)_6 = A_5
* (A * 2)_5 = A_4 * (A * 2)_5 = A_4
@ -118,7 +119,7 @@ typedef struct raidz_map {
uint64_t rm_missingparity; /* Count of missing parity devices */ uint64_t rm_missingparity; /* Count of missing parity devices */
uint64_t rm_firstdatacol; /* First data column/parity count */ uint64_t rm_firstdatacol; /* First data column/parity count */
uint64_t rm_nskip; /* Skipped sectors for padding */ uint64_t rm_nskip; /* Skipped sectors for padding */
uint64_t rm_skipstart; /* Column index of padding start */ uint64_t rm_skipstart; /* Column index of padding start */
void *rm_datacopy; /* rm_asize-buffer of copied data */ void *rm_datacopy; /* rm_asize-buffer of copied data */
uintptr_t rm_reports; /* # of referencing checksum reports */ uintptr_t rm_reports; /* # of referencing checksum reports */
uint8_t rm_freed; /* map no longer has referencing ZIO */ uint8_t rm_freed; /* map no longer has referencing ZIO */
@ -158,10 +159,7 @@ typedef struct raidz_map {
*/ */
int vdev_raidz_default_to_general; int vdev_raidz_default_to_general;
/* /* Powers of 2 in the Galois field defined above. */
* These two tables represent powers and logs of 2 in the Galois field defined
* above. These values were computed by repeatedly multiplying by 2 as above.
*/
static const uint8_t vdev_raidz_pow2[256] = { static const uint8_t vdev_raidz_pow2[256] = {
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26,
@ -196,6 +194,7 @@ static const uint8_t vdev_raidz_pow2[256] = {
0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83,
0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x01 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x01
}; };
/* Logs of 2 in the Galois field defined above. */
static const uint8_t vdev_raidz_log2[256] = { static const uint8_t vdev_raidz_log2[256] = {
0x00, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x00, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6,
0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b,

View File

@ -1476,7 +1476,8 @@ zfs_acl_chmod(zfs_sb_t *zsb, uint64_t mode, zfs_acl_t *aclp)
zacep = (void *)((uintptr_t)zacep + abstract_size); zacep = (void *)((uintptr_t)zacep + abstract_size);
new_count++; new_count++;
new_bytes += abstract_size; new_bytes += abstract_size;
} if (deny1) { }
if (deny1) {
zfs_set_ace(aclp, zacep, deny1, DENY, -1, ACE_OWNER); zfs_set_ace(aclp, zacep, deny1, DENY, -1, ACE_OWNER);
zacep = (void *)((uintptr_t)zacep + abstract_size); zacep = (void *)((uintptr_t)zacep + abstract_size);
new_count++; new_count++;
@ -1873,7 +1874,7 @@ zfs_acl_ids_overquota(zfs_sb_t *zsb, zfs_acl_ids_t *acl_ids)
} }
/* /*
* Retrieve a files ACL * Retrieve a file's ACL
*/ */
int int
zfs_getacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr) zfs_getacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
@ -2028,7 +2029,7 @@ zfs_vsec_2_aclp(zfs_sb_t *zsb, umode_t obj_mode,
} }
/* /*
* Set a files ACL * Set a file's ACL
*/ */
int int
zfs_setacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr) zfs_setacl(znode_t *zp, vsecattr_t *vsecp, boolean_t skipaclchk, cred_t *cr)
@ -2449,6 +2450,7 @@ slow:
/* /*
* Determine whether Access should be granted/denied. * Determine whether Access should be granted/denied.
*
* The least priv subsytem is always consulted as a basic privilege * The least priv subsytem is always consulted as a basic privilege
* can define any form of access. * can define any form of access.
*/ */
@ -2656,7 +2658,6 @@ zfs_delete_final_check(znode_t *zp, znode_t *dzp,
* Determine whether Access should be granted/deny, without * Determine whether Access should be granted/deny, without
* consulting least priv subsystem. * consulting least priv subsystem.
* *
*
* The following chart is the recommended NFSv4 enforcement for * The following chart is the recommended NFSv4 enforcement for
* ability to delete an object. * ability to delete an object.
* *

View File

@ -290,9 +290,7 @@ zfs_is_bootfs(const char *name)
} }
/* /*
* zfs_earlier_version * Return non-zero if the spa version is less than requested version.
*
* Return non-zero if the spa version is less than requested version.
*/ */
static int static int
zfs_earlier_version(const char *name, int version) zfs_earlier_version(const char *name, int version)
@ -310,8 +308,6 @@ zfs_earlier_version(const char *name, int version)
} }
/* /*
* zpl_earlier_version
*
* Return TRUE if the ZPL version is less than requested version. * Return TRUE if the ZPL version is less than requested version.
*/ */
static boolean_t static boolean_t
@ -2942,10 +2938,10 @@ zfs_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx)
/* /*
* inputs: * inputs:
* createprops list of properties requested by creator
* default_zplver zpl version to use if unspecified in createprops
* fuids_ok fuids allowed in this version of the spa?
* os parent objset pointer (NULL if root fs) * os parent objset pointer (NULL if root fs)
* fuids_ok fuids allowed in this version of the spa?
* sa_ok SAs allowed in this version of the spa?
* createprops list of properties requested by creator
* *
* outputs: * outputs:
* zplprops values for the zplprops we attach to the master node object * zplprops values for the zplprops we attach to the master node object

View File

@ -212,9 +212,8 @@ zfs_log_fuid_domains(zfs_fuid_info_t *fuidp, void *start)
} }
/* /*
* zfs_log_create() is used to handle TX_CREATE, TX_CREATE_ATTR, TX_MKDIR, * Handles TX_CREATE, TX_CREATE_ATTR, TX_MKDIR, TX_MKDIR_ATTR and
* TX_MKDIR_ATTR and TX_MKXATTR * TK_MKXATTR transactions.
* transactions.
* *
* TX_CREATE and TX_MKDIR are standard creates, but they may have FUID * TX_CREATE and TX_MKDIR are standard creates, but they may have FUID
* domain information appended prior to the name. In this case the * domain information appended prior to the name. In this case the
@ -341,7 +340,7 @@ zfs_log_create(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
} }
/* /*
* zfs_log_remove() handles both TX_REMOVE and TX_RMDIR transactions. * Handles both TX_REMOVE and TX_RMDIR transactions.
*/ */
void void
zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
@ -365,7 +364,7 @@ zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
} }
/* /*
* zfs_log_link() handles TX_LINK transactions. * Handles TX_LINK transactions.
*/ */
void void
zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
@ -388,7 +387,7 @@ zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
} }
/* /*
* zfs_log_symlink() handles TX_SYMLINK transactions. * Handles TX_SYMLINK transactions.
*/ */
void void
zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
@ -420,7 +419,7 @@ zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
} }
/* /*
* zfs_log_rename() handles TX_RENAME transactions. * Handles TX_RENAME transactions.
*/ */
void void
zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
@ -446,7 +445,7 @@ zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype,
} }
/* /*
* zfs_log_write() handles TX_WRITE transactions. * Handles TX_WRITE transactions.
*/ */
long zfs_immediate_write_sz = 32768; long zfs_immediate_write_sz = 32768;
@ -525,7 +524,7 @@ zfs_log_write(zilog_t *zilog, dmu_tx_t *tx, int txtype,
} }
/* /*
* zfs_log_truncate() handles TX_TRUNCATE transactions. * Handles TX_TRUNCATE transactions.
*/ */
void void
zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype, zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype,
@ -548,7 +547,7 @@ zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype,
} }
/* /*
* zfs_log_setattr() handles TX_SETATTR transactions. * Handles TX_SETATTR transactions.
*/ */
void void
zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype, zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype,
@ -610,7 +609,7 @@ zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype,
} }
/* /*
* zfs_log_acl() handles TX_ACL transactions. * Handles TX_ACL transactions.
*/ */
void void
zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp, zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp,

View File

@ -28,7 +28,7 @@
/* /*
* This file contains the code to implement file range locking in * This file contains the code to implement file range locking in
* ZFS, although there isn't much specific to ZFS (all that comes to mind * ZFS, although there isn't much specific to ZFS (all that comes to mind is
* support for growing the blocksize). * support for growing the blocksize).
* *
* Interface * Interface

View File

@ -264,7 +264,7 @@ out:
/* /*
* I'm not convinced we should do any of this upgrade. * I'm not convinced we should do any of this upgrade.
* since the SA code can read both old/new znode formats * since the SA code can read both old/new znode formats
* with probably little to know performance difference. * with probably little to no performance difference.
* *
* All new files will be created with the new format. * All new files will be created with the new format.
*/ */

View File

@ -947,13 +947,12 @@ EXPORT_SYMBOL(zfs_unregister_callbacks);
#ifdef HAVE_MLSLABEL #ifdef HAVE_MLSLABEL
/* /*
* zfs_check_global_label: * Check that the hex label string is appropriate for the dataset being
* Check that the hex label string is appropriate for the dataset * mounted into the global_zone proper.
* being mounted into the global_zone proper.
* *
* Return an error if the hex label string is not default or * Return an error if the hex label string is not default or
* admin_low/admin_high. For admin_low labels, the corresponding * admin_low/admin_high. For admin_low labels, the corresponding
* dataset must be readonly. * dataset must be readonly.
*/ */
int int
zfs_check_global_label(const char *dsname, const char *hexsl) zfs_check_global_label(const char *dsname, const char *hexsl)

View File

@ -123,7 +123,7 @@
* (5) If the operation succeeded, generate the intent log entry for it * (5) If the operation succeeded, generate the intent log entry for it
* before dropping locks. This ensures that the ordering of events * before dropping locks. This ensures that the ordering of events
* in the intent log matches the order in which they actually occurred. * in the intent log matches the order in which they actually occurred.
* During ZIL replay the zfs_log_* functions will update the sequence * During ZIL replay the zfs_log_* functions will update the sequence
* number to indicate the zil transaction has replayed. * number to indicate the zil transaction has replayed.
* *
* (6) At the end of each vnode op, the DMU tx must always commit, * (6) At the end of each vnode op, the DMU tx must always commit,
@ -357,7 +357,7 @@ update_pages(struct inode *ip, int64_t start, int len,
* else we default from the dmu buffer. * else we default from the dmu buffer.
* *
* NOTE: We will always "break up" the IO into PAGESIZE uiomoves when * NOTE: We will always "break up" the IO into PAGESIZE uiomoves when
* the file is memory mapped. * the file is memory mapped.
*/ */
static int static int
mappedread(struct inode *ip, int nbytes, uio_t *uio) mappedread(struct inode *ip, int nbytes, uio_t *uio)
@ -418,8 +418,7 @@ unsigned long zfs_read_chunk_size = 1024 * 1024; /* Tunable */
* *
* OUT: uio - updated offset and range, buffer filled. * OUT: uio - updated offset and range, buffer filled.
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Side Effects: * Side Effects:
* inode - atime updated if byte count > 0 * inode - atime updated if byte count > 0
@ -1116,8 +1115,7 @@ EXPORT_SYMBOL(zfs_access);
* *
* OUT: ipp - inode of located entry, NULL if not found. * OUT: ipp - inode of located entry, NULL if not found.
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* NA * NA
@ -1249,8 +1247,7 @@ EXPORT_SYMBOL(zfs_lookup);
* *
* OUT: ipp - inode of created or trunc'd entry. * OUT: ipp - inode of created or trunc'd entry.
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* dip - ctime|mtime updated if new entry created * dip - ctime|mtime updated if new entry created
@ -1858,8 +1855,7 @@ EXPORT_SYMBOL(zfs_mkdir);
* cr - credentials of caller. * cr - credentials of caller.
* flags - case flags * flags - case flags
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* dip - ctime|mtime updated * dip - ctime|mtime updated
@ -3148,8 +3144,7 @@ zfs_rename_lock(znode_t *szp, znode_t *tdzp, znode_t *sdzp, zfs_zlock_t **zlpp)
* cr - credentials of caller. * cr - credentials of caller.
* flags - case flags * flags - case flags
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* sdip,tdip - ctime|mtime updated * sdip,tdip - ctime|mtime updated
@ -3483,8 +3478,7 @@ EXPORT_SYMBOL(zfs_rename);
* cr - credentials of caller. * cr - credentials of caller.
* flags - case flags * flags - case flags
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* dip - ctime|mtime updated * dip - ctime|mtime updated
@ -4141,8 +4135,7 @@ zfs_fillpage(struct inode *ip, struct page *pl[], int nr_pages)
* pl - list of pages to read * pl - list of pages to read
* nr_pages - number of pages to read * nr_pages - number of pages to read
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* vp - atime updated * vp - atime updated
@ -4277,8 +4270,7 @@ convoff(struct inode *ip, flock64_t *lckdat, int whence, offset_t offset)
* offset - current file offset. * offset - current file offset.
* cr - credentials of caller [UNUSED]. * cr - credentials of caller [UNUSED].
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure.
* error code if failure
* *
* Timestamps: * Timestamps:
* ip - ctime|mtime updated * ip - ctime|mtime updated

View File

@ -754,9 +754,8 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr,
} }
/* /*
* zfs_xvattr_set only updates the in-core attributes * Update in-core attributes. It is assumed the caller will be doing an
* it is assumed the caller will be doing an sa_bulk_update * sa_bulk_update to push the changes out.
* to push the changes out
*/ */
void void
zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx) zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx)
@ -1183,8 +1182,7 @@ zfs_grow_blocksize(znode_t *zp, uint64_t size, dmu_tx_t *tx)
* IN: zp - znode of file to free data in. * IN: zp - znode of file to free data in.
* end - new end-of-file * end - new end-of-file
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure
* error code if failure
*/ */
static int static int
zfs_extend(znode_t *zp, uint64_t end) zfs_extend(znode_t *zp, uint64_t end)
@ -1261,8 +1259,7 @@ top:
* off - start of section to free. * off - start of section to free.
* len - length of section to free. * len - length of section to free.
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure
* error code if failure
*/ */
static int static int
zfs_free_range(znode_t *zp, uint64_t off, uint64_t len) zfs_free_range(znode_t *zp, uint64_t off, uint64_t len)
@ -1300,8 +1297,7 @@ zfs_free_range(znode_t *zp, uint64_t off, uint64_t len)
* IN: zp - znode of file to free data in. * IN: zp - znode of file to free data in.
* end - new end-of-file. * end - new end-of-file.
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure
* error code if failure
*/ */
static int static int
zfs_trunc(znode_t *zp, uint64_t end) zfs_trunc(znode_t *zp, uint64_t end)
@ -1374,8 +1370,7 @@ top:
* flag - current file open mode flags. * flag - current file open mode flags.
* log - TRUE if this action should be logged * log - TRUE if this action should be logged
* *
* RETURN: 0 if success * RETURN: 0 on success, error code on failure
* error code if failure
*/ */
int int
zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log) zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)

View File

@ -88,9 +88,9 @@ zil_stats_t zil_stats = {
static kstat_t *zil_ksp; static kstat_t *zil_ksp;
/* /*
* This global ZIL switch affects all pools * Disable intent logging replay. This global ZIL switch affects all pools.
*/ */
int zil_replay_disable = 0; /* disable intent logging replay */ int zil_replay_disable = 0;
/* /*
* Tunable parameter for debugging or performance analysis. Setting * Tunable parameter for debugging or performance analysis. Setting
@ -922,6 +922,7 @@ zil_lwb_write_init(zilog_t *zilog, lwb_t *lwb)
/* /*
* Define a limited set of intent log block sizes. * Define a limited set of intent log block sizes.
*
* These must be a multiple of 4KB. Note only the amount used (again * These must be a multiple of 4KB. Note only the amount used (again
* aligned to 4KB) actually gets written. However, we can't always just * aligned to 4KB) actually gets written. However, we can't always just
* allocate SPA_MAXBLOCKSIZE as the slog space could be exhausted. * allocate SPA_MAXBLOCKSIZE as the slog space could be exhausted.