typnm_t btype,
xfs_fileoff_t last)
{
+ char *dp;
int ret = 0;
switch (btype) {
}
- if ((!obfuscate && !zero_stale_data) ||
- o >= mp->m_dir_geo->leafblk) {
- ret = write_buf(iocur_top);
- goto out_pop;
- }
+ if (!obfuscate && !zero_stale_data)
+ goto write;
- process_dir_data_block(iocur_top->data, o,
- last == mp->m_dir_geo->fsbcount);
+ dp = iocur_top->data;
+ if (o >= mp->m_dir_geo->freeblk) {
+ /* TODO, zap any stale data */
+ goto write;
+ } else if (o >= mp->m_dir_geo->leafblk) {
+ process_dir_leaf_block(dp);
+ } else {
+ process_dir_data_block(dp, o,
+ last == mp->m_dir_geo->fsbcount);
+ }
iocur_top->need_crc = 1;
+write:
ret = write_buf(iocur_top);
out_pop:
pop_cur();