diff options
author | pjd <pjd@FreeBSD.org> | 2008-11-17 20:49:29 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2008-11-17 20:49:29 +0000 |
commit | bbe899b96e388a8b82439f81ed3707e0d9c6070d (patch) | |
tree | 81b89fa4ac6467771d5aa291a97f4665981a6108 /usr.bin/lsvfs/lsvfs.c | |
parent | d2f579595c362ce27b4d87e2c40e1c4e09b929e3 (diff) | |
download | FreeBSD-src-bbe899b96e388a8b82439f81ed3707e0d9c6070d.zip FreeBSD-src-bbe899b96e388a8b82439f81ed3707e0d9c6070d.tar.gz |
Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.
This bring huge amount of changes, I'll enumerate only user-visible changes:
- Delegated Administration
Allows regular users to perform ZFS operations, like file system
creation, snapshot creation, etc.
- L2ARC
Level 2 cache for ZFS - allows to use additional disks for cache.
Huge performance improvements mostly for random read of mostly
static content.
- slog
Allow to use additional disks for ZFS Intent Log to speed up
operations like fsync(2).
- vfs.zfs.super_owner
Allows regular users to perform privileged operations on files stored
on ZFS file systems owned by him. Very careful with this one.
- chflags(2)
Not all the flags are supported. This still needs work.
- ZFSBoot
Support to boot off of ZFS pool. Not finished, AFAIK.
Submitted by: dfr
- Snapshot properties
- New failure modes
Before if write requested failed, system paniced. Now one
can select from one of three failure modes:
- panic - panic on write error
- wait - wait for disk to reappear
- continue - serve read requests if possible, block write requests
- Refquota, refreservation properties
Just quota and reservation properties, but don't count space consumed
by children file systems, clones and snapshots.
- Sparse volumes
ZVOLs that don't reserve space in the pool.
- External attributes
Compatible with extattr(2).
- NFSv4-ACLs
Not sure about the status, might not be complete yet.
Submitted by: trasz
- Creation-time properties
- Regression tests for zpool(8) command.
Obtained from: OpenSolaris
Diffstat (limited to 'usr.bin/lsvfs/lsvfs.c')
-rw-r--r-- | usr.bin/lsvfs/lsvfs.c | 55 |
1 files changed, 20 insertions, 35 deletions
diff --git a/usr.bin/lsvfs/lsvfs.c b/usr.bin/lsvfs/lsvfs.c index a091282..3107971 100644 --- a/usr.bin/lsvfs/lsvfs.c +++ b/usr.bin/lsvfs/lsvfs.c @@ -71,44 +71,29 @@ fmt_flags(int flags) */ static char buf[sizeof "static, network, read-only, synthetic, loopback, unicode, jail"]; - int comma = 0; + size_t len; buf[0] = '\0'; - if(flags & VFCF_STATIC) { - if(comma++) strcat(buf, ", "); - strcat(buf, "static"); - } - - if(flags & VFCF_NETWORK) { - if(comma++) strcat(buf, ", "); - strcat(buf, "network"); - } - - if(flags & VFCF_READONLY) { - if(comma++) strcat(buf, ", "); - strcat(buf, "read-only"); - } - - if(flags & VFCF_SYNTHETIC) { - if(comma++) strcat(buf, ", "); - strcat(buf, "synthetic"); - } - - if(flags & VFCF_LOOPBACK) { - if(comma++) strcat(buf, ", "); - strcat(buf, "loopback"); - } - - if(flags & VFCF_UNICODE) { - if(comma++) strcat(buf, ", "); - strcat(buf, "unicode"); - } - - if(flags & VFCF_JAIL) { - if(comma++) strcat(buf, ", "); - strcat(buf, "jail"); - } + if(flags & VFCF_STATIC) + strlcat(buf, "static, ", sizeof(buf)); + if(flags & VFCF_NETWORK) + strlcat(buf, "network, ", sizeof(buf)); + if(flags & VFCF_READONLY) + strlcat(buf, "read-only, ", sizeof(buf)); + if(flags & VFCF_SYNTHETIC) + strlcat(buf, "synthetic, ", sizeof(buf)); + if(flags & VFCF_LOOPBACK) + strlcat(buf, "loopback, ", sizeof(buf)); + if(flags & VFCF_UNICODE) + strlcat(buf, "unicode, ", sizeof(buf)); + if(flags & VFCF_JAIL) + strlcat(buf, "jail, ", sizeof(buf)); + if(flags & VFCF_DELEGADMIN) + strlcat(buf, "delegated-administration, ", sizeof(buf)); + len = strlen(buf); + if (len > 2 && buf[len - 2] == ',') + buf[len - 2] = '\0'; return buf; } |