Skip to contentSkip to conversation

Write file in EXT2

DISCUSSION Sumit Narayan 3 participants 3 messages May 6, 2003

lore
Share & tools
lore
#0 lore raw

Hi,

I would like to create a log file containing the reads and writes made on a disk, by adding a function in the kernel. And once this log table reaches a limit, say 10,000 records, I would like it to be written on hard disk automatically. I am unable to do this, since I dont know how to write to a file, while in the kernel. I tried System Calls, but they dont seem to work. Could someone tell me what is the list of functions that I need to use to do this job. I think I have to play with super-blocks and inodes. But I dont know how to do that. :) Please help me. Thanks.
Sumit

p.s. I am using Kernel 2.4.20 and want this in EXT2 FS

____________________________________________________________
Get advanced SPAM filtering on Webmail or POP Mail ... Get Lycos Mail!
http://login.mail.lycos.com/r/referral?aid=27005

#1 lore raw
Quoted 2 lines · Sumit Narayan

I would like to create a log file containing the reads and writes made on a disk, by adding a function in the kernel. And once this log table reaches a

Have you considered looking at the ext3 file system, which is basically ext2 with a journal?

#2 lore raw
In reply to Sumit Narayan
Quoted 11 lines · Sumit Narayan

Hi,

I would like to create a log file containing the reads and writes made on a disk, by adding a function in the kernel. And once this log table reaches a limit, say 10,000 records, I would like it to be written on hard disk automatically. I am unable to do this, since I dont know how to write to a file, while in the kernel. I tried System Calls, but they dont seem to work. Could someone tell me what is the list of functions that I need to use to do this job. I think I have to play with super-blocks and inodes. But I dont know how to do that. :) Please help me.

Considering how to do that log writing:

Kernel contains several codes that are writing data to disk for various "logging" tasks. Most promimnent example of them is:

kernel/acct.c

It keeps kernel internal file descriptor ("filp") for its internal use. It has code that opens a file for writing to it, actual writer (one smallish block at the time, but that is merely size parameter issue), and it also closes the file when wanted (e.g. under administrator control).

All that completely independent of target filesystem.

Oh, and of course it has management interface, so that sysadmin can tell to it:
- when to activate / deactivate
- into which file to log

In your application there is a danger of snaring
yourself: disk activity must not stop at logging something, when the log buffer is full and flushing it is under way. Otherwise you are in danger of halting the log-flush, and then you have a dead machine.

Quoted 4 lines

Thanks.
Sumit

p.s. I am using Kernel 2.4.20 and want this in EXT2 FS

/Matti Aarnio