{
int err = errno;
if (adflags & ADFLAGS_NOHF) { /* 1 */
- ad->ad_adflags &= ~ADFLAGS_HF;
return 0;
}
if (adflags & ADFLAGS_DF) { /* 2 */
}
/* it's not new anymore */
ad->ad_mdp->adf_flags &= ~( O_TRUNC | O_CREAT );
- ad->ad_mdp->adf_refcount++;
} else {
if (adflags & ADFLAGS_RDWR) {
/* Fo a RDONLY adouble we just use sys_lgetxattr instead if sys_fgetxattr */
opened = 1;
ad->ad_mdp->adf_flags = oflags;
}
- ad->ad_mdp->adf_refcount = 1;
}
/* Read the adouble header in and parse it.*/
LOG(log_debug, logtype_default, "ad_open_hf_ea(\"%s\"): created metadata EA", path);
}
+ ad->ad_mdp->adf_refcount++;
(void)ad_reso_size(path, adflags, ad);
return 0;
LOG(log_debug, logtype_default, "ad_open(\"%s\", %s)",
fullpathname(path), adflags2logstr(adflags));
+ LOG(log_debug, logtype_default,
+ "ad_open(\"%s\", %s) [dfd: %d (ref: %d), mfd: %d (ref: %d), rfd: %d (ref: %d)]",
+ fullpathname(path), adflags2logstr(adflags),
+ ad_data_fileno(ad), ad->ad_data_fork.adf_refcount,
+ ad_meta_fileno(ad), ad->ad_mdp->adf_refcount,
+ ad_reso_fileno(ad), ad->ad_rfp->adf_refcount);
+
if (adflags & ADFLAGS_CHECK_OF)
/* Checking for open forks requires sharemode lock support (ie RDWR instead of RDONLY) */
adflags |= ADFLAGS_SETSHRMD;
adflags |= ADFLAGS_DF;
if (ad->ad_inited != AD_INITED) {
- ad->ad_adflags = (adflags & ~(ADFLAGS_DF | ADFLAGS_HF | ADFLAGS_RF));
+ ad->ad_adflags = adflags;
ad->ad_inited = AD_INITED;
} else {
ad->ad_open_forks = ((ad->ad_data_fork.adf_refcount > 0) ? ATTRBIT_DOPEN : 0);
if (adflags & ADFLAGS_DF) {
EC_ZERO( ad_open_df(path, adflags, mode, ad) );
- ad->ad_adflags |= ADFLAGS_DF;
}
if (adflags & ADFLAGS_HF) {
EC_ZERO( ad_open_hf(path, adflags, mode, ad) );
- ad->ad_adflags |= ADFLAGS_HF;
}
if (adflags & ADFLAGS_RF) {
EC_ZERO( ad_open_rf(path, adflags, mode, ad) );
- ad->ad_adflags |= ADFLAGS_RF;
}
if (adflags & ADFLAGS_CHECK_OF) {
}
EC_CLEANUP:
- LOG(log_debug, logtype_default, "ad_open(\"%s\", %s): result: %d",
- fullpathname(path), adflags2logstr(ad->ad_adflags), ret);
+ LOG(log_debug, logtype_default,
+ "ad_open(\"%s\"): result: %d [dfd: %d (ref: %d), mfd: %d (ref: %d), rfd: %d (ref: %d)]",
+ fullpathname(path), ret,
+ ad_data_fileno(ad), ad->ad_data_fork.adf_refcount,
+ ad_meta_fileno(ad), ad->ad_mdp->adf_refcount,
+ ad_reso_fileno(ad), ad->ad_rfp->adf_refcount);
EC_EXIT;
}