Whamcloud - gitweb
LU-791 obdfilter: Don't clear OBD_MD_FLFLAGS mistakenly
authorNiu Yawei <niu@whamcloud.com>
Tue, 25 Oct 2011 11:31:11 +0000 (04:31 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 3 Nov 2011 02:57:49 +0000 (22:57 -0400)
Instead of set oa->o_valid to OBD_MD_FLID | OBD_MD_FLGROUP arbitrarily
in filter_handle_precreate(), it should be changed as "|=" to keep
the OBD_MD_FLFLAGS setted in filter_precreate().

Otherwise, client will not be aware of OST is running out of space,
and lov_create() will wait for objects forever in such case.

Signed-off-by: Niu Yawei <niu@whamcloud.com>
Change-Id: I84be8dde59dbb2829cd800e10b7aa6f4402b7e56
Reviewed-on: http://review.whamcloud.com/1589
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
Reviewed-by: hongchao.zhang <hongchao.zhang@whamcloud.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/obdfilter/filter.c

index 6f2b7b9..d1804ab 100644 (file)
@@ -3676,7 +3676,7 @@ static int filter_handle_precreate(struct obd_export *exp, struct obdo *oa,
                 rc = filter_precreate(obd, oa, group, &diff);
                 oa->o_id = filter_last_id(&obd->u.filter, group);
                 oa->o_seq = group;
-                oa->o_valid = OBD_MD_FLID | OBD_MD_FLGROUP;
+                oa->o_valid |= (OBD_MD_FLID | OBD_MD_FLGROUP);
                 GOTO(out, rc);
         }
         /* else diff == 0 */