On Mon, Apr 19, 2010 at 12:26 PM, Alfeiks <[email protected]> wrote:

> Hi,
>
> On Sun, Apr 18, 2010 at 10:51:55AM +0530, shivpratap chauhan wrote:
> > I run JariOS with ext2fs debuging on..I did not find log entries in
> serial
> > log for ext2_read, ext2_opendir..etc..
> It's very strange ... I saw the sources and I find ext2_debug entries
> ...
>
yes debug entries are there though those are not appearing in serial logs
strange I also added my own logs which is not appearing as well :(


> > there is only entry for ext2_lookup calls and no more method calls from
> > ext2.c file.
> yep, it will always calls.
>
ext2_lookup method logs are there in serial logs

> >
> > I am wondering how fs layer read files on ext2 fs without making calls
> for
> > ext2_read, ext2_opendir? how did cat command prints content of file
> without
> > making concrete ext2 fs calls for ext2_read? Pls explain.
> It may happen while file you're reading cached node, hmmm, try to do the
> following:
>  - write some text file
>  - try to `cat' it
>
I added some text file size > 4 KB in HD image and later i did cat file_name
I did not find any entries in logs for ext2_read. And for the first time I
dont think so it was cached. But when I try to rum command mkdir..it result
in call to ext2_write and can see logs for this though fs service and JariOs
halts.

> I think u will see the debug output.
> Anyway, please send your full log in attachment please,
>
I'll send u all logs tonight.

> I will try to expect it.
>
> Thanks.
>
Thanks,
Shiv

> >
> >
> > On Wed, Apr 14, 2010 at 11:24 AM, Alfeiks <[email protected]> wrote:
> >
> > > hi, please write to maillist too, it's a good practice,
> > > because many other people may read messages and make a sense
> > > on many stuff ;)
> > > On Tue, Apr 13, 2010 at 10:14:14PM +0530, shivpratap chauhan wrote:
> > > > On Tue, Apr 13, 2010 at 5:13 PM, Alfeiks <[email protected]>
> wrote:
> > > >
> > > > > On Sun, Apr 11, 2010 at 01:05:44PM +0530, shivpratap chauhan wrote:
> > > > > > Hi All,
> > > > > Hi,
> > > > > and hi all, i've back!
> > > > > >
> > > > > > I have few qeries and observations:
> > > > > >
> > > > > > #1:
> > > > > >
> > > > > > I am trying to understand ext2 fs and how it interact with vfs. I
> am
> > > not
> > > > > > able to see any log in serial output for ext2 though i enabled
> > > debugging
> > > > > for
> > > > > > it also i manually tried these changes:
> > > > > it should works without any modifications.
> > > > > you just need to compile kernel with serial debug option.
> > > > >
> > > > Its working now I just forgot to make a new initrd and initially
> mukernel
> > > > uses ext2 from initrd only. Thanks.
> > > mukernel using stuff that loaded by GNU Grub, other things loaded by
> > > the bootstrapper (that works within user space).
> > > Initrd is a varios thing, because while you haven't all the services
> > > to mount real root filesystem you may use initfilesystem that is simple
> > > and doesn't require some additional services/drivers that may depends
> > > on hardware you are running on.
> > > >
> > > > >
> > > > > > --- a/filesystems/regular/ext2/log.h
> > > > > > +++ b/filesystems/regular/ext2/log.h
> > > > > > @@ -7,16 +7,17 @@
> > > > > >  #define EXT2FS_DEBUG
> > > > > >  #endif
> > > > > >
> > > > > > -#ifdef EXT2FS_DEBUG
> > > > > > +#define EXT2FS_DEBUG
> > > > > > +//#ifdef EXT2FS_DEBUG
> > > > > >  #define ext2_debug(f, a...)
> > > > > \
> > > > > >    do {
> > > > >  \
> > > > > >      klog("EXT2-fs DEBUG (%s, %d): %s:",
> > > > > \
> > > > > >           __FILE__, __LINE__, __func__);
> > > > > \
> > > > > >      klog(f"\n", ## a);
> > > > >  \
> > > > > >    } while (0)
> > > > > > -#else
> > > > > > -#define ext2_debug(f, a...) do {} while(0)
> > > > > > -#endif
> > > > > > +//#else
> > > > > > +//#define ext2_debug(f, a...) do {} while(0)
> > > > > > +//#endif
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > #2
> > > > > >
> > > > > > when I did mkdir in root directory jariOS crashes pls see log
> below:
> > > > > Actually jari OS didn't crashed, it's a pf in the ext2.
> > > > > >
> > > > > > [v2] {pp_lookup} point->point-> (0x1096a98)<<END
> > > > > > [EXT2] (creating dir): mkdir error: 2133571369
> > > > > It's a debug output of the ext2, it works.
> > > > > ext2 doesn't support write support now and it will fails
> > > > > on write access always.
> > > > >
> > > > OK
> > > yep, now u may take this file system and finish it with write support,
> > > it's a good task to start, btw it's just an example of existing tasks.
> > > >
> > > > > > ================[USER-SPACE PAGE FAULT #14]================
> > > > > >   [CPU #0] Task: ext2.fs (PID=24, TID=0)
> > > > > >   Error code: 0x6
> > > > > >   Invalid address: 0x545, RIP: 0x10024e3
> > > > > >   [=== General purpose registers dump ===]
> > > > > >   |RAX: 0x0000000000000545 | RBP: 0x0000000000000000 | RSI:
> > > > > > 0x0000000000000000|
> > > > > >   |RDI: 0x000000ffffffd9c0 | RDX: 0x0000000000000000 | RCX:
> > > > > > 0x000000ffffffd748|
> > > > > >   |RBX: 0x0000000001002420 | R15: 0x0000000000000000 | R14:
> > > > > > 0x0000000000000000|
> > > > > >   |R13: 0x0000000001185018 | R12: 0x0000000001185010 | R11:
> > > > > > 0x0000000000000206|
> > > > > >   |R10: 0x0000000000000000 | R9:  0x0000000000000000 | R8:
> > > > > > 0x0000000000000000|
> > > > > >   [=== Interrupt stack frame ===]
> > > > > >    > RIP: 0x00000000010024e3, CS: 0x000000000000001b
> > > > > >    > RSP: 0x000000ffffffdab0, SS: 0x000000000000001b
> > > > > >    > RFLAGS: 0x0000000000000202
> > > > > >   [=== USER STACK DUMP ===]
> > > > > >     [0x000000ffffffdaf0] [0x0000000000000000]
> [0x0000000000000000]
> > > > > >     [0x0000000000000000] [0x00000001000001ed]
> > > > > >
> > > > > >
> > > > > >
> > > > > > #3
> > > > > >
> > > > > > There is a minor issue with makefile for core_servers
> > > > > >
> > > > > > diff --git a/Makefile b/Makefile
> > > > > > index d2e1f4a..2e10461 100644
> > > > > > --- a/Makefile
> > > > > > +++ b/Makefile
> > > > > > @@ -183,7 +183,7 @@ help:
> > > > > >         $(Q)$(MAKE) -f sconfig/Makefile help
> > > > > >         $(Q)echo ''
> > > > > >         $(Q)echo 'Targets:'
> > > > > > -       $(Q)echo '  all [default]       - make all but five
> services
> > > > > shared"
> > > > > > +       $(Q)echo '  all [default]       - make all but five
> services
> > > > > shared'
> > > > > >         $(Q)echo '  static              - make everything as
> static
> > > > > modules'
> > > > > >         $(Q)echo '  shared              - make everything as
> shared
> > > > > modules'
> > > > > >         $(Q)echo ''
> > > > > >
> > > > > >
> > > > > > PS: Can anybody tell me relation in vfs (vfs also tun in
> usersapce? )
> > > and
> > > > > > kernel how they interact
> > > > > VFS layer (vfs/fses/file resources) all is works in user space.
> > > > > u need to know that you have a major components:
> > > > >  - vfsv2 service (that keeps all the information about
> > > > > filedescriptors, mounted filesystems and mount tree itself).
> > > > >  - libv2 is a library that linked to the filesystem and it works
> with
> > > > > vfsv2 proto and libc, also it provide the major filesystem
> > > > > abstractions (vnode for example)
> > > > >
> > > > so vfsv2 and concrete fs communicate using libc and libc uses libv2's
> low
> > > > level funcitons or something else is happening?
> > > not at all, vfsv2 and fs uses microkernel IPC and protocol that
> > > implemented in libv2 and vfsv2 - intercommunication between vfsv2 and
> > > libv2 is not a part of libc, in case of it specifics.
> > > >
> > > >  - libc part (low level and proto part of the fs<->application
> operation)
> > > Here I mean that low level implementation of POSIX calls such as
> > > open(), close(), read(), write() etc ...
> > > Libc contains client side of proto implementation.
> > > > > Also, there are need to keep in mind that actually you have two
> > > > > generic types of the user<->vfs layer interaction:
> > > > >  - indirect
> > > > >  - direct
> > > > > For example, when you need to resolve file name, create file or
> > > > > directory - it will be always indirect operation and it will goes
> > > > > throw vfsv2, vfsv2 will determine which of the mounted fses may
> keeps
> > > this
> > > > > file and redirect that to the concrete fs.
> > > > > Otherwise, while you have filedescriptor (you are connected to the
> fs
> > > > > resource already) and you need to read or write - that will be a
> > > > > direct call to the filesystem that keep that resource.
> > > > >
> > > > So, writing and reading form disk is part of concrete fs and in turn
> it
> > > uses
> > > > libv2 for disk specific operation?
> > > > please clarify.
> > > Well, in Jari OS like in other UNIX-like OSes everything is a file,
> > > and disk might be accessed via /dev file system.
> > > u may use generic POSIX read/write to iteract with block device,
> > > or u may use libv2 specific API intended to be useful for the
> > > disk i/o operations, for those calls checkout the following:
> > >  libs/services/include/vfs/super.h
> > > There are some functions like:
> > > /*
> > >  * initialize block device related data and structure
> > >  * return 0 if ok, -1 and errno on fail.
> > >  */
> > > int super_bdev_init(super_block_t *sb);
> > >
> > > /*
> > >  * write block blk to block device assigned to super block
> > >  * return 0 if ok, -1 and errno on fail.
> > >  */
> > > int super_bdev_write(super_block_t *sb,ulong_t blk,void *sect);
> > >
> > > /*
> > >  * reads block blk to block device assigned to super block
> > >  * return 0 if ok, -1 and errno on fail.
> > >  */
> > > int super_bdev_read(super_block_t *sb,ulong_t blk,void **sect);
> > >
> > > /*
> > >  * read blocks or data (depends on size in bytes given) from
> > >  * block device assigned to the super block
> > >  * return 0 if ok, -1 and errno on fail.
> > >  */
> > > int super_bdev_read_blks(super_block_t *sb,ulong_t blk_start,
> > >                            size_t bytes_read,void **data);
> > >
> > > /*
> > >  * write blocks or data(depends on size in bytes given) to
> > >  * block device assigned to the super block
> > >  * return 0 if ok, -1 and errno on fail.
> > >  */
> > > int super_bdev_write_blks(super_block_t *sb,ulong_t blk_start,
> > >                             size_t bytes_read,void *data);
> > >
> > > But, there API will be changed, and u need to write filesystem in the
> > > API independed way (via some useful wrappers).
> > > Currently I'm working on the fs layer redesign.
> > >
> > > Thanks,
> > > >
> > > >
> > > > > In your case you're trying to create directory - that means that
> first
> > > > > you are going to the vfsv2 service, that determine the concrete
> > > > > filesystem, and redirect it to the ext2 (that going to the PF,
> because
> > > > > many things was not implemented/ported in ext2 specific code).
> > > > > > Thanks,
> > > > > > Shiv
> > > > > Thanks,
> > > > > have a nice day.
> > > > > > _______________________________________________
> > > > > > Jarios-dev mailing list
> > > > > > [email protected]
> > > > > > http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev
> > > > >
> > > > > _______________________________________________
> > > > > Jarios-dev mailing list
> > > > > [email protected]
> > > > > http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev
> > > > >
> > > _______________________________________________
> > > Jarios-dev mailing list
> > > [email protected]
> > > http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev
> > >
> _______________________________________________
> Jarios-dev mailing list
> [email protected]
> http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev
>
_______________________________________________
Jarios-dev mailing list
[email protected]
http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev

Reply via email to