#0 __ext4_new_inode (handle=0x0 <irq_stack_union>, dir=0xffff880006478508, mode=33206, qstr=0xffff8800064829e0, goal=105350408, owner=0x81b6 <exception_stacks+16822>, handle_type=4, line_no=2472, nblocks=35)
at fs/ext4/ialloc.c:750
#1 0xffffffff811fbc03 in ext4_create (dir=0xffff880006478508, dentry=0xffff880006478508, mode=33206, excl=224) at fs/ext4/namei.c:2471
#2 0xffffffff81183880 in lookup_open (opened=<optimized out>, got_write=<optimized out>, op=<optimized out>, file=<optimized out>, path=<optimized out>, nd=<optimized out>) at fs/namei.c:3152
#3 do_last (opened=<optimized out>, op=<optimized out>, file=<optimized out>, nd=<optimized out>) at fs/namei.c:3243
#4 path_openat (nd=0xffffc900018f7de8, op=0xffffc900018f7efc, flags=33206) at fs/namei.c:3454
#5 0xffffffff81183f39 in do_filp_open (dfd=0, pathname=0xffff880006478508, op=0xffffc900018f7efc) at fs/namei.c:3489
#6 0xffffffff811737fb in do_sys_open (dfd=-100, filename=0xffff880006478508 "\355A\v", flags=32834, mode=10720) at fs/open.c:1053
#7 0xffffffff811738b0 in SYSC_open (mode=<optimized out>, flags=<optimized out>, filename=<optimized out>) at fs/open.c:1071
#8 SyS_open (filename=0, flags=-131941289982712, mode=33206) at fs/open.c:1066
inode的ops赋值在ext4_create函数中
static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode,
bool excl)
{
handle_t *handle;
struct inode *inode;
int err, credits, retries = 0;
err = dquot_initialize(dir);
if (err)
return err;
credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3);
retry:
inode = ext4_new_inode_start_handle(dir, mode, &dentry->d_name, 0,
NULL, EXT4_HT_DIR, credits);
handle = ext4_journal_current_handle();
err = PTR_ERR(inode);
if (!IS_ERR(inode)) {
inode->i_op = &ext4_file_inode_operations;
inode->i_fop = &ext4_file_operations;
ext4_set_aops(inode);
err = ext4_add_nondir(handle, dentry, inode);
if (!err && IS_DIRSYNC(dir))
ext4_handle_sync(handle);
}
if (handle)
ext4_journal_stop(handle);
if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries))
goto retry;
return err;
}