diff options
author | mckusick <mckusick@FreeBSD.org> | 2004-01-27 18:28:11 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2004-01-27 18:28:11 +0000 |
commit | 38230899d99297752409d42db82af87b0ac410ce (patch) | |
tree | 89a09346225450ccc4297e950d81d9ea11a5051e /sbin | |
parent | b0561e00e3c720de08f0b36b31eff77405d95c8f (diff) | |
download | FreeBSD-src-38230899d99297752409d42db82af87b0ac410ce.zip FreeBSD-src-38230899d99297752409d42db82af87b0ac410ce.tar.gz |
Preserve acls option on mounts when taking a snapshot.
Submitted by: Wiktor Niesiobedzki <freebsd-lists@w.evip.pl>
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/mksnap_ffs/mksnap_ffs.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sbin/mksnap_ffs/mksnap_ffs.c b/sbin/mksnap_ffs/mksnap_ffs.c index 13186b4..06aeca3 100644 --- a/sbin/mksnap_ffs/mksnap_ffs.c +++ b/sbin/mksnap_ffs/mksnap_ffs.c @@ -56,6 +56,7 @@ int main(int argc, char **argv) { char *dir, *cp, path[PATH_MAX]; + struct statfs stfsbuf; struct ufs_args args; struct group *grp; struct stat stbuf; @@ -85,6 +86,8 @@ main(int argc, char **argv) } else { strlcpy(path, args.fspec, cp - args.fspec + 1); } + if(statfs(path, &stfsbuf) < 0) + err(1, "%s", path); if (stat(path, &stbuf) < 0) err(1, "%s", path); if (!S_ISDIR(stbuf.st_mode)) @@ -100,7 +103,8 @@ main(int argc, char **argv) */ if ((grp = getgrnam("operator")) == NULL) errx(1, "Cannot retrieve operator gid"); - if (mount("ffs", dir, MNT_UPDATE | MNT_SNAPSHOT, &args) < 0) + if (mount("ffs", dir, MNT_UPDATE | MNT_SNAPSHOT | stfsbuf.f_flags, + &args) < 0) err(1, "Cannot create %s", args.fspec); if ((fd = open(args.fspec, O_RDONLY)) < 0) err(1, "Cannot open %s", args.fspec); |