cregit-Linux how code gets into the kernel

Release 4.18 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; udf_pblk_t 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); if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_SET)) inode->i_uid = sbi->s_uid; if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_SET)) inode->i_gid = sbi->s_gid; 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 = current_time(inode); iinfo->i_crtime = timespec64_to_timespec(inode->i_mtime); 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)19835.68%310.34%
Jan Kara16930.45%724.14%
Marcin Ślusarz7814.05%413.79%
Al Viro498.83%310.34%
Christoph Hellwig142.52%13.45%
Eric Sandeen122.16%13.45%
Deepa Dinamani81.44%13.45%
Ben Fennema71.26%26.90%
Steve Nickel61.08%13.45%
Linus Torvalds50.90%26.90%
Dmitriy Monakhov40.72%13.45%
Andi Kleen30.54%13.45%
Pekka J Enberg10.18%13.45%
Steven J. Magnani10.18%13.45%
Total555100.00%29100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)26638.49%39.38%
Jan Kara18626.92%721.88%
Marcin Ślusarz9814.18%412.50%
Al Viro497.09%39.38%
Christoph Hellwig355.07%26.25%
Eric Sandeen121.74%13.12%
Ben Fennema101.45%26.25%
Linus Torvalds81.16%26.25%
Deepa Dinamani81.16%13.12%
Steve Nickel60.87%13.12%
Dmitriy Monakhov40.58%13.12%
Andi Kleen30.43%13.12%
Ingo Molnar20.29%13.12%
Pekka J Enberg20.29%13.12%
Steven J. Magnani10.14%13.12%
Adrian Bunk10.14%13.12%
Total691100.00%32100.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.