ZFS: mkdir: File too large
Slawa Olhovchenkov
slw at zxy.spb.ru
Thu Feb 2 14:52:53 UTC 2017
On Thu, Feb 02, 2017 at 02:50:01PM +0000, Steven Hartland wrote:
> On 02/02/2017 14:24, Slawa Olhovchenkov wrote:
> >> Try tracing SET_ERROR for EFBIG with dtrace to determine underlying
> >> cause.
> > 0 37281 none:set-error set-error 27
> > zfs.ko`zfs_freebsd_mkdir+0x3a3
> > kernel`VOP_MKDIR_APV+0x8a
> > kernel`kern_mkdirat+0x1e1
> > kernel`amd64_syscall+0x50e
> > kernel`0xffffffff8079499b
> >
> > (kgdb) x zfs_freebsd_mkdir+0x3a3
> > 0xffffffff81171813 <zfs_freebsd_mkdir+931>: 0xb4b78b45
> > Current language: auto; currently minimal
> > (kgdb) info line *0xffffffff81171813
> > Line 2145 of "/usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c" starts at address 0xffffffff81171813 <zfs_freebsd_mkdir+931> and ends at 0xffffffff8117181a <zfs_freebsd_mkdir+938>.
> >
> > 2138 /*
> > 2139 * Add a new entry to the directory.
> > 2140 */
> > 2141 getnewvnode_reserve(1);
> > 2142 tx = dmu_tx_create(zfsvfs->z_os);
> > 2143 dmu_tx_hold_zap(tx, dzp->z_id, TRUE, dirname);
> > 2144 dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL);
> > 2145 fuid_dirtied = zfsvfs->z_fuid_dirty;
> > 2146 if (fuid_dirtied)
> > 2147 zfs_fuid_txhold(zfsvfs, tx);
> > 2148 if (!zfsvfs->z_use_sa && acl_ids.z_aclp->z_acl_bytes > ZFS_ACE_SPACE) {
> > 2149 dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0,
> > 2150 acl_ids.z_aclp->z_acl_bytes);
> > 2151 }
> >
> > PS: Please, CC me
> What OS ver as those offsets seem odd?
I am try trace every call in zfs_freebsd_mkdir.
This is dmu_tx_assign:
3 29599 dmu_tx_assign:return ret 27
2153 dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes +
2154 ZFS_SA_BASE_ATTR_SIZE);
2155
2156 error = dmu_tx_assign(tx, TXG_WAIT);
2157 if (error) {
2158 zfs_acl_ids_free(&acl_ids);
2159 dmu_tx_abort(tx);
2160 getnewvnode_drop_reserve();
2161 ZFS_EXIT(zfsvfs);
2162 return (error);
2163 }
More information about the freebsd-fs
mailing list