on 06-09-2011 02:07 PM
What versions of Enterprise Vault support Sparse File attributes when creating Placeholders on NetApp CIFS volumes?
The Network Appliance Filer operating system ONTAP version 7.3 introduced the support for setting Sparse File attribute. Additional code change was required for EV to fully support the added feature.
EV 2007 SP6 supports ONTAP 7.3 however still uses the legacy method when setting PH size via API calls with ONTAPI function ‘file-truncate-file’. This allows EV 2007 to continue supporting PH with ONTAP 7.3
Full support to the actual Sparse File feature was introduced in EV 8.0 which determines the filer version during Archiving and activates the Sparse File processing method once ONTAP 7.3 is detected.
To illustrate the different processing logic two sections are presented below with samples of Dtrace output and relevant comments.
Section 1 - EV 2007 legacy PH processing with API call file-truncate-file
Start reading setting on whether or not PH should be created:
{FileServer.Load} uncName from DB = \\Virposix, constructed = \\virposix.v4325rdg.gpk
{FileServer.FetchNetappPHRegistryOption} Original file size will be set for Netapp placeholders.
CNetAppPHHelper::CNetAppPHHelper - Initializing ONTAP API
CNetAppPHHelper::InitializeNetAppServer
{FileSystemTaskInfo.GetFileServer} File Server DNS Name:virposix.v4325rdg.gpk
Start Archiving Task against filer target:
|Event ID: 40985 Starting to process the file system volume: virstrg.
Item Processor – item from queue:
{FileSystemItemProcessor.ArchiveFile} The file: \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt has never been archived
Storing item into Vault:
{FileSystemItemProcessor.StoreItem} Storing file \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
{Saveset.Load} Name:EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt Urn:urn:kvsplc-com:evsite:ArchiveFolder:(B05F76D1C25EB144B4AC44BDB4B2EAA0):ItemId:EV_FILESYSTEM_ARCHIVE_REPORT_FILESYSTEMARCHIVINGTASK_20070828180013.txt(DBEA4D4185E24303B6993D36503ACD60)
Tidying up – resetting time stamps following I/O:
{_File.ResetLastAccessedDate} Resetting the last accessed date for the file: \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
Post-Processing:
{FileSystemItemProcessor.ArchiveFile} The file: \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt is archived and secured as its vault store backup flag = Immediately After Archive
{FileSystemItemProcessor.PostProcessItem} Post Processing the file \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
Setting PH size using API call:
CNetAppPHHelper::SetFileSizeOfPlaceholder - Set file size of placeholder \\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
NOTE – DLL implemented for additional dtrace output:
Local Path after resolving from UNC: /vol/posix_vol/07OCT08/ReportsAP/EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
About to call file-truncate-file with: /vol/posix_vol/07OCT08/ReportsAP/EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
Tidying up (again) – resetting time stamps following I/O:
{_File.ResetDates} Resetting the last accessed date for the file: \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt
Validation check against PH created:
{FileSystemItemProcessor.PostProcessItem} Placeholder validation passed for \\?\UNC\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\EV_FILESYSTEM_ARCHIVE_REPORT_FILE SYSTEM ARCHIVING TASK_20070828180013.txt.
NOTE: - At PostProcessing if the API call cannot set the PH size it results in error when calling the ONTAPI function:
CNetAppPHHelper::SetFileSizeOfPlaceholder - Set file size of placeholder \\virposix.v4325rdg.gpk\virstrg\07OCT08\ReportsAP\Résultats\E56003.184.doc
CNetAppPHHelper::SetFileSizeOfPlaceholder - file-truncate-file 2: Unable to open /vol/vol0/virstrg/07OCT08/ReportsAP/RésultatsAnalyses/E56003.184.doc: No such file or directory
Section 2 - EV 8.0.x method using Sparse File attribute:
Start reading setting on whether or not PH should be created:
{FileServer.Load} uncName from DB = \\Vfiler73, constructed = \\Vfiler73.rb4325.gpk
(EvFsaArchivingTask) <9696>EV-M {FileServer.FetchNetappPHRegistryOption} Original file size will be set for Netapp placeholders.
Check Filer version:
EVPHCommon::GetFilerVersion
filerVersionStrShort = NetApp Release 7.3, filerVersionStrLong = NetApp Release 7.3: Thu Jul 24 12:55:28 PDT 2008, filerversion=7.300000
CTraceSink::FormatAndTrace format exception Format:%s: Filer %s has ONTAP version %d which supports sparse file attribute. So ONTAP API initialization is not performed
Start Archiving Task against filer target:
|Event ID: 40983 Starting to process task: Vfiler73_UNICODE_PHSize FSA Task.
Item Processor – item from queue:
{FileSystemItemProcessor.ArchiveFile} The file: \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm has never been archived
{FileSystemItemProcessor.StoreItem} Storing file \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
Storing item into Vault:
{StoreAccessor.InsertItem} Item: urn:kvsplc-com:64bit:ArchiveFolder:(0953CFE0AB17FF409E79045C932A9E9E):ItemId:ReadMeFirst.htm(70375AD43C6C352BC2DB1B06A0C27471) Seq No.:1 SSID:200902040000000~200812171208460000~Z~70375AD43C6C352BC2DB1B06A0C27471
Tidying up – resetting time stamps following I/O:
{_File.ResetLastAccessedDate} Resetting the last accessed date for the file: \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
Post-Processing:
{FileSystemItemProcessor.PostProcessItem} Post Processing the file \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
{FileSystemItemProcessor.PostProcessItem} volume.VaultStoreBackupFlag: Immediately, matchedRule.ShortcutOption: CREATESHORTCUTSIMMEDIATELY, ItemState: NOTARCHIVED
{FileSystemItemProcessor.PostProcessItem} Action:CREATESHORTCUTNOW Archive status: Archived, Shortcut status: ShortcutCreated, Filename:\\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
{FileSystemItemProcessor.PostProcessItem} Post Processing, the file \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm will be made as Placeholder
Setting PH size using Sparse File attribute:
CNetAppPHHelper::SetFileSizeOfPlaceholder - Set file size of placeholder \\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
CNetAppPHHelper::SetFileSizeUsingSparseAttribute: Filename:\\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm| FileSize in Bytes:66633
CNetAppPHHelper::SetFileSizeUsingSparseAttribute: Successuflly set sparse attribute on file \\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
Tidying up (again) – resetting time stamps following I/O:
{_File.ResetDates} Resetting the last accessed date for the file: \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm
Validation check against PH created:
{FileSystemItemProcessor.PostProcessItem} Placeholder validation passed for \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm.
Output to Report log:
{FileSystemItemProcessor.PostProcessItem} Writing the Report for :\\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm, Archive status: Archived, Shortcut status: ShortcutCreated
Updating the Check-Point control file:
{FileSystemArchivingCheckPoint.AddFileToFolderWorkItemsPartiallyProcessedList} In folder \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ, marking file \\?\UNC\Vfiler73.rb4325.gpk\73strg\dtraceAP\ÅöôÆò_ÑÄÅ\ReadMeFirst.htm as processed