Пример #1
0
static int make_empty_dir(struct inode *inode,
		struct inode *parent, struct page *page)
{
	struct page *dentry_page;
	struct f2fs_dentry_block *dentry_blk;
	struct f2fs_dentry_ptr d;

	if (f2fs_has_inline_dentry(inode))
		return make_empty_inline_dir(inode, parent, page);

	dentry_page = get_new_data_page(inode, page, 0, true);
	if (IS_ERR(dentry_page))
		return PTR_ERR(dentry_page);

	dentry_blk = kmap_atomic(dentry_page);

	make_dentry_ptr(&d, (void *)dentry_blk, 1);
	do_make_empty_dir(inode, parent, &d);

	kunmap_atomic(dentry_blk);

	set_page_dirty(dentry_page);
	f2fs_put_page(dentry_page, 1);
	return 0;
}
Пример #2
0
int make_empty_inline_dir(struct inode *inode, struct inode *parent,
							struct page *ipage)
{
	struct f2fs_inline_dentry *inline_dentry;
	struct f2fs_dentry_ptr d;

	inline_dentry = inline_data_addr(ipage);

	make_dentry_ptr_inline(NULL, &d, inline_dentry);
	do_make_empty_dir(inode, parent, &d);

	set_page_dirty(ipage);

	/* update i_size to MAX_INLINE_DATA */
	if (i_size_read(inode) < MAX_INLINE_DATA)
		f2fs_i_size_write(inode, MAX_INLINE_DATA);
	return 0;
}
Пример #3
0
int make_empty_inline_dir(struct inode *inode, struct inode *parent,
                          struct page *ipage)
{
    struct f2fs_inline_dentry *dentry_blk;
    struct f2fs_dentry_ptr d;

    dentry_blk = inline_data_addr(ipage);

    make_dentry_ptr(NULL, &d, (void *)dentry_blk, 2);
    do_make_empty_dir(inode, parent, &d);

    set_page_dirty(ipage);

    /* update i_size to MAX_INLINE_DATA */
    if (i_size_read(inode) < MAX_INLINE_DATA) {
        i_size_write(inode, MAX_INLINE_DATA);
        set_inode_flag(F2FS_I(inode), FI_UPDATE_DIR);
    }
    return 0;
}