Modify a file content from block layer

jitendra kumar khasdev jkhasdev at gmail.com
Mon Oct 22 13:02:14 EDT 2018


>
>
> As usual, I'm going to start with:
>
> Step 0:  What problem are you trying to solve by doing this?
>

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).
Although, I am able to write one sector, by creating custom bio and giving
manually sector to disk. Still, looking some correct API like
*write_IO_on_disk(buffer,
dev, offset, len)*


> The problem is that the kernel shouldn't be scribbling on files itself, and
> that's *extremely* discouraged.   The gory details of why basically boil
> down
> to "the VFS assumes that all filesytem scribbling is called from a user
> process
> context", which causes all sorts of problems if you're in a non-user
> process
> context, or a non-process context entirely.
>

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.

(There's also deep philosophical issues if you're over-writing blocks of a
> user
> created file, because users have a very reasonable expectation that if they
> write a given piece of data into a file system, they get the exact same
> data
> back when they read it...)
>

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.
---
Jitendra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20181022/0f67bd53/attachment.html>


More information about the Kernelnewbies mailing list