Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-9679 lustre: use LIST_HEAD() for local lists.
[fs/lustre-release.git]
/
lustre
/
osd-zfs
/
osd_handler.c
diff --git
a/lustre/osd-zfs/osd_handler.c
b/lustre/osd-zfs/osd_handler.c
index
b224c59
..
10ef06c
100644
(file)
--- a/
lustre/osd-zfs/osd_handler.c
+++ b/
lustre/osd-zfs/osd_handler.c
@@
-280,13
+280,12
@@
static int osd_trans_stop(const struct lu_env *env, struct dt_device *dt,
struct osd_device *osd = osd_dt_dev(th->th_dev);
bool sync = (th->th_sync != 0);
struct osd_thandle *oh;
struct osd_device *osd = osd_dt_dev(th->th_dev);
bool sync = (th->th_sync != 0);
struct osd_thandle *oh;
-
struct list_head unlinked
;
+
LIST_HEAD(unlinked)
;
uint64_t txg;
int rc;
ENTRY;
oh = container_of0(th, struct osd_thandle, ot_super);
uint64_t txg;
int rc;
ENTRY;
oh = container_of0(th, struct osd_thandle, ot_super);
- INIT_LIST_HEAD(&unlinked);
list_splice_init(&oh->ot_unlinked_list, &unlinked);
osd_oti_get(env)->oti_ins_cache_depth--;
list_splice_init(&oh->ot_unlinked_list, &unlinked);
osd_oti_get(env)->oti_ins_cache_depth--;
@@
-411,8
+410,8
@@
uint64_t osd_objs_count_estimate(uint64_t usedbytes, uint64_t usedobjs,
* gradually disappears as the number of real dnodes grows. It also
* avoids the need to check for divide-by-zero computing dn_per_block.
*/
* gradually disappears as the number of real dnodes grows. It also
* avoids the need to check for divide-by-zero computing dn_per_block.
*/
-
CLASSERT(OSD_DNODE_MIN_BLKSHIFT >
0);
-
CLASSERT(OSD_DNODE_EST_BLKSHIFT >
0);
+
BUILD_BUG_ON(OSD_DNODE_MIN_BLKSHIFT <=
0);
+
BUILD_BUG_ON(OSD_DNODE_EST_BLKSHIFT <=
0);
est_usedblocks = ((OSD_DNODE_EST_COUNT << OSD_DNODE_EST_BLKSHIFT) +
usedbytes) >> est_maxblockshift;
est_usedblocks = ((OSD_DNODE_EST_COUNT << OSD_DNODE_EST_BLKSHIFT) +
usedbytes) >> est_maxblockshift;
@@
-513,7
+512,7
@@
static int osd_objset_statfs(struct osd_device *osd, struct obd_statfs *osfs)
* Reserve 0.78% of total space, at least 16MB for small filesystems,
* for internal files to be created/unlinked when space is tight.
*/
* Reserve 0.78% of total space, at least 16MB for small filesystems,
* for internal files to be created/unlinked when space is tight.
*/
-
CLASSERT(OSD_STATFS_RESERVED_SIZE >
0);
+
BUILD_BUG_ON(OSD_STATFS_RESERVED_SIZE <=
0);
reserved = OSD_STATFS_RESERVED_SIZE >> bshift;
if (likely(osfs->os_blocks >= reserved << OSD_STATFS_RESERVED_SHIFT))
reserved = osfs->os_blocks >> OSD_STATFS_RESERVED_SHIFT;
reserved = OSD_STATFS_RESERVED_SIZE >> bshift;
if (likely(osfs->os_blocks >= reserved << OSD_STATFS_RESERVED_SHIFT))
reserved = osfs->os_blocks >> OSD_STATFS_RESERVED_SHIFT;
@@
-552,18
+551,25
@@
static int osd_objset_statfs(struct osd_device *osd, struct obd_statfs *osfs)
* Concurrency: shouldn't matter.
*/
int osd_statfs(const struct lu_env *env, struct dt_device *d,
* Concurrency: shouldn't matter.
*/
int osd_statfs(const struct lu_env *env, struct dt_device *d,
- struct obd_statfs *osfs)
+ struct obd_statfs *osfs
, struct obd_statfs_info *info
)
{
{
- int rc;
+ struct osd_device *osd = osd_dt_dev(d);
+ int rc;
ENTRY;
ENTRY;
- rc = osd_objset_statfs(osd
_dt_dev(d)
, osfs);
+ rc = osd_objset_statfs(osd, osfs);
if (unlikely(rc != 0))
RETURN(rc);
osfs->os_bavail -= min_t(u64,
OSD_GRANT_FOR_LOCAL_OIDS / osfs->os_bsize,
osfs->os_bavail);
if (unlikely(rc != 0))
RETURN(rc);
osfs->os_bavail -= min_t(u64,
OSD_GRANT_FOR_LOCAL_OIDS / osfs->os_bsize,
osfs->os_bavail);
+
+ /* 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;
+
RETURN(0);
}
RETURN(0);
}
@@
-578,7
+584,7
@@
static int osd_blk_insert_cost(struct osd_device *osd)
/* nr_blkptrshift is the log2 of the number of block pointers that can
* be stored in an indirect block */
/* nr_blkptrshift is the log2 of the number of block pointers that can
* be stored in an indirect block */
-
CLASSERT(DN_MAX_INDBLKSHIFT >
SPA_BLKPTRSHIFT);
+
BUILD_BUG_ON(DN_MAX_INDBLKSHIFT <=
SPA_BLKPTRSHIFT);
nr_blkptrshift = DN_MAX_INDBLKSHIFT - SPA_BLKPTRSHIFT;
/* max_blockshift / nr_blkptrshift is thus the maximum depth of the
nr_blkptrshift = DN_MAX_INDBLKSHIFT - SPA_BLKPTRSHIFT;
/* max_blockshift / nr_blkptrshift is thus the maximum depth of the
@@
-608,7
+614,8
@@
static void osd_conf_get(const struct lu_env *env,
param->ddp_mntopts = MNTOPT_USERXATTR;
if (osd->od_posix_acl)
param->ddp_mntopts |= MNTOPT_ACL;
param->ddp_mntopts = MNTOPT_USERXATTR;
if (osd->od_posix_acl)
param->ddp_mntopts |= MNTOPT_ACL;
- param->ddp_max_ea_size = DXATTR_MAX_ENTRY_SIZE;
+ /* Previously DXATTR_MAX_ENTRY_SIZE */
+ param->ddp_max_ea_size = OBD_MAX_EA_SIZE;
/* for maxbytes, report same value as ZPL */
param->ddp_maxbytes = MAX_LFS_FILESIZE;
/* for maxbytes, report same value as ZPL */
param->ddp_maxbytes = MAX_LFS_FILESIZE;
@@
-904,7
+911,7
@@
static int osd_objset_open(struct osd_device *o)
rc = -osd_dmu_objset_own(o->od_mntdev, DMU_OST_ZFS,
o->od_dt_dev.dd_rdonly ? B_TRUE : B_FALSE,
rc = -osd_dmu_objset_own(o->od_mntdev, DMU_OST_ZFS,
o->od_dt_dev.dd_rdonly ? B_TRUE : B_FALSE,
- B_
FALS
E, o, &o->od_os);
+ B_
TRU
E, o, &o->od_os);
if (rc) {
CERROR("%s: can't open %s\n", o->od_svname, o->od_mntdev);
if (rc) {
CERROR("%s: can't open %s\n", o->od_svname, o->od_mntdev);
@@
-969,7
+976,7
@@
static int osd_objset_open(struct osd_device *o)
out:
if (rc != 0 && o->od_os != NULL) {
out:
if (rc != 0 && o->od_os != NULL) {
- osd_dmu_objset_disown(o->od_os, B_
FALS
E, o);
+ osd_dmu_objset_disown(o->od_os, B_
TRU
E, o);
o->od_os = NULL;
}
o->od_os = NULL;
}
@@
-1202,7
+1209,7
@@
static int osd_mount(const struct lu_env *env,
osd_unlinked_drain(env, o);
err:
if (rc && o->od_os) {
osd_unlinked_drain(env, o);
err:
if (rc && o->od_os) {
- osd_dmu_objset_disown(o->od_os, B_
FALS
E, o);
+ osd_dmu_objset_disown(o->od_os, B_
TRU
E, o);
o->od_os = NULL;
}
o->od_os = NULL;
}
@@
-1249,7
+1256,7
@@
static void osd_umount(const struct lu_env *env, struct osd_device *o)
txg_wait_synced(dmu_objset_pool(o->od_os), 0ULL);
/* close the object set */
txg_wait_synced(dmu_objset_pool(o->od_os), 0ULL);
/* close the object set */
- osd_dmu_objset_disown(o->od_os, B_
FALS
E, o);
+ osd_dmu_objset_disown(o->od_os, B_
TRU
E, o);
o->od_os = NULL;
}
o->od_os = NULL;
}
@@
-1274,6
+1281,11
@@
static int osd_device_init0(const struct lu_env *env,
INIT_LIST_HEAD(&o->od_ios_list);
o->od_auto_scrub_interval = AS_DEFAULT;
INIT_LIST_HEAD(&o->od_ios_list);
o->od_auto_scrub_interval = AS_DEFAULT;
+ /* ZFS does not support reporting nonrotional status yet, so this flag
+ * is only set if explicitly set by the user.
+ */
+ o->od_nonrotational = 0;
+
out:
RETURN(rc);
}
out:
RETURN(rc);
}
@@
-1601,7
+1613,7
@@
static struct lu_device_type osd_device_type = {
};
};
-static struct obd_ops osd_obd_device_ops = {
+static
const
struct obd_ops osd_obd_device_ops = {
.o_owner = THIS_MODULE,
.o_connect = osd_obd_connect,
.o_disconnect = osd_obd_disconnect,
.o_owner = THIS_MODULE,
.o_connect = osd_obd_connect,
.o_disconnect = osd_obd_disconnect,