<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
As usual, I'm going to start with:<br>
<br>
Step 0:  What problem are you trying to solve by doing this?<br></blockquote><div> </div><div>Working on a custom driver that tracks I/Os on block level. For some use case, I need to write metadata of tracked I/Os from driver in shutdown sequence (more likely in reboot handler). In reboot handler, performing I/O on disk is tricky (no userspace, no VFS. no sysfs). </div><div>Although, I am able to write one sector, by creating custom bio and giving manually sector to disk. Still, looking some correct API like <b>write_IO_on_disk(buffer, dev, offset, len)</b></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The problem is that the kernel shouldn't be scribbling on files itself, and<br>
that's *extremely* discouraged.   The gory details of why basically boil down<br>
to "the VFS assumes that all filesytem scribbling is called from a user process<br>
context", which causes all sorts of problems if you're in a non-user process<br>
context, or a non-process context entirely.<br></blockquote><div> </div><div>I understand it. Ideally, best practices, I should be not do that, but here is custom scenario, in which in reboot handler no VFS APIs will be accessible.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
(There's also deep philosophical issues if you're over-writing blocks of a user<br>
created file, because users have a very reasonable expectation that if they<br>
write a given piece of data into a file system, they get the exact same data<br>
back when they read it...)<br></blockquote><div><br></div><div>But kernel developer should have an interface which takes only buffer, and write on a particular sector, even though it discouraged, but having that facility would not harm.</div><div>---</div><div>Jitendra</div><div> </div></div></div>