cregit-Linux how code gets into the kernel

Release 4.11 fs/udf/ialloc.c

Directory: fs/udf
/*
 * ialloc.c
 *
 * PURPOSE
 *      Inode allocation handling routines for the OSTA-UDF(tm) filesystem.
 *
 * COPYRIGHT
 *      This file is distributed under the terms of the GNU General Public
 *      License (GPL). Copies of the GPL can be obtained from:
 *              ftp://prep.ai.mit.edu/pub/gnu/GPL
 *      Each contributing author retains all rights to their own work.
 *
 *  (C) 1998-2001 Ben Fennema
 *
 * HISTORY
 *
 *  02/24/99 blf  Created.
 *
 */

#include "udfdecl.h"
#include <linux/fs.h>
#include <linux/sched.h>
#include <linux/slab.h>

#include "udf_i.h"
#include "udf_sb.h"


void udf_free_inode(struct inode *inode) { struct super_block *sb = inode->i_sb; struct udf_sb_info *sbi = UDF_SB(sb); struct logicalVolIntegrityDescImpUse *lvidiu = udf_sb_lvidiu(sb); if (lvidiu) { mutex_lock(&sbi->s_alloc_mutex); if (S_ISDIR(inode->i_mode)) le32_add_cpu(&lvidiu->numDirs, -1); else le32_add_cpu(&lvidiu->numFiles, -1); udf_updated_lvid(sb); mutex_unlock(&sbi->s_alloc_mutex); } udf_free_blocks(sb, NULL, &UDF_I(inode)->i_location, 0, 1); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)5647.86%110.00%
Marcin Ślusarz2017.09%330.00%
Christoph Hellwig1815.38%110.00%
Jan Kara1714.53%220.00%
Linus Torvalds32.56%110.00%
Ingo Molnar21.71%110.00%
Pekka J Enberg10.85%110.00%
Total117100.00%10100.00%


struct inode *udf_new_inode(struct inode *dir, umode_t mode) { struct super_block *sb = dir->i_sb; struct udf_sb_info *sbi = UDF_SB(sb); struct inode *inode; int block; uint32_t start = UDF_I(dir)->i_location.logicalBlockNum; struct udf_inode_info *iinfo; struct udf_inode_info *dinfo = UDF_I(dir); struct logicalVolIntegrityDescImpUse *lvidiu; int err; inode = new_inode(sb); if (!inode) return ERR_PTR(-ENOMEM); iinfo = UDF_I(inode); if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_EXTENDED_FE)) { iinfo->i_efe = 1; if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev) sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE; iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - sizeof(struct extendedFileEntry), GFP_KERNEL); } else { iinfo->i_efe = 0; iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - sizeof(struct fileEntry), GFP_KERNEL); } if (!iinfo->i_ext.i_data) { iput(inode); return ERR_PTR(-ENOMEM); } err = -ENOSPC; block = udf_new_block(dir->i_sb, NULL, dinfo->i_location.partitionReferenceNum, start, &err); if (err) { iput(inode); return ERR_PTR(err); } lvidiu = udf_sb_lvidiu(sb); if (lvidiu) { iinfo->i_unique = lvid_get_unique_id(sb); inode->i_generation = iinfo->i_unique; mutex_lock(&sbi->s_alloc_mutex); if (S_ISDIR(mode)) le32_add_cpu(&lvidiu->numDirs, 1); else le32_add_cpu(&lvidiu->numFiles, 1); udf_updated_lvid(sb); mutex_unlock(&sbi->s_alloc_mutex); } inode_init_owner(inode, dir, mode); iinfo->i_location.logicalBlockNum = block; iinfo->i_location.partitionReferenceNum = dinfo->i_location.partitionReferenceNum; inode->i_ino = udf_get_lb_pblock(sb, &iinfo->i_location, 0); inode->i_blocks = 0; iinfo->i_lenEAttr = 0; iinfo->i_lenAlloc = 0; iinfo->i_use = 0; iinfo->i_checkpoint = 1; if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_AD_IN_ICB)) iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; else if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD)) iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT; else iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; inode->i_mtime = inode->i_atime = inode->i_ctime = iinfo->i_crtime = current_time(inode); if (unlikely(insert_inode_locked(inode) < 0)) { make_bad_inode(inode); iput(inode); return ERR_PTR(-EIO); } mark_inode_dirty(inode); return inode; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)19938.72%311.11%
Jan Kara13526.26%622.22%
Marcin Ślusarz7815.18%414.81%
Al Viro499.53%311.11%
Christoph Hellwig142.72%13.70%
Eric Sandeen122.33%13.70%
Ben Fennema71.36%27.41%
Steve Nickel61.17%13.70%
Linus Torvalds50.97%27.41%
Dmitriy Monakhov40.78%13.70%
Andi Kleen30.58%13.70%
Deepa Dinamani10.19%13.70%
Pekka J Enberg10.19%13.70%
Total514100.00%27100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)26741.08%310.00%
Jan Kara15223.38%620.00%
Marcin Ślusarz9815.08%413.33%
Al Viro497.54%310.00%
Christoph Hellwig355.38%26.67%
Eric Sandeen121.85%13.33%
Ben Fennema101.54%26.67%
Linus Torvalds81.23%26.67%
Steve Nickel60.92%13.33%
Dmitriy Monakhov40.62%13.33%
Andi Kleen30.46%13.33%
Pekka J Enberg20.31%13.33%
Ingo Molnar20.31%13.33%
Adrian Bunk10.15%13.33%
Deepa Dinamani10.15%13.33%
Total650100.00%30100.00%
Directory: fs/udf
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.