The osd_oi_fini will grab osl_seq_list_lock for cleanup.
But this lock is not initilized if osd_mount return and
failed before osd_oi_init.
Signed-off-by: Yang Sheng <yang.sheng@intel.com>
Change-Id: I8f76a87e22d131e6ab9034d8ecc42b47e301ff25
Reviewed-on: http://review.whamcloud.com/20309
Tested-by: Jenkins
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
struct lu_device_type *type,
struct lustre_cfg *cfg)
{
struct lu_device_type *type,
struct lustre_cfg *cfg)
{
- struct osd_device *dev;
- int rc;
+ struct osd_device *dev;
+ struct osd_seq_list *osl;
+ int rc;
OBD_ALLOC_PTR(dev);
if (dev == NULL)
return ERR_PTR(-ENOMEM);
OBD_ALLOC_PTR(dev);
if (dev == NULL)
return ERR_PTR(-ENOMEM);
+ osl = &dev->od_seq_list;
+ INIT_LIST_HEAD(&osl->osl_seq_list);
+ rwlock_init(&osl->osl_seq_list_lock);
+ sema_init(&osl->osl_seq_init_sem, 1);
+
rc = dt_device_init(&dev->od_dt_dev, type);
if (rc == 0) {
rc = osd_device_init0(env, dev, cfg);
rc = dt_device_init(&dev->od_dt_dev, type);
if (rc == 0) {
rc = osd_device_init0(env, dev, cfg);
-static void osd_ost_seq_init(const struct lu_env *env, struct osd_device *osd)
-{
- struct osd_seq_list *osl = &osd->od_seq_list;
-
- INIT_LIST_HEAD(&osl->osl_seq_list);
- rwlock_init(&osl->osl_seq_list_lock);
- sema_init(&osl->osl_seq_init_sem, 1);
-}
-
static void osd_ost_seq_fini(const struct lu_env *env, struct osd_device *osd)
{
struct osd_seq_list *osl = &osd->od_seq_list;
static void osd_ost_seq_fini(const struct lu_env *env, struct osd_device *osd)
{
struct osd_seq_list *osl = &osd->od_seq_list;
- osd_ost_seq_init(env, o);
/* Create on-disk indexes to maintain per-UID/GID inode usage.
* Those new indexes are created in the top-level ZAP outside the
* namespace in order not to confuse ZPL which might interpret those
/* Create on-disk indexes to maintain per-UID/GID inode usage.
* Those new indexes are created in the top-level ZAP outside the
* namespace in order not to confuse ZPL which might interpret those