[samba-jp:19217] Re: SambaのDISK FULLバグ

YAMASAKI Hiroyuki yamasaki.hiroyuki @ sp.qnes.nec.co.jp
2007年 1月 29日 (月) 13:47:50 JST


山崎です。

>Samba 3.0.xで2TB以上のファイルシステムを使う場合。

再現条件としては、
 「smb.confのstrict allocate を yesに変更する(デフォルトはno)」
という条件も必要になったりしないでしょうか?

下記★部分でDISKFULL(ENOSPC)と誤判断するためには、まず下記●部分がstrict allocate
 = yesによってreturnせずに通過する必要があると思うためです。

/****************************************************************************
 An allocate file space call using the vfs interface.
 Allocates space for a file from a filedescriptor.
 Returns 0 on success, -1 on failure.
****************************************************************************/

int vfs_allocate_file_space(files_struct *fsp, SMB_BIG_UINT len)
{
	(中略)
	/* Grow - we need to test if we have enough space. */

	if (!lp_strict_allocate(SNUM(fsp->conn)))●
		return 0;

	len -= st.st_size;
	len /= 1024; /* Len is now number of 1k blocks needed. */
	space_avail = get_dfree_info(conn,fsp->fsp_name,False,&bsize,&dfree,&dsize);
	if (space_avail == (SMB_BIG_UINT)-1) {
		return -1;
	}

	DEBUG(10,("vfs_allocate_file_space: file %s, grow. Current size %.0f, needed blocks = %.0f, space avail = %.0f\n",
			fsp->fsp_name, (double)st.st_size, (double)len, (double)space_avail ));

	if (len > space_avail) {★
		errno = ENOSPC;
		return -1;
	}

	return 0;
}


だとしたら、デフォルト設定のまま運用していたらこの問題は顕在化しないので、
本家sambaの利用者/開発者もこの問題に気づいていないのかもしれません。



samba-jp メーリングリストの案内