Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

A lot of SSD-related instructions online currently say you should add allow-discards and root_trim=yes to your GRUB_CMDLINE_LINUX. I have yet to find one that says why you should do that, i.e. what exactly (if anything!) do those parameters do. Where is the documentation on this and what does it say about those two parameters' purpose?

According to Cryptsetup 1.4.0 Release Notes,

Since kernel 3.1, dm-crypt devices optionally (not by default) support block discards (TRIM) commands. If you want to enable this operation, you have to enable it manually on every activation using --allow-discards

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

but is it the same when passed to the kernel (via GRUB_CMDLINE_LINUX)?

Edit: Kernel.org's list of kernel parameters doesn't (currently, Jan 2013, at least) have either of these options.

share|improve this question
Maybe have a look at webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Does not give explanation, but a quick procedure... –  alci Jan 15 '13 at 17:45
As I said, net's full of instructions without explanations. I'm after the explanations, not the procedure. –  Jani Uusitalo Jan 15 '13 at 21:38
add comment

1 Answer

From my understanding the boot parameter root_trim=yes is Gentoo specific. Within genkernel there is a script which looks for the parameter and sets the option --allow-discards with cryptsetup (see their git repository). Furthermore I found many reports of Ubuntu or Debian users which said that it worked without the root_trim parameter. I also found no lines in Ubuntus update-initramfs script.

So all in all it is no boot parameter, but more a parameter to cryptsetup. The documentation of --allow-discards can be found in the manpage of cryptsetup(8):

Allow using of discards (TRIM) requests for device. This option is only relevant for create, luksOpen or loopaesOpen.

WARNING: Assess the specific security risks carefully before enabling this option. For example, allowing discards on encrypted devices may lead to the leak of information about the ciphertext device (filesystem type, used space etc.) if the discarded blocks can be located easily on the device later.

Kernel version 3.1 or more recent is required. For older versions is the option ignored.

share|improve this answer
So, neither of the options is needed if the filesystem isn't encypted? Why two options if all they do is enable one command to work? –  Jani Uusitalo Jan 15 '13 at 21:36
Thanks for pointing out the relation between the kernel parameter and the mount/devicemapper option in your updated answer. +1 this time. :) –  gertvdijk Jan 16 '13 at 11:33
This answer is starting to look good. I also found allow_discards in dm-crypt's current documentation; everything seems to imply it's not a kernel parameter but an option for the dm-crypt device-mapper target. I'm still trying to find out if those can be passed on the linux command line. That would explain the instructions parroted all over, otherwise it is probably just misinformation. –  Jani Uusitalo Jan 16 '13 at 12:05
@JaniUusitalo It really does not make sense to me to make this a (global) kernel paramater. 1) you really want to specify this filesystem/device-specific rather than system-wide, 2) mount/fstab options lets you do so already, 3) at boot time (before the initramfs has mounted your / as read/write) you're not likely to need this functionality. –  gertvdijk Jan 16 '13 at 12:53
The kernel parameterizing of allow-discards could be an Archism: apparently in Arch, you notify GRUB of an encrypted root with (e.g.) "cryptdevice=/dev/mapper/root:root:allow-discards". This being picked up by Ubuntu users might be due to Arch's wiki being referred to as "Best reference" by Ubuntu wiki's EncryptedFilesystems. –  Jani Uusitalo Jan 16 '13 at 13:35
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.