Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Feb 2017 15:58:30 +0000
From:      Steven Hartland <killing@multiplay.co.uk>
To:        Slawa Olhovchenkov <slw@zxy.spb.ru>, freebsd-fs@freebsd.org
Subject:   Re: ZFS: mkdir: File too large
Message-ID:  <dc16880e-17e6-3eb7-b11c-0170bace688c@multiplay.co.uk>
In-Reply-To: <20170202142455.GB26493@zxy.spb.ru>
References:  <20170202115304.GA26493@zxy.spb.ru> <20170202142455.GB26493@zxy.spb.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
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
Having a cursory look I'm going to guess ->
zfs_freebsd_mkdir
dmu_tx_assign
dmu_tx_try_assign
dmu_tx_count_write
         if (txh->txh_space_towrite + txh->txh_space_tooverwrite >
             2 * DMU_MAX_ACCESS)
                 err = SET_ERROR(EFBIG);

     Regards
     Steve



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?dc16880e-17e6-3eb7-b11c-0170bace688c>