\bMIN\(||min_t
mdo2fid||mdd_object_fid
mktemp||mkstemp
+OS_STATE_DEGRADED||OS_STATFS_DEGRADED
+OS_STATE_READONLY||OS_STATFS_READONLY
+OS_STATE_NOPRECREATE||OS_STATFS_NOPRECREATE
+OS_STATE_ENOSPC||OS_STATFS_ENOSPC
+OS_STATE_ENOINO||OS_STATFS_ENOINO
+OS_STATE_SUM||OS_STATFS_SUM
+OS_STATE_NONROT||OS_STATFS_NONROT
page_cache_get||get_page
PAGE_CACHE_MASK||PAGE_MASK
page_cache_release||put_page
obd->obd_name, obd->obd_osfs_age, max_age);
/* ignore cache if aggregated isn't expected */
if (obd->obd_osfs_age < max_age ||
- ((obd->obd_osfs.os_state & OS_STATE_SUM) &&
+ ((obd->obd_osfs.os_state & OS_STATFS_SUM) &&
!(flags & OBD_STATFS_SUM))) {
/* the RPC will block anyway, so avoid sending many at once */
rc = mutex_lock_interruptible(&obd->obd_dev_mutex);
if (rc)
RETURN(rc);
if (obd->obd_osfs_age < max_age ||
- ((obd->obd_osfs.os_state & OS_STATE_SUM) &&
+ ((obd->obd_osfs.os_state & OS_STATFS_SUM) &&
!(flags & OBD_STATFS_SUM))) {
rc = OBP(obd, statfs)(env, exp, osfs, max_age, flags);
} else {
#define LUSTRE_FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_DEVICE_ORDER)
enum obd_statfs_state {
- OS_STATE_DEGRADED = 0x00000001, /**< RAID degraded/rebuilding */
- OS_STATE_READONLY = 0x00000002, /**< filesystem is read-only */
- OS_STATE_NOPRECREATE = 0x00000004, /**< no object precreation */
- OS_STATE_UNUSED1 = 0x00000008, /**< obsolete 1.6, was EROFS=30 */
- OS_STATE_UNUSED2 = 0x00000010, /**< obsolete 1.6, was EROFS=30 */
- OS_STATE_ENOSPC = 0x00000020, /**< not enough free space */
- OS_STATE_ENOINO = 0x00000040, /**< not enough inodes */
- OS_STATE_SUM = 0x00000100, /**< aggregated for all tagrets */
- OS_STATE_NONROT = 0x00000200, /**< non-rotational device */
+ OS_STATFS_DEGRADED = 0x00000001, /**< RAID degraded/rebuilding */
+ OS_STATFS_READONLY = 0x00000002, /**< filesystem is read-only */
+ OS_STATFS_NOPRECREATE = 0x00000004, /**< no object precreation */
+ OS_STATFS_UNUSED1 = 0x00000008, /**< obsolete 1.6, was EROFS=30 */
+ OS_STATFS_UNUSED2 = 0x00000010, /**< obsolete 1.6, was EROFS=30 */
+ OS_STATFS_ENOSPC = 0x00000020, /**< not enough free space */
+ OS_STATFS_ENOINO = 0x00000040, /**< not enough inodes */
+ OS_STATFS_SUM = 0x00000100, /**< aggregated for all tagrets */
+ OS_STATFS_NONROT = 0x00000200, /**< non-rotational device */
};
/** filesystem statistics/attributes for target device */
__u32 os_bsize; /* block size in bytes for os_blocks */
__u32 os_namelen; /* maximum length of filename in bytes*/
__u64 os_maxbytes; /* maximum object size in bytes */
- __u32 os_state; /**< obd_statfs_state OS_STATE_* flag */
+ __u32 os_state; /**< obd_statfs_state OS_STATFS_* */
__u32 os_fprecreated; /* objs available now to the caller */
/* used in QoS code to find preferred
* OSTs */
CDEBUG(D_SUPER, "MDC blocks %llu/%llu objects %llu/%llu\n",
osfs->os_bavail, osfs->os_blocks, osfs->os_ffree, osfs->os_files);
- if (osfs->os_state & OS_STATE_SUM)
+ if (osfs->os_state & OS_STATFS_SUM)
GOTO(out, rc);
rc = obd_statfs(NULL, sbi->ll_dt_exp, &obd_osfs, max_age, flags);
GOTO(out_free_temp, rc);
}
- if (temp->os_state & OS_STATE_SUM ||
+ if (temp->os_state & OS_STATFS_SUM ||
flags == OBD_STATFS_FOR_MDT0) {
/* reset to the last aggregated values
* and don't sum with non-aggrated data */
(int)sfs->os_bsize, (int)ost_sfs.os_bsize);
}
lod_putref(lod, &lod->lod_ost_descs);
- sfs->os_state |= OS_STATE_SUM;
+ sfs->os_state |= OS_STATFS_SUM;
/* If we have _some_ OSTs, but don't have as many free objects on the
* OSTs as inodes on the MDTs, reduce the reported number of inodes
break;
}
- if (sfs->os_state & OS_STATE_ENOSPC ||
- sfs->os_state & OS_STATE_READONLY ||
- sfs->os_state & OS_STATE_DEGRADED) {
+ if (sfs->os_state & OS_STATFS_ENOSPC ||
+ sfs->os_state & OS_STATFS_READONLY ||
+ sfs->os_state & OS_STATFS_DEGRADED) {
CDEBUG(D_LAYOUT, "ost %d is not availble for SEL "
"extension, state %u\n", index, sfs->os_state);
ret = false;
ost = OST_TGT(lod, idx);
if (ost->ltd_statfs.os_state &
- (OS_STATE_READONLY | OS_STATE_ENOSPC | OS_STATE_ENOINO |
- OS_STATE_NOPRECREATE) ||
+ (OS_STATFS_READONLY | OS_STATFS_ENOSPC | OS_STATFS_ENOINO |
+ OS_STATFS_NOPRECREATE) ||
ost->ltd_active == 0) {
CDEBUG(D_LAYOUT, DFID ": mirror %d OST%d unavail, rc = %d\n",
PFID(lod_object_fid(lo)), index, idx, rc);
{
struct obd_statfs *sfs = &tgt->ltd_statfs;
- if (((sfs->os_state & OS_STATE_ENOSPC) ||
- (!ltd->ltd_is_mdt && sfs->os_state & OS_STATE_ENOINO &&
+ if (((sfs->os_state & OS_STATFS_ENOSPC) ||
+ (!ltd->ltd_is_mdt && sfs->os_state & OS_STATFS_ENOINO &&
sfs->os_fprecreated == 0)))
return -ENOSPC;
/* If the OST is readonly then we can't allocate objects there */
- if (sfs->os_state & OS_STATE_READONLY)
+ if (sfs->os_state & OS_STATFS_READONLY)
return -EROFS;
/* object precreation is skipped on the OST with max_create_count=0 */
- if (!ltd->ltd_is_mdt && sfs->os_state & OS_STATE_NOPRECREATE)
+ if (!ltd->ltd_is_mdt && sfs->os_state & OS_STATFS_NOPRECREATE)
return -ENOBUFS;
return 0;
/*
* try to use another OSP if this one is degraded
*/
- if (ost->ltd_statfs.os_state & OS_STATE_DEGRADED && speed < 2) {
+ if (ost->ltd_statfs.os_state & OS_STATFS_DEGRADED && speed < 2) {
QOS_DEBUG("#%d: degraded\n", ost_idx);
RETURN(rc);
}
}
/* try to use another OSP if this one is degraded */
- if (mdt->ltd_statfs.os_state & OS_STATE_DEGRADED &&
+ if (mdt->ltd_statfs.os_state & OS_STATFS_DEGRADED &&
!use_degraded) {
QOS_DEBUG("#%d: degraded\n", mdt_idx);
continue;
continue;
}
- if (ost->ltd_statfs.os_state & OS_STATE_DEGRADED)
+ if (ost->ltd_statfs.os_state & OS_STATFS_DEGRADED)
continue;
/* Fail Check before osc_precreate() is called
if (rc)
continue;
- if (mdt->ltd_statfs.os_state & OS_STATE_DEGRADED)
+ if (mdt->ltd_statfs.os_state & OS_STATFS_DEGRADED)
continue;
mdt->ltd_qos.ltq_usable = 1;
* \see ofd_statfs_hdl() for request handler function.
*
* Report also the state of the OST to the caller in osfs->os_state
- * (OS_STATE_READONLY, OS_STATE_DEGRADED).
+ * (OS_STATFS_READONLY, OS_STATFS_DEGRADED).
*
* \param[in] env execution environment
* \param[in] exp OBD export of OFD device
osfs->os_ffree -= osfs->os_ffree;
}
- /* OS_STATE_READONLY can be set by OSD already */
+ /* OS_STATFS_READONLY can be set by OSD already */
if (ofd->ofd_raid_degraded)
- osfs->os_state |= OS_STATE_DEGRADED;
+ osfs->os_state |= OS_STATFS_DEGRADED;
if (ofd->ofd_no_precreate)
- osfs->os_state |= OS_STATE_NOPRECREATE;
+ osfs->os_state |= OS_STATFS_NOPRECREATE;
if (obd->obd_self_export != exp && !exp_grant_param_supp(exp) &&
tgd->tgd_blockbits > COMPAT_BSIZE_SHIFT) {
if (unlikely(rc))
GOTO(out, rc);
- if (info->fti_u.osfs.os_state & OS_STATE_READONLY)
+ if (info->fti_u.osfs.os_state & OS_STATFS_READONLY)
GOTO(out, rc = -EROFS);
#ifdef USE_HEALTH_CHECK_WRITE
statfs_pack(sfs, ksfs);
if (unlikely(sb->s_flags & SB_RDONLY))
- sfs->os_state |= OS_STATE_READONLY;
+ sfs->os_state |= OS_STATFS_READONLY;
- sfs->os_state |= osd->od_nonrotational ? OS_STATE_NONROT : 0;
+ sfs->os_state |= osd->od_nonrotational ? OS_STATFS_NONROT : 0;
if (ldiskfs_has_feature_extents(sb))
sfs->os_maxbytes = sb->s_maxbytes;
if (!spa_writeable(dmu_objset_spa(os)) ||
osd->od_dev_set_rdonly || osd->od_prop_rdonly)
- osfs->os_state |= OS_STATE_READONLY;
+ osfs->os_state |= OS_STATFS_READONLY;
return 0;
}
/* ZFS does not support reporting nonrotional status yet, so return
* flag only if user has set nonrotational.
*/
- osfs->os_state |= osd->od_nonrotational ? OS_STATE_NONROT : 0;
+ osfs->os_state |= osd->od_nonrotational ? OS_STATFS_NONROT : 0;
RETURN(0);
}
available_mb = (msfs->os_bavail * (msfs->os_bsize >> 10)) >> 10;
if (msfs->os_ffree < reserved_ino_low)
- msfs->os_state |= OS_STATE_ENOINO;
+ msfs->os_state |= OS_STATFS_ENOINO;
else if (msfs->os_ffree <= reserved_ino_high)
- msfs->os_state |= old_state & OS_STATE_ENOINO;
+ msfs->os_state |= old_state & OS_STATFS_ENOINO;
/* else don't clear flags in new msfs->os_state sent from OST */
CDEBUG(D_INFO,
msfs->os_files, msfs->os_ffree, msfs->os_state,
d->opd_pre_status);
if (available_mb < d->opd_reserved_mb_low)
- msfs->os_state |= OS_STATE_ENOSPC;
+ msfs->os_state |= OS_STATFS_ENOSPC;
else if (available_mb <= d->opd_reserved_mb_high)
- msfs->os_state |= old_state & OS_STATE_ENOSPC;
+ msfs->os_state |= old_state & OS_STATFS_ENOSPC;
/* else don't clear flags in new msfs->os_state sent from OST */
- if (msfs->os_state & (OS_STATE_ENOINO | OS_STATE_ENOSPC)) {
+ if (msfs->os_state & (OS_STATFS_ENOINO | OS_STATFS_ENOSPC)) {
d->opd_pre_status = -ENOSPC;
- if (!(old_state & (OS_STATE_ENOINO | OS_STATE_ENOSPC)))
+ if (!(old_state & (OS_STATFS_ENOINO | OS_STATFS_ENOSPC)))
CDEBUG(D_INFO, "%s: full: state=%x: rc = %x\n",
d->opd_obd->obd_name, msfs->os_state,
d->opd_pre_status);
CDEBUG(D_INFO, "uncommitted changes=%u in_progress=%u\n",
atomic_read(&d->opd_sync_changes),
atomic_read(&d->opd_sync_rpcs_in_progress));
- } else if (old_state & (OS_STATE_ENOINO | OS_STATE_ENOSPC)) {
+ } else if (old_state & (OS_STATFS_ENOINO | OS_STATFS_ENOSPC)) {
d->opd_pre_status = 0;
spin_lock(&d->opd_pre_lock);
d->opd_pre_create_slow = 0;
/* Object precreation skipped on OST if manually disabled */
if (d->opd_pre_max_create_count == 0)
- msfs->os_state |= OS_STATE_NOPRECREATE;
+ msfs->os_state |= OS_STATFS_NOPRECREATE;
/* else don't clear flags in new msfs->os_state sent from OST */
/* copy only new statfs state to make it visible to MDS threads */
(long long)(int)offsetof(struct obd_statfs, os_spare9));
LASSERTF((int)sizeof(((struct obd_statfs *)0)->os_spare9) == 4, "found %lld\n",
(long long)(int)sizeof(((struct obd_statfs *)0)->os_spare9));
- LASSERTF(OS_STATE_DEGRADED == 0x00000001UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_DEGRADED);
- LASSERTF(OS_STATE_READONLY == 0x00000002UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_READONLY);
- LASSERTF(OS_STATE_NOPRECREATE == 0x00000004UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_NOPRECREATE);
- LASSERTF(OS_STATE_ENOSPC == 0x00000020UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_ENOSPC);
- LASSERTF(OS_STATE_ENOINO == 0x00000040UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_ENOINO);
- LASSERTF(OS_STATE_SUM == 0x00000100UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_SUM);
- LASSERTF(OS_STATE_NONROT == 0x00000200UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_NONROT);
+ LASSERTF(OS_STATFS_DEGRADED == 0x00000001UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_DEGRADED);
+ LASSERTF(OS_STATFS_READONLY == 0x00000002UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_READONLY);
+ LASSERTF(OS_STATFS_NOPRECREATE == 0x00000004UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_NOPRECREATE);
+ LASSERTF(OS_STATFS_ENOSPC == 0x00000020UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_ENOSPC);
+ LASSERTF(OS_STATFS_ENOINO == 0x00000040UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_ENOINO);
+ LASSERTF(OS_STATFS_SUM == 0x00000100UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_SUM);
+ LASSERTF(OS_STATFS_NONROT == 0x00000200UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_NONROT);
/* Checks for struct obd_ioobj */
LASSERTF((int)sizeof(struct obd_ioobj) == 24, "found %lld\n",
const char osn_name;
bool osn_err;
} oss_names[] = {
- { .osn_state = OS_STATE_DEGRADED, .osn_name = 'D', .osn_err = true },
- { .osn_state = OS_STATE_READONLY, .osn_name = 'R', .osn_err = true },
- { .osn_state = OS_STATE_NOPRECREATE, .osn_name = 'N', .osn_err = true },
- { .osn_state = OS_STATE_UNUSED1, .osn_name = '?', .osn_err = true },
- { .osn_state = OS_STATE_UNUSED2, .osn_name = '?', .osn_err = true },
- { .osn_state = OS_STATE_ENOSPC, .osn_name = 'S', .osn_err = true },
- { .osn_state = OS_STATE_ENOINO, .osn_name = 'I', .osn_err = true },
- { .osn_state = OS_STATE_SUM, .osn_name = 'a', /* aggregate */ },
- { .osn_state = OS_STATE_NONROT, .osn_name = 'f', /* flash */ },
+ { .osn_state = OS_STATFS_DEGRADED, .osn_name = 'D', .osn_err = true },
+ { .osn_state = OS_STATFS_READONLY, .osn_name = 'R', .osn_err = true },
+ { .osn_state = OS_STATFS_NOPRECREATE,.osn_name = 'N', .osn_err = true },
+ { .osn_state = OS_STATFS_UNUSED1, .osn_name = '?', .osn_err = true },
+ { .osn_state = OS_STATFS_UNUSED2, .osn_name = '?', .osn_err = true },
+ { .osn_state = OS_STATFS_ENOSPC, .osn_name = 'S', .osn_err = true },
+ { .osn_state = OS_STATFS_ENOINO, .osn_name = 'I', .osn_err = true },
+ { .osn_state = OS_STATFS_SUM, .osn_name = 'a', /* aggregate */ },
+ { .osn_state = OS_STATFS_NONROT, .osn_name = 'f', /* flash */ },
};
static int showdf(char *mntdir, struct obd_statfs *stat,
CHECK_MEMBER(obd_statfs, os_spare8);
CHECK_MEMBER(obd_statfs, os_spare9);
- CHECK_VALUE_X(OS_STATE_DEGRADED);
- CHECK_VALUE_X(OS_STATE_READONLY);
- CHECK_VALUE_X(OS_STATE_NOPRECREATE);
- CHECK_VALUE_X(OS_STATE_ENOSPC);
- CHECK_VALUE_X(OS_STATE_ENOINO);
- CHECK_VALUE_X(OS_STATE_SUM);
- CHECK_VALUE_X(OS_STATE_NONROT);
+ CHECK_VALUE_X(OS_STATFS_DEGRADED);
+ CHECK_VALUE_X(OS_STATFS_READONLY);
+ CHECK_VALUE_X(OS_STATFS_NOPRECREATE);
+ CHECK_VALUE_X(OS_STATFS_ENOSPC);
+ CHECK_VALUE_X(OS_STATFS_ENOINO);
+ CHECK_VALUE_X(OS_STATFS_SUM);
+ CHECK_VALUE_X(OS_STATFS_NONROT);
}
static void
(long long)(int)offsetof(struct obd_statfs, os_spare9));
LASSERTF((int)sizeof(((struct obd_statfs *)0)->os_spare9) == 4, "found %lld\n",
(long long)(int)sizeof(((struct obd_statfs *)0)->os_spare9));
- LASSERTF(OS_STATE_DEGRADED == 0x00000001UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_DEGRADED);
- LASSERTF(OS_STATE_READONLY == 0x00000002UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_READONLY);
- LASSERTF(OS_STATE_NOPRECREATE == 0x00000004UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_NOPRECREATE);
- LASSERTF(OS_STATE_ENOSPC == 0x00000020UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_ENOSPC);
- LASSERTF(OS_STATE_ENOINO == 0x00000040UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_ENOINO);
- LASSERTF(OS_STATE_SUM == 0x00000100UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_SUM);
- LASSERTF(OS_STATE_NONROT == 0x00000200UL, "found 0x%.8xUL\n",
- (unsigned)OS_STATE_NONROT);
+ LASSERTF(OS_STATFS_DEGRADED == 0x00000001UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_DEGRADED);
+ LASSERTF(OS_STATFS_READONLY == 0x00000002UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_READONLY);
+ LASSERTF(OS_STATFS_NOPRECREATE == 0x00000004UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_NOPRECREATE);
+ LASSERTF(OS_STATFS_ENOSPC == 0x00000020UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_ENOSPC);
+ LASSERTF(OS_STATFS_ENOINO == 0x00000040UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_ENOINO);
+ LASSERTF(OS_STATFS_SUM == 0x00000100UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_SUM);
+ LASSERTF(OS_STATFS_NONROT == 0x00000200UL, "found 0x%.8xUL\n",
+ (unsigned)OS_STATFS_NONROT);
/* Checks for struct obd_ioobj */
LASSERTF((int)sizeof(struct obd_ioobj) == 24, "found %lld\n",