From 445bda3f4f94cca4ff138ac04203aa0420be9126 Mon Sep 17 00:00:00 2001 From: Pawel Jakub Dawidek Date: Sat, 8 Aug 2015 09:57:38 +0000 Subject: [PATCH] Allow to disable BIO_DELETE passthru in fstab for swap-on-geli devices by passing 'notrim' option. PR: 198863 Submitted by: Matthew D. Fuller fullermd at over-yonder dot net --- sbin/swapon/swapon.c | 10 ++++++---- share/man/man5/fstab.5 | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sbin/swapon/swapon.c b/sbin/swapon/swapon.c index 033c40a8edac..ed9f5685b6bc 100644 --- a/sbin/swapon/swapon.c +++ b/sbin/swapon/swapon.c @@ -313,7 +313,7 @@ static char * swap_on_geli_args(const char *mntops) { const char *aalgo, *ealgo, *keylen_str, *sectorsize_str; - const char *aflag, *eflag, *lflag, *sflag; + const char *aflag, *eflag, *lflag, *Tflag, *sflag; char *p, *args, *token, *string, *ops; int argsize, pagesize; size_t pagesize_len; @@ -321,7 +321,7 @@ swap_on_geli_args(const char *mntops) /* Use built-in defaults for geli(8). */ aalgo = ealgo = keylen_str = ""; - aflag = eflag = lflag = ""; + aflag = eflag = lflag = Tflag = ""; /* We will always specify sectorsize. */ sflag = " -s "; @@ -365,6 +365,8 @@ swap_on_geli_args(const char *mntops) free(ops); return (NULL); } + } else if ((p = strstr(token, "notrim")) == token) { + Tflag = " -T "; } else if (strcmp(token, "sw") != 0) { warnx("Invalid option: %s", token); free(ops); @@ -387,8 +389,8 @@ swap_on_geli_args(const char *mntops) sectorsize_str = p; } - argsize = asprintf(&args, "%s%s%s%s%s%s%s%s -d", - aflag, aalgo, eflag, ealgo, lflag, keylen_str, + argsize = asprintf(&args, "%s%s%s%s%s%s%s%s%s -d", + aflag, aalgo, eflag, ealgo, lflag, keylen_str, Tflag, sflag, sectorsize_str); free(ops); diff --git a/share/man/man5/fstab.5 b/share/man/man5/fstab.5 index f6c3ffbbb576..062ab601851f 100644 --- a/share/man/man5/fstab.5 +++ b/share/man/man5/fstab.5 @@ -242,6 +242,7 @@ The .Dq ealgo , .Dq aalgo , .Dq keylen , +.Dq notrim , and .Dq sectorsize options may be passed to control those