Re: Inode number changing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Sat, Mar 10, 2012 at 12:18 AM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> Sir, every time when I modify file content then file's inode get change.
> Why this is happening?
> Below I have pasted the output please check inode numbers.

Without looking at the code and knowing what you are doing, its close
to impossible to say what inode you are accessing or what you are
doing. On my wildest guess, I can think of that you are probably
trying to modify something in editor, and the inode number that is
getting printed is one of the temp files that the editor may be
creating underneath( similar to .swp files of vi).
 
--
Thanks -
Manish

Yes sir, I am trying to modify my file in vim editor.
below I have pasted my code :
#include <linux/kernel.h>
#include<linux/module.h>
#include<linux/fs.h>
#include<linux/namei.h>
#include<linux/path.h>
#include<linux/mount.h>
#include<linux/myheader.h>
struct ext4_inode1 {
        __le16  i_mode;         /* File mode */
        __le16  i_uid;          /* Low 16 bits of Owner Uid */
        __le32  i_size_lo;      /* Size in bytes */
        __le32  i_atime;        /* Access time */
        __le32  i_ctime;        /* Inode Change time */
        __le32  i_mtime;        /* Modification time */
        __le32  i_dtime;        /* Deletion Time */
        __le16  i_gid;          /* Low 16 bits of Group Id */
        __le16  i_links_count;  /* Links count */
        __le32  i_blocks_lo;    /* Blocks count */
        __le32  i_flags;        /* File flags */
        union {
                struct {
                        __le32  l_i_version;
                } linux1;
                struct {
                        __u32  h_i_translator;
                } hurd1;
                struct {
                        __u32  m_i_reserved1;
                } masix1;
        } osd1;                         /* OS dependent 1 */
        __le32  i_block[EXT4_N_BLOCKS];/* Pointers to blocks */
        __le32  i_generation;   /* File version (for NFS) */
        __le32  i_file_acl_lo;  /* File ACL */
        __le32  i_size_high;
        __le32  i_obso_faddr;   /* Obsoleted fragment address */
union {
                struct {
                        __le16  l_i_blocks_high; /* were l_i_reserved1 */
                        __le16  l_i_file_acl_high;
                        __le16  l_i_uid_high;   /* these 2 fields */
                        __le16  l_i_gid_high;   /* were reserved2[0] */
                        __u32   l_i_reserved2;
                } linux2;
                struct {
                        __le16  h_i_reserved1;  /* Obsoleted fragment number/size which are removed in ext4 */
                        __u16   h_i_mode_high;
                        __u16   h_i_uid_high;
                        __u16   h_i_gid_high;
                        __u32   h_i_author;
                } hurd2;
                struct {
                        __le16  h_i_reserved1;  /* Obsoleted fragment number/size which are removed in ext4 */
                        __le16  m_i_file_acl_high;
                        __u32   m_i_reserved2[2];
                } masix2;
        } osd2;                         /* OS dependent 2 */
        __le16  i_extra_isize;
        __le16  i_pad1;
        __le32  i_ctime_extra;  /* extra Change time      (nsec << 2 | epoch) */
        __le32  i_mtime_extra;  /* extra Modification time(nsec << 2 | epoch) */
        __le32  i_atime_extra;  /* extra Access time      (nsec << 2 | epoch) */
        __le32  i_crtime;       /* File Creation time */
        __le32  i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */
        __le32  i_version_hi;   /* high 32 bits for 64-bit version */
};
typedef struct ext4_inode ext4_inode1;
extern int ext4_get_inode_loc(struct inode *, struct ext4_iloc *);

int init_module(void)
{
 char buf[200]="/mnt/one/a.txt";

         struct nameidata nd;
         struct path path1;
          struct dentry *dentry1;
          struct inode *d_inode1;
          struct ext4_iloc iloc;
          int ret,i;
         struct ext4_inode *e4_inode=NULL;
          ext4_inode1  *m1;
 path_lookup(buf, LOOKUP_CONTINUE, &nd);
       path1=nd.path;
       dentry1=path1.dentry;
       d_inode1=dentry1->d_inode;
       m1 = (ext4_inode1 *) kmalloc (sizeof (ext4_inode1), GFP_KERNEL);
       //m1->i_ino=d_inode1->i_ino;
       printk(KERN_INFO "inode no of file=%ld",d_inode1->i_ino);
ret= ext4_get_inode_loc(d_inode1, &iloc);
       e4_inode= ext4_raw_inode(&iloc);
       m1->i_size_lo=e4_inode->i_size_lo;
       printk(KERN_INFO "size of file =%d",e4_inode->i_size_lo);
       printk(KERN_INFO "size of file copied =%d",m1->i_size_lo);
       printk(KERN_INFO "data blocks=");
       for(i=0;i<5;i++)
       {
            printk(KERN_INFO "%d",e4_inode->i_block[i]);
      }
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}


--
Regards,
Ganesh Patil.

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux