[systemd-devel] systemd-213: regression with zram

Minchan Kim minchan at kernel.org
Tue Jun 24 00:49:58 PDT 2014


On Tue, Jun 24, 2014 at 07:21:12AM +0000, Minchan Kim wrote:
> On Tue, Jun 24, 2014 at 12:34:50PM +0600, Alexander E. Patrakov wrote:
> > 24.06.2014 12:22, Minchan Kim wrote:
> > >
> > >Hello,
> > >
> > >Sorry for the late response.
> > 
> > Better late than never.
> > 
> > >If I parse your problem correctly, you meant that changing disksize is
> > >failed while someone opens /dev/zram0?
> > >
> > >I tried test which opens "/dev/zram0" with O_RDWR and sleep forever
> > >and then echo $((512<<20)) > /sys/block/zram0/disksize is successful.
> > >IOW, it's okay with me.
> > 
> > No, this is only a part of the problem. A valid test would be:
> > 
> > 0. Reset the unused zram device.
> > 1. Use a program that opens /dev/zram0 with O_RDWR and sleeps until killed.
> > 2. While that program sleeps, echo the correct value to
> > /sys/block/zram0/disksize.
> > 3. Verify (e.g. in /proc/partitions) that the disk size is applied
> > correctly. It is.
> > 4. While that program still sleeps, attempt to mkswap /dev/zram0.
> > This fails:
> > 
> > mkswap: error: swap area needs to be at least 40 KiB
> > 
> > There is nothing in dmesg.
> 
> Thanks. I could reproduce.
> When I read strace result, fstat access closed fd which seem to be
> a culprit.
> 
> Cced util-linux.

When I read disk-utils/mkswap.c, it's not a problem of mkswap.
The problem is ioctl(fd, BLKGETSIZE64, bytes) is not work in
your scenario. IOW, kernel fault.
Hmm,, will investgate it.

Thanks for the report!


More information about the systemd-devel mailing list