source: trunk/target/linux/generic-2.6/patches-2.6.25/511-yaffs_2.6.25_fix.patch @ 11278

Last change on this file since 11278 was 11278, checked in by juhosg, 8 years ago

[kernel] fix yaffs on 2.6.25

File size: 2.6 KB
  • fs/yaffs2/yaffs_fs.c

    old new static int yaffs_statfs(struct super_blo 
    181181#else 
    182182static int yaffs_statfs(struct super_block *sb, struct statfs *buf); 
    183183#endif 
     184 
     185#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) 
     186static struct inode *yaffs_iget(struct super_block *sb, unsigned long ino); 
     187#else 
    184188static void yaffs_read_inode(struct inode *inode); 
     189#endif 
     190 
    185191 
    186192static void yaffs_put_inode(struct inode *inode); 
    187193static void yaffs_delete_inode(struct inode *); 
    static struct file_operations yaffs_dir_ 
    284290 
    285291static struct super_operations yaffs_super_ops = { 
    286292        .statfs = yaffs_statfs, 
     293#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) 
    287294        .read_inode = yaffs_read_inode, 
     295#endif 
    288296        .put_inode = yaffs_put_inode, 
    289297        .put_super = yaffs_put_super, 
    290298        .delete_inode = yaffs_delete_inode, 
    struct inode *yaffs_get_inode(struct sup 
    844852        T(YAFFS_TRACE_OS, 
    845853          (KERN_DEBUG "yaffs_get_inode for object %d\n", obj->objectId)); 
    846854 
     855#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) 
     856        inode = yaffs_iget(sb, obj->objectId); 
     857        if (IS_ERR(inode)) 
     858                return NULL; 
     859#else 
    847860        inode = iget(sb, obj->objectId); 
    848861 
    849862        /* NB Side effect: iget calls back to yaffs_read_inode(). */ 
    850863        /* iget also increments the inode's i_count */ 
    851864        /* NB You can't be holding grossLock or deadlock will happen! */ 
     865#endif 
    852866 
    853867        return inode; 
    854868} 
    static int yaffs_sync_fs(struct super_bl 
    14271441} 
    14281442 
    14291443 
     1444#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) 
     1445static struct inode *yaffs_iget(struct super_block *sb, unsigned long ino) 
     1446{ 
     1447        yaffs_Object *obj; 
     1448        yaffs_Device *dev = yaffs_SuperToDevice(sb); 
     1449        struct inode *inode; 
     1450 
     1451        T(YAFFS_TRACE_OS, 
     1452          (KERN_DEBUG "yaffs_iget for %lu\n", ino)); 
     1453 
     1454        inode = iget_locked(sb, ino); 
     1455        if (!inode) 
     1456                return ERR_PTR(-ENOMEM); 
     1457        if (!(inode->i_state & I_NEW)) 
     1458                return inode; 
     1459 
     1460        /* NB This is called as a side effect of other functions, but 
     1461         * we had to release the lock to prevent deadlocks, so 
     1462         * need to lock again. 
     1463         */ 
     1464 
     1465        yaffs_GrossLock(dev); 
     1466 
     1467        obj = yaffs_FindObjectByNumber(dev, inode->i_ino); 
     1468 
     1469        yaffs_FillInodeFromObject(inode, obj); 
     1470 
     1471        yaffs_GrossUnlock(dev); 
     1472 
     1473        unlock_new_inode(inode); 
     1474        return inode; 
     1475} 
     1476#else 
    14301477static void yaffs_read_inode(struct inode *inode) 
    14311478{ 
    14321479        /* NB This is called as a side effect of other functions, but 
    static void yaffs_read_inode(struct inod 
    14481495 
    14491496        yaffs_GrossUnlock(dev); 
    14501497} 
     1498#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) */ 
    14511499 
    14521500static LIST_HEAD(yaffs_dev_list); 
    14531501 
Note: See TracBrowser for help on using the repository browser.