Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * inode.c
  3  * 
  4  * Copyright (C) 2001 Will Dyson <will_dyson@pobox.com>
  5  */
  6 
  7 #include <linux/fs.h>
  8 
  9 #include "befs.h"
 10 #include "inode.h"
 11 
 12 /*
 13         Validates the correctness of the befs inode
 14         Returns BEFS_OK if the inode should be used, otherwise
 15         returns BEFS_BAD_INODE
 16 */
 17 int
 18 befs_check_inode(struct super_block *sb, befs_inode * raw_inode,
 19                  befs_blocknr_t inode)
 20 {
 21         u32 magic1 = fs32_to_cpu(sb, raw_inode->magic1);
 22         befs_inode_addr ino_num = fsrun_to_cpu(sb, raw_inode->inode_num);
 23         u32 flags = fs32_to_cpu(sb, raw_inode->flags);
 24 
 25         /* check magic header. */
 26         if (magic1 != BEFS_INODE_MAGIC1) {
 27                 befs_error(sb,
 28                            "Inode has a bad magic header - inode = %lu", inode);
 29                 return BEFS_BAD_INODE;
 30         }
 31 
 32         /*
 33          * Sanity check2: inodes store their own block address. Check it.
 34          */
 35         if (inode != iaddr2blockno(sb, &ino_num)) {
 36                 befs_error(sb, "inode blocknr field disagrees with vfs "
 37                            "VFS: %lu, Inode %lu",
 38                            inode, iaddr2blockno(sb, &ino_num));
 39                 return BEFS_BAD_INODE;
 40         }
 41 
 42         /*
 43          * check flag
 44          */
 45 
 46         if (!(flags & BEFS_INODE_IN_USE)) {
 47                 befs_error(sb, "inode is not used - inode = %lu", inode);
 48                 return BEFS_BAD_INODE;
 49         }
 50 
 51         return BEFS_OK;
 52 }
 53 
  This page was automatically generated by the LXR engine.