<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 12, 2017 at 7:01 PM, Akira Hayakawa <span dir="ltr"><<a href="mailto:ruby.wktk@gmail.com" target="_blank">ruby.wktk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have a device /dev/sdb1 and let's trace the block request by blktrace<br>
<br>
$ sudo blktrace -d /dev/sdb1<br>
<br>
When I write 4KB using dd<br>
$ sudo dd if=/dev/zero of=/dev/sdb1 oflag=direct bs=4k count=1<br>
<br>
The block trace (after blkparsed) is write request as expected<br>
  8,17   2        2     0.000003171  5930  Q  WS 2048 + 8 [dd]<br>
<br>
followed by a unexpected read from systemd-udevd<br>
  8,17   7        2     0.001755563  5931  Q   R 2048 + 8 [systemd-udevd]<br>
<br>
My first question is what is: this read request?<br></blockquote><div><br></div><div>When a device node is closed for writing, the kernel generates a 'change' uevent for it. This prompts udev to re-read filesystems and update its cache of labels, UUIDs, and other information. Tools like `lsblk` or /dev/disk/by-{id,uuid,label}/* use the udev database.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
And I want to stop the read request because it makes it difficult to test kernel code.<br>
So the second question is: how can I stop the read request?</blockquote><div><br></div><div>gparted seems to achieve this by masking all .rules files it can find (by creating 0-byte versions under /run/udev/rules.d).</div><div><br></div><div>Not sure what else to recommend. I thought there used to be inhibit mode under `udevadm control`, but I can't find it anymore.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Actually I found this behavior when I test my module <a href="https://github.com/akiradeveloper/dm-writeboost" rel="noreferrer" target="_blank">https://github.com/<wbr>akiradeveloper/dm-writeboost</a><br>
Since I need to create/remove devices during the tests, there is no choice to stop udev.service.<br></blockquote></div><div><br></div><div>The kernel itself adds/removes device nodes under /dev. Udev only manages auxiliary stuff like symlinks (like /dev/disk/by-*), permissions, and such. So you *could* survive without udev in case of emergency.</div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Mantas Mikulėnas <<a href="mailto:grawity@gmail.com" target="_blank">grawity@gmail.com</a>></div></div>
</div></div>