Re: Modify a file content from block layer

2018-10-22 Thread valdis . kletnieks
On Mon, 22 Oct 2018 22:32:14 +0530, jitendra kumar khasdev said:

> 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).

Now take a step back.

What problem are you trying to solve by scribbling on blocks?  What's in the
metadata that (a) needs to be preserved and (b) can't be done by feeding it
to a userspace process?

Hint:  A number of dm targets need to track I/Os and manage to do so without
writing to a file system.

> 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)*

That's just *looking* for an fsck. :)


pgpSpIKL1iP08.pgp
Description: PGP signature
___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: Modify a file content from block layer

2018-10-22 Thread jitendra kumar khasdev
>
>
> 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
___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: Modify a file content from block layer

2018-10-22 Thread Ozgur
  22.10.2018, 12:28, "jitendra kumar khasdev" :Hi All,  Hello, I think you can do this but should look at the kernel/howto documents.dd command does not already do this? May be not write when singles and async. Check out blkdev_write and blk_queue_write  kernel functions. maybe should read it: https://www.kernel.org/doc/Documentation/block/stat.txt I sure you can give more details and  @Valdis have very information :) Ozgur Is there any way, by which I could write/update the sectors of a file (which already exist or created in user space) from the block layer interfaces? ---Jitendra___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies