Google
  Web www.spinics.net

Re: Loop-AES on LVM2 logical volumes, problems with CONFIG_HIGHMEM4G=y

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Fog_Watch wrote:
> When CONFIG_NOHIGHMEM=y, boot proceeds without error.  That is, grub
> finishes, I am prompted for a loop-AES password and boot starts.
> When CONFIG_HIGHMEM4G=y, grub finishes, the ramdisk cycles through as
> though I had repeatedly entered in the incorrect password and finishes
> with "System halted."  The most salient error listed is:
> "ioctl: LOOP_SET_FD: Cannot allocate memory".
> 
> On this 2GB machine I can boot a Knoppix, for example, CD which has
> CONFIG_HIGHMEM4G=y.  losetup can then be used without error.  When
> booting from disk though I get this kooky "Cannot allocate memory"
> error.  Any ideas why?

In loop-AES versions earlier than loop-AES-v3.2f, hardcoded maximum value
for "lo_prealloc" parameter was 512 RAM pages. In loop-AES-v3.2f it is 4096
RAM pages. This limit is enforced silently. As in, if larger value is used,
then hardcoded maximum value is used instead without error messages.

Preallocation of RAM is done at "losetup ioctl: LOOP_SET_FD" time. In your
case this sounds as if some non-default value for "lo_prealloc" is the
cause. Highmem RAM handling can be deadlocky in some cases. Loop code does
the preallocation from non-highmem RAM (which is sort of sin) to avoid
deadlocks. In highmem kernels, the non-highmem RAM pages are often scarce
resource.

Previous "lo_prealloc" limit was on the safe side. New limit allows better
performance, but it can also lead to "Cannot allocate memory" errors at
losetup time if too big "lo_prealloc" values are used.

-- 
Jari Ruusu  1024R/3A220F51 5B 4B F9 BB D3 3F 52 E9  DB 1D EB E3 24 0E A9 DD

-
Linux-crypto:  cryptography in and on the Linux system
Archive:       http://mail.nl.linux.org/linux-crypto/


[Home]     [Kernel]     [Linux Crypto]     [Gnu Crypto]     [Gnu Classpath]     [Netfilter]     [Bugtraq]     [Network Security Reading]

Add to Google