On 06/19/2014 07:12 PM, Yinghai Lu wrote: > When initrd (compressed or not) is used, kernel report data corrupted > with /dev/ram0. > > The root cause: > During initramfs checking, if it is initrd, it will be transferred to > /initrd.image with sys_write. > sys_write only support 2G-4K write, so if the initrd ram is more than > that, /initrd.image will not complete at all. > > Add local sys_write_large to loop calling sys_write to workaround the > problem. > > Also need to use that in write_buffer path for cpio that have file is > more than file.
That sentence doesn't make sense. > At the same time, we don't need to worry about sys_read/sys_write in > do_mounts_rd.c::crd_load. As decompressor will have fill/flush that > means it will allocate buffer and buffer is smaller than 2G. > > Test with uncompressed initrd, and compressed with gz, bz2, lzma,xz, > lzop. > > Signed-off-by: Yinghai Lu <ying...@kernel.org> I would call this function xwrite(), which is usually called in userspace. It would be nice in order to support very large initrd/initramfs, to free the memory as it becomes available instead of requiring two copies of the data in memory at the same time. Otherwise, Acked-by: H. Peter Anvin <h...@zytor.com> -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/