函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\quota\dquot.c Create Date:2022-07-29 11:08:47
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__dquot_initialize

函数原型:static int __dquot_initialize(struct inode *inode, int type)

返回类型:int

参数:

类型参数名称
struct inode *inode
inttype
1431  init_needed等于0
1432  struct dquot * * dquots, * got[3] = {}
1433  sb等于i_sb
1435  ret等于0
1437  如果非dquot_active(inode)则返回:0
1440  dquots等于i_dquot(inode)
1443 cnt小于MAXQUOTAS循环
1449  如果type不等于负1且cnt不等于type则继续下一循环
1456  如果dquots[cnt]则继续下一循环
1459  如果非sb_has_quota_active(sb, cnt)则继续下一循环
1462  init_needed等于1
1466  qid等于转换kuid到kqid
1467  退出
1469  qid等于转换kgid到kqid
1470  退出
1472  rc等于get_projid(inode, & projid)
1473  如果rc则继续下一循环
1475  qid等于转换projid到kqid
1476  退出
1478  dquot等于Get reference to dquot* Locking is slightly tricky here. We are guarded from parallel quotaoff()* destroying our dquot by:* a) checking for quota flags under dq_list_lock and* b) getting a reference to dquot before we release dq_list_lock
1479  如果是错误
1481  如果错误不等于负ESRCH
1482  ret等于错误
1483  转到:out_put
1485  dquot = NULL
1487  got[cnt]等于dquot
1491  如果非init_needed则返回:0
1494  加自旋锁
1495  如果IS_NOQUOTA(inode)则转到:out_lock
1497 cnt小于MAXQUOTAS循环
1498  如果type不等于负1且cnt不等于type则继续下一循环
1501  如果非sb_has_quota_active(sb, cnt)则继续下一循环
1504  如果非got[cnt]则继续下一循环
1506  如果非dquots[cnt]则
1507  dquots[cnt]等于got[cnt]
1508  got[cnt] = NULL
1525  out_lock :
1526  自旋锁解锁
1527  out_put :
1529  dqput_all(got)
1531  返回:ret
调用者
名称描述
add_dquot_refThis routine is guarded by s_umount semaphore
dquot_initialize