Public bug reported:

in sysfs.conf:
kernel/mm/transparent_hugepage/defrag = defer

After systemctl restart sysfsutils.service:

cat kernel/mm/transparent_hugepage/defrag
result: always defer [defer+madvise] madvise never

Problem seems to be related to lines 49-50 of /etc/init.d/sysfsutils, the use 
of echo -n followed by echo.
If you reverse them to do echo followed by echo -n then it applies correctly.

Example of "echo -n defer > defrag":
  Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  sudo dash -c 
"echo -n defer > defrag"
  Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  cat *
always defer [defer+madvise] madvise never
 - incorrect

Example of "echo defer > defrag":
  Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  sudo dash -c 
"echo defer > defrag"
  Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  cat *
always [defer] defer+madvise madvise never
 - correct

Note: this is a bug in the kernel handling of the defrag interface:
https://github.com/torvalds/linux/blob/v4.13/mm/huge_memory.c:
Lines 237-255 or so.
Test is memcmp between the input buffer and "defer+madvise", with a newline 
memcmp doesn't match. Without it matches:
        } else if (!memcmp("defer+madvise", buf,
                    min(sizeof("defer+madvise")-1, count))) {
will match either defer or defer+madvise. Unfortunate.

** Affects: sysfsutils (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to sysfsutils in Ubuntu.
https://bugs.launchpad.net/bugs/1745780

Title:
  Setting from sysfs.conf incorrectly applied

Status in sysfsutils package in Ubuntu:
  New

Bug description:
  in sysfs.conf:
  kernel/mm/transparent_hugepage/defrag = defer

  After systemctl restart sysfsutils.service:

  cat kernel/mm/transparent_hugepage/defrag
  result: always defer [defer+madvise] madvise never

  Problem seems to be related to lines 49-50 of /etc/init.d/sysfsutils, the use 
of echo -n followed by echo.
  If you reverse them to do echo followed by echo -n then it applies correctly.

  Example of "echo -n defer > defrag":
    Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  sudo dash 
-c "echo -n defer > defrag"
    Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  cat *
  always defer [defer+madvise] madvise never
   - incorrect

  Example of "echo defer > defrag":
    Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  sudo dash 
-c "echo defer > defrag"
    Mythmaster  mattaw  ⋯  kernel  mm  transparent_hugepage  cat *
  always [defer] defer+madvise madvise never
   - correct

  Note: this is a bug in the kernel handling of the defrag interface:
  https://github.com/torvalds/linux/blob/v4.13/mm/huge_memory.c:
  Lines 237-255 or so.
  Test is memcmp between the input buffer and "defer+madvise", with a newline 
memcmp doesn't match. Without it matches:
        } else if (!memcmp("defer+madvise", buf,
                    min(sizeof("defer+madvise")-1, count))) {
  will match either defer or defer+madvise. Unfortunate.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sysfsutils/+bug/1745780/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to